进程切换与模式切换

1 模式切换

模式切换的概念

  • 进程执行过程中,由于内中断(包括系统调用和异常)引发的时间处理程序,从用户模式切换到内核模式。不需要进程的切换。
  • 内核模式处理完成后,返回用户模式下中断处,继续执行任务。

模式切换的类别

  1. 进程切换必须在操作系统内核模式下完成,这就需要模式切换
    1. 用户模式到内核模式:由中断/异常/系统调用,中断用户进程执行而触发
    2. 内核模式到用户模式:OS执行中断返回指令将控制权交还用户进程而触发

模式切换的处理流程:

  1. (中断/异常触发)正向模式切换压入PSW/PC
  2. 保存被中断进程的现场信息
  3. 处理中断/异常
  4. 恢复被中断进程的现场信息
  5. (中断返回指令触发)逆向模式转换弹出PSW/PC

模式切换的基本工作任务

  1. 中断装置完成正向模式切换,包括:
    1. 处理器模式转为内核模式
    2. 保存当前进程的PC/PSW值到核心栈
    3. 转向中断/异常/系统调用处理程序
  2. 中断返回指令完成逆向模式转换,包括:
    1. 从待运行进程核心栈中弹出PSW/PC值
    2. 处理器模式转为用户模式

2 进程切换

进程切换定义

  • 进程切换指从正在运行的进程中收回处理器,让待运行进程来占有处理器运行
  • 进程切换实质上就是被中断运行进程与待运行进程的上下文切换,处理过程:
    1. 保存被中断进程的上下文
    2. 转向进程调度
    3. 恢复待运行进程的上下文

进程切换的工作过程

  1. (中断/异常等触发)正向模式切换并压入PSW
  2. 保存被中断进程的现场信息
  3. 处理具体中断/异常
  4. 把被中断进程的系统堆栈指针SP值保存到PCB
  5. 调整被中断进程的PCB信息,如进程状态
  6. 把被中断进程的PCB加入相关队列
  7. 选择下一个占用CPU运行的进程
  8. 修改被选中进程的PCB信息,如进程状态
  9. 设置被选中进程的地址空间,恢复存储管理信息
  10. 恢复被选中进程的SP值到处理器寄存器SP
  11. 恢复被选中进程的现场信息进入处理器
  12. (中断返回指令触发)逆向模式转换并弹出PSW/PC

进程切换的触发方式

  • 进程切换一定发生在外中断、内中断(异常和系统调用)处理过程中
    1. 阻塞式系统调用、虚拟地址异常导致被中断进程进入等待态
    2. 时间片中断、I/O中断后发现更高优先级进程导致被中断进程转入就绪态
    3. 终止用系统调用、不能继续执行的异常导致被中断进程进入终止态