进程切换
•进程切换指从正在运行的进程中收回处理器,让待运行进程来占有处理器运行
•进程切换实质上就是被中断运行进程与待运行进程的上下文切换,处理过程是:
•保存被中断进程的上下文
•转向进程调度
•恢复待运行进程的上下文
模式切换
•进程切换必须在操作系统内核模式下完成,这就需要模式切换
•模式切换又称处理器状态切换,包括:
•用户模式到内核模式由中断/异常/系统调用中断用户进程执行而触发
•内核模式到用户模式由OS执行中断返回指令将控制权交还用户进程而触发
模式切换的基本工作任务
•中断装置完成正向模式切换,包括:
•处理器模式转为内核模式
•保存当前进程的PC/PSW值到核心栈
•转向中断/异常/系统调用处理程序
•中断返回指令完成逆向模式转换,包括:
•从待运行进程核心栈中弹出PSW/PC值
•处理器模式转为用户模式
进程切换的工作过程
1. (中断/异常等触发)正向模式切换并压入PSW/PC
2. 保存被中断进程的现场信息
3. 处理具体中断/异常
4. 把被中断进程的系统堆栈指针SP值保存到PCB
5. 调整被中断进程的PCB信息,如进程状态
6. 把被中断进程的PCB加入相关队列
7. 选择下一个占用CPU运行的进程
8. 修改被选中进程的PCB信息,如进程状态
9. 设置被选中进程的地址空间,恢复存储管理信息
10.恢复被选中进程的SP值到处理器寄存器SP
11.恢复被选中进程的现场信息进入处理器
12.(中断返回指令触发)逆向模式转换并弹出PSW/PC
进程切换的发生时机
•进程切换一定发生在中断/异常/系统调用处理过程中,常见的情况是:
•阻塞式系统调用、虚拟地址异常导致被中断进程进入等待态
•时间片中断、I/O中断后发现更高优先级进程 导致被中断进程转入就绪态
•终止用系统调用、不能继续执行的异常导致被中断进程进入终止态
进程切换与模式切换
•一些中断/异常不会引起进程状态转换,不会引起进程切换,只是在处理完成后把控制权交回给被中断进程,处理流程是:
•(中断/异常触发)正向模式切换压入PSW/PC
•保存被中断进程的现场信息
•处理中断/异常
•恢复被中断进程的现场信息
•(中断返回指令触发)逆向模式转换弹出 PSW/PC