当前位置: 技术问答>linux和unix
处理器状态
来源: 互联网 发布时间:2016-08-09
本文导语: 处理器总处于以下状态中的一种: 1、内核态,运行于进程上下文,内核代表进程运行于内核空间; 2、内核态,运行于中断上下文,内核代表硬件运行于内核空间; 3、用户态,运行于用户空间 在内核态里,要...
处理器总处于以下状态中的一种:
1、内核态,运行于进程上下文,内核代表进程运行于内核空间;
2、内核态,运行于中断上下文,内核代表硬件运行于内核空间;
3、用户态,运行于用户空间
在内核态里,要么是进程上下文,要么是中断上下文,那么内核本身不运行么?
比如内核要调度进程的时候,不就得运行内核自身么?
1、内核态,运行于进程上下文,内核代表进程运行于内核空间;
2、内核态,运行于中断上下文,内核代表硬件运行于内核空间;
3、用户态,运行于用户空间
在内核态里,要么是进程上下文,要么是中断上下文,那么内核本身不运行么?
比如内核要调度进程的时候,不就得运行内核自身么?
|
内核执行调度有2种情况
1、进程主动放弃cpu,执行调度 schedule()
如果仅仅靠这种方式,进程就可能永远占用cpu
2、所以,增加了一个标志位need_reschedule ,每当一个进程耗尽自己的时间片(系统时钟中断里计算)
就会置need_reschedule
每当进程返回用户空间时,或者从中断返回时,内核检查这个标志决定是否进行调度
内核仅仅是提供服务机制,本身不会像进程那样执行
1、进程主动放弃cpu,执行调度 schedule()
如果仅仅靠这种方式,进程就可能永远占用cpu
2、所以,增加了一个标志位need_reschedule ,每当一个进程耗尽自己的时间片(系统时钟中断里计算)
就会置need_reschedule
每当进程返回用户空间时,或者从中断返回时,内核检查这个标志决定是否进行调度
内核仅仅是提供服务机制,本身不会像进程那样执行