最近复习操作系统关于进程切换的一些记录。
一、进程切换
进程切换指从正在运行的进程中收回处理器,让待运行进程来占有处理器运行。
实质上就是被中断运行进程与待运行进程的上下文切换。
二、模式切换
进程切换必须在操作系统内核模式下完成,这就需要模式切换。
模式切换又称处理器切换,即用户模式和内核模式的互相切换。
三、进程切换的工作过程
1、(中断/异常等触发)正向模式切换并压入PSW/PC 。 (Program Status Word 程序状态字。program counter 程序计数器。指向下一条要执行的指令)
2、保存被中断进程的现场信息。
3、处理具体中断、异常。
4、把被中断进程的系统堆栈指针SP值保存到PCB。(Stack Pointer 栈指针。Process Control Block 进程控制块。)
5、调整被中断进程的PCB信息,如进程状态)。
6、把被中断进程的PCB加入相关队列。
7、选择下一个占用CPU运行的进程。
8、修改被选中进程的PCB信息,如进程状态。
9、设置被选中进程的地址空间,恢复存储管理信息。
10、恢复被选中进程的SP值到处理器寄存器SP。
11、恢复被选中进程的现场信息进入处理器。
12、(中断返回指令触发)逆向模式转换并弹出PSW/PC。
四、那么进程切换何时发生呢?
进程切换一定发生在中断/异常/系统调用处理过程中,常见的有以下情况:
1、阻塞式系统调用、虚拟地址异常。
导致被中断进程进入等待态。
2、时间片中断、I/O中断后发现更改优先级进程。
导致被中断进程进入就绪态。
3、终止用系统调用、不能继续执行的异常。
导致被中断进程进入终止态。
五、但是并不意味着所有的中断/异常都会引起进程切换。
有一些中断/异常不会引起进程状态转换,不会引起进程切换,只是在处理完成后把控制权交还给被中断进程。
以下是处理流程:
1、(中断/异常等触发)正向模式切换并压入PSW/PC 。
2、保存被中断进程的现场信息。
3、处理具体中断、异常。
4、恢复被中断进程的现场信息。
5、(中断返回指令触发)逆向模式转换并弹出PSW/PC。
可以分析以上两种流程发现,前三步是一样的,也就是说操作系统要处理中断,并不一定会引发进程切换,有些中断处理完了之后,立即会恢复继续原进程的处理。
————————————————
版权声明:本文为CSDN博主「shadow2512」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/shadow2512/article/details/73611805
2021-06-19
最新推荐文章于 2024-08-21 10:19:27 发布