2.4.3进程切换
中断
- 普通中断
- timeout:进程时间片耗尽
- I/O中断:I/O就绪,OS决定该唤醒哪个进程
- 内存失效(缺页):阻塞当前进程
- 陷阱(自陷)
- 进程错误或异常
进程切换原因
- 普通中断:对外部事件的反应
- 陷阱:处理异常
- 系统调用:调用内核程序
中断过程
save context(P1)–>renew pcb(P1)–>move pcb(P1) in queue–>change process(P1->P2)–>renew pcb(P2)–>renew storage、data structure–>reload context(P1)
注意:中断不一定导致进程切换
- 一个例子:I/O中断后,系统决定仍由先前进程继续执行(比如因为该进程priority更高)
模式切换
用户模式<==>内核模式
原因
- 系统调用:调用内核服务
- 中断:调用中断处理程序
模式切换与进程切换
模式切换不一定导致进程切换,要进程切换一定要模式切换