3 unix linux cpu multithreading process
我在网上准备面试时看到这个问题:
给定一个非抢占式内核,哪种类型的进程在性能方面会受到更大的影响,为什么?
I/O 限制
CPU 限制
我知道 CPU 密集型进程会获得长量子,但优先级较低,而 I/O 密集型进程会获得高优先级的短量子。
起初,我认为 I/O 绑定会受到更多影响,因为它必须等待从磁盘读取完成(而不仅仅是要求操作系统在准备好时唤醒它)。但我认为这是错误的,因为即使在非抢占式内核中,进程也可以自行决定完成其工作并让另一个进程工作。
我正在寻找详细的答案,以深入了解我在这里缺少的内容。
我认为这是一个棘手的问题。抢占式和非抢占式内核之间的区别在于处于内核模式的线程的调度方式。(参见非抢占式、抢占式和选择性抢占式内核有什么区别?)
这对于 CPU 密集型线程没有影响,因为这样的线程将始终在用户模式下执行。
它对于(普通)I/O 绑定线程也没有什么区别。虽然线程在 I/O 上阻塞时将处于内核模式,但在等待物理 I/O 事件发生时内核线程将取消调度。
然而,它确实对执行 I/O 的实时线程产生影响。如果实时(高优先级)线程正在等待 I/O 事件并且该事件发生,您希望抢占当前内核线程(如果有),以便高优先级内核线程可以接管。抢占式内核允许这样做。非抢占式线程则不会,并且高优先级线程会一直等待,直到低优先级线程完成当前正在执行的操作。
它还可能对不同类型的 I/O 的(有效)优先级排序产生影响;例如,I/O 的“软实时”特性。
(显然……出于线程安全的原因,Linux 内核一次只允许一个内核线程处于活动状态。)
在您的问题中,您正在猜测用户模式抢占。AFAIK,这是一个正交的内核模式抢占,以及抢占/非抢占内核。
归档时间: |
|
查看次数: |
330 次 |
最近记录: |