1.基本概念
1.进程控制
进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。
进程控制就是要实现进程状态转换。
2.实现进程控制(原语)
1.原语
原语是一种特殊的程序,它的执行具有原子性。也就是说,这段程序的运行必须一气呵成,不可中断。
如果不能“一气呵成”,就有可能导致操作系统中的某些关键数据结构信息不统一的情况,这会影响操作系统进行别的管理工作。
2.原语的原子性
原语的执行具有原子性,即执行过程只能一气呵成,期间不允许被中断。可以用“关中断指令”和“开中断指令”这两个特权指令实现原子性.
- 正常情况:CPU每执行完一条指令都会例行检查是否有中断信号需要处理,如果有,则暂停运行当前这段程序,转而执行相应的中断处理程序。
- CPU执行了关中断指令之后,就不再例行检查中断信号,直到执行开中断指令之后才会恢复检查。
- 这样,关中断、开中断之间的这些指令序列就是不可被中断的,这就实现了“原子性”.
2.进程控制相关的原语
1.进程的创建
操作系统创建一个进程时使用的原语
1.创建原语
- 申请空白PCB
- 为新进程分配所需资源
- 初始化PCB
- 将PCB插入就绪队列(创建态到就绪态)
2.引起进程创建的事件
- 用户登录:分时系统中,用户登录成功,系统会建立为其建立一个新的进程
- 作业调度:多道批处理系统中,有新的作业放入内存时,会为其建立一个新的进程
- 提供服务:用户向操作系统提出某些请求时,会新建一个进程处理该请求
- 应用请求:由用户进程主动请求创建一个子进程
2.进程的终止
要终止一个进程时使用,从就绪态,阻塞态或者运行态直接到终止态。
1.撤销原语
- 从PCB集合中找到终止进程的PCB
- 若进程正在运行,立即剥夺CPU,将CPU分配给其他进程
- 终止其所有子进程(进程间的关系是树形结构)
- 将该进程拥有的所有资源归还给父进程或操作系统
- 删除PCB
2.引起进程终止的事件
- 正常结束:进程自己请求终止(exit系统调用)
- 异常结束:整数除以0、非法使用特权指令,然后被操作系统强行杀掉
- 外界干预:Ctrl+Alt+delete,用户选择杀掉进程
3.进程的阻塞
运行态到阻塞态
1.阻塞原语
- 找到要阻塞的进程对应的PCB
- 保护进程运行现场,将PCB状态信息设置为“阻塞态",暂时停止进程运行
- 将PCB插入相应事件的等待队列
2.引起进程阻塞的事件
- 需要等待系统分配某种资源
- 需要等待相互合作的其他进程完成工作
4.进程的唤醒
阻塞态到就绪态
1.唤醒原语
- 在事件等待队列中找到PCB
- 将PCB从等待队列移除,设置进程为就绪态
- 将PCB插入就绪队列,等待被调度
2.引起进程唤醒的事件
等待的事件发生。(因何事阻塞,就应由何事唤醒)
因此阻塞原语唤醒原语必须成对使用。
5.进程的切换
运行态到就绪态,就绪态到运行态。
1.切换原语
- 将运行环境信息存入PCB
- PCB移入相应队列
- 选择另一个进程执行,并更新其PCB
- 根据PCB恢复新进程所需的运行环境
2.切换进程的事件
- 当前进程时间片到
- 有更高优先级的进程到达
- 当前进程主动阻塞
- 当前进程终止
3.进程的运行环境
CPU中会设置很多“寄存器”,用来存放程序运行过程中所需的某些数据。
- PSW:程序状态字寄存器
- PC:程序计数器,存放下一条指令的地址
- IR:指令寄存器,存放当前正在执行的指令
- 通用寄存器:其他一些必要信息
当一个进程要下CPU时,在进程切换时先在PCB中保存这个进程的运行环境(保存一些必要的寄存器信息)
当原来的进程再次投入运行时,可以通过PCB恢复它的运行环境。