阻止通话和linux调度程序

时间:2011-11-23 08:39:19

标签: sockets networking io blocking

当调度程序在同步(阻塞)模式下等待select(),poll()或其他套接字操作时,Linux调度程序的控制权是否会流向另一个进程?进程在等待时的状态是什么?究竟是怎么被唤醒的?

有一个版本,该进程处于“休眠”状态,它被WCHAN内核唤醒唤醒,是的,操作系统将安排其他进程运行,而其中一个进程被阻止。这个变种是正确的吗?你知道我应该/我能读到这些东西吗?

1 个答案:

答案 0 :(得分:1)

是的。通常当进程执行系统调用时,它会自动调用schedule并等待内存中的页面(将在I / O中读取)。在I / O完成处理程序中,它释放此页面上的锁定,从等待队列中删除等待进程并将它们放回到可以继续执行的运行队列中。如果您愿意阅读它,我认为操作系统书应该涵盖它,但我只看一下代码:)