进程
进程是一个程序的执行过程,是资源分配、保护和调度的基本单位。进程状态有:
- 创建态:
- 就绪态:进程准备好,等他分配cpu
- 运行态:进程在cpu上运行
- 等待态:等待某个事件完成,或等待 某个信号
- 终止态:结束运行
进程如何放弃CPU
内部事件:
- 进程主动放弃,进入等待/终止态
- 例如:使用IO设备、非正常结束
外部事件:
- 被抢占,进程被剥夺CPU使用权
- 例如:运行时间片到底,高优先权进程到达
中断技术
中断是指程序执行过程中,当发送某个事件时
- 中止CPU上现行程序的运行
- 引出该事件的处理程序
- 执行完成后,返回原程序的中断点处
中断源
外部中断:来自处理器之外的硬件中断信号
- 比如:时钟中断、键盘中断、外围设备中断
- 外部中断,属于异步中断
内部中断(异常)
- 硬件异常:比如掉电、奇偶校验错误等
- 程序异常:非法操作、地址错误、断点、除数为0
- 系统调用
模式切换
- 中断一旦发送,计算机会从用户模式切换到内核模式
进程调度
什么触发了进程切换
* CPU被抢占,进入就绪态
* 主动放弃CPU,进入等待态
进程切换时,操作系统要做什么
- 保存现场,保护进程的上下文信息
- 修改该进程的控制信息(如状态)
- 将被中断进程加入到相应的状态队列
- 调度新进程,并恢复它的上下文信息
进程控制块(PCB)
每个进程都有自己的PCB,PCB的内容包括
- 进程状态
- 进程号pid
- pc值:保存了下一条程序的地址
- 寄存器值:进程使用了那些寄存器和其值是多少
- 内存:
- fopen打开的文件:
进程队列
进程切换是怎么运用中断的
进程切换使用的是中断技术,在内核态会有switch这个中断处理函数。与进程的区别在于:中断的P2是被中断的进程,而进程切换的P2是一个新进程。