【发布时间】:2012-04-15 00:19:54
【问题描述】:
你能告诉我Unix进程图中的两个红色箭头有什么区别吗? 为什么抢占进程直接进入用户运行而不重新调度?我不太明白。为什么 Preempted 和 Ready to Run In Memery 用虚线连接? 提前致谢。
【问题讨论】:
-
我认为这不是题外话。在 Unix > 测试之前学习时,我想到了这个问题。
你能告诉我Unix进程图中的两个红色箭头有什么区别吗? 为什么抢占进程直接进入用户运行而不重新调度?我不太明白。为什么 Preempted 和 Ready to Run In Memery 用虚线连接? 提前致谢。
【问题讨论】:
一个被抢占的进程准备好在内存中运行,这就是为什么在这张图上的 Preempted 和 Ready to Run in Memory 状态之间有一条虚线。 CPU 密集型进程通常会在整个时间片内完成工作并使用 CPU,直到在硬件级别触发计时器滴答并导致内核抢占该进程。这并没有使进程准备好运行,因为在抢占进程的行为中,内核保存了上下文切换所需的所有数据结构。
但是,抢占进程不一定准备好在用户模式下运行。相反,内核可能会抢占自己,因为当网络数据包到达、磁盘读取完成、计时器滴答声触发或其他一些事件导致抢占时,内核正在做一些工作。如果进程在被抢占时最初在用户模式下运行(我在第一段中描述的情况),那么只要调度程序决定它应该再次运行,它就会返回到用户模式。那是最左边的红色箭头。另一方面,如果进程在内核模式下运行时被抢占,则只要调度程序决定它应该再次运行,它就会返回内核模式。那是另一个红色箭头。
【讨论】:
恕我直言,该图是伪造的。僵尸进程应该结束,但没有。否则僵尸进程会累积而不会累积。
【讨论】: