进程切换
- 并发进程的切换
- 并发进程中,一个进程在执行过程中可能被另一个进程替换占有CPU,这个过程称为“进程切换”
- 是什么触发了进程切换?
- 进程切换时要做什么?
- 操作系统到底做了什么操作
2 中断技术
- 操作系统到底做了什么操作
- 中断是指程序执行过程中
- 当发生某一个事件时,中止cpu上现行的程序的运行
- interrupt:excption:异常中断,interrupt:中断
- 引出该事件的处理程序执行
- 使用了陷阱机制(系统调用),系统调用也是中断的一种。
- 使用了陷阱机制(系统调用),系统调用也是中断的一种。
- 当发生某一个事件时,中止cpu上现行的程序的运行
- 执行完毕返回原程序中断点继续执行
- 中断源
- 外中断:来自处理器之外的硬件中断信号
- 如时钟中断,键盘中断,外围设备中断。
- 外部中断均是异步中断(异步就是随机中断)
- 内中断(异常exeption):来自于处理器内部,指令执行过程中发生的中断,属同步中断。
- 硬件异常:掉电,奇偶检验错误等
- 程序异常:非法操作,地址越界,断电,除数为0
- 系统调用
- 中断处理过程
- save the context of the executing process:保存上下文信息,
- exeption/interrupt handler
- determine the cause of the exception or interrupt(确定中断的原因)
- handle the exception/interrupt(处理中断)
- 选择需要重新加载和重新开始的进程,恢复上下文信息
- 特权指令和非特权指令
- privileged instructions
- I/0 instructions and Halt instuctions
- Turn off all insterrupts
- set the timer
- process switching
- Non-privileged instructions
- the instructions that can run only in user mode
- 模式切换
- 中断是用户态向核心态转换的唯一途径!系统调用实质上也是一种中断
- 进程切换
- 切换时机
- 进程需要进入等待状态,(这种是running状态,然后主动去切换状态)
- 进程被抢占CPU而进入就绪状态
- 切换过程
- 保存被中断进程的上下文信息(Context)
- 修改被中断进程的控制信息(如状态)
- 将被中断的进程加入响应的状态队列
- 调度一个新的进程并恢复它的上下文信息
- 进程控制块
- A Process Control (PCB) contain many pieces of information associated with a specific process.
- process state:进程状态
- process number:pid
- program counter:pc值,这个进程下一条要执行的值
- registers:寄存器的值,包括使用到的寄存器
- memory limits:内存
- list of open files:打开的文件
- 进程队列(process queues)
- 就绪队列:就绪只有一条队列,使用链表的方式连接起来,每一个链表节点中只包括pcb,
- 等待队列:多个队列,不同设备使用不同的队列进行管理
- 运行:运行没有队列