日期:2014-05-16  浏览次数:20581 次

发一个关于UNIX进程的帖子
最近阅读《UNIX操作系统设计》。这本书中说到,进程在核心态下执行的时候是不允许做进程调度的。

我的问题是,当进程在用户态执行了一段时间,然后发出系统调用进入了核心态,然后在核心态执行的时候进程分配的时间片用完了。那这个时候也不会进行进程调度么?如果是这样,那是否可能存在这样的情况,由于某项系统调用需要较长时间来处理,会使得一个进程一直在核心态运行,从而导致其它进程无法运行?进程在核心态运行的时候,是否算到进程已经运行的时间之中?
------解决方案--------------------
在核心态时间片用完后,应该会有个中断信号,然后保护这个进程的周边情况(变量,代码,寄存器信息等等),然后根据OS进程调度的方法,从进程等待(wait)队列选取下一个将要执行的进程,将cpu分配给它。
------解决方案--------------------
引用:
在核心态时间片用完后,应该会有个中断信号,然后保护这个进程的周边情况(变量,代码,寄存器信息等等),然后根据OS进程调度的方法,从进程等待(wait)队列选取下一个将要执行的进程,将cpu分配给它。

我觉得应该会有一个核心态时间片!