操作系统进程控制
操作系统内核
OS内核的概念: 将一些与硬件紧密相关的模块(如中断处理程序等),各种常用设备和驱动程序以及运行频率较高的模块(如时钟管理模块,进程调度和许多模块所公用的一些基本操作),都安排在靠近硬件的软件层次中,将它们常驻内存,通常被称为OS内核。
OS内核的优点: 便于对OS内核中的这些软件进行保护,防止遭受其他程序的破坏;可以提高OS的运行效率。
OS内核的功能:支撑功能;资源管理功能。
- 支撑功能:为OS其他模块提共基本功能,以便支撑这些模块工作。最基本的支撑功能包括中断处理,时钟管理和原语操作。
- 资源管理功能:(1)进程管理(2)存储器管理(3)设备管理
进程的创建
进程的层次结构
- OS中允许一个进程去创建另一个进程,通常把创建进程的进程叫做父进程,被创建的进程叫做子进程,子进程可以继续创建更多孙进程。
- 子进程可以继承父进程所拥有的资源,如父进程打开的文件,父进程所分配到的缓冲区等。
- 子进程被撤销时,将从父进程继承的资源归还给父进程。撤销父进程时,也必须同时撤销其所有子进程。进程不能拒绝其子进程的继承。
- windows中不存在进程层次结构的概念,进程间只是控制与被控制的简单关系。
进程的创建过程
- 1)申请空白PCB:为新进程获取唯一的数字标识符,并从PCB集合中索取一个空白PCB
- 2)为新进程分配其运行所需要的资源:包括各种物理资源和逻辑资源,如内存,文件,IO设备和CPU时间等。这些资源可以从操作系统或父进程中获得。
- 3)初始化进程控制块PCB:PCB的初始化包括
①初始化标识信息 :将系统分配的标识符和父进程标识符填入新PCB
②初始化处理机状态信息 :使程序计数器指向程序入口地址,使栈指针指向栈顶
③初始化处理机控制信息:将程序计数器状态设置为就绪状态或静止就绪状态,优先级默认设置为最低优先级 - 4)将新进程插入就绪队列
进程的终止
进程终止的过程:
- 1)根据被终止进程的标识符,从PCB集合中检索出该进程的PCB,从中读出该进程的状态
- 2)若被终止的进程正处于执行状态,应立即终止该进程的执行,并置调度标志位真,用于只是该进程被终止后应重新进行调度。
- 3)若该进程还有子孙进程,还应将其所有子孙进程也都予以终止,以防它们成为不可控的进程。
- 4)将被终止进程所拥有的全部资源或者归还给其父进程,或者归还给系统。
- 5)将被终止进程(PCB)从所在队列(或链表)中移出,等待其他程序来搜集信息。
进程的阻塞和唤醒
引起进程阻塞的事件:①向系统请求共享资源失败 ②等待某种操作的完成 ③新数据尚未到达 ④等待新任务的到达
进程阻塞过程
- 正在执行的进程,若发生上述某事件,便通过调用阻塞原语block将自己阻塞。阻塞是进程自身的主动行为。
- 进入block后,先立即停止进程的执行,把进程控制块PCB中的现行状态由”执行“改为阻塞。
- 将PCB插入阻塞队列。若系统中设置了因不同事件而阻塞的多个阻塞队列,则应将本进程插入到具有相同事件的阻塞队列。
- 转调度程序进行重新调度,将处理机分配给另一就绪进程,并进行切换,保留被阻塞进程的处理机状态,按新的PCB中的处理机状态设置CPU的环境。
进程唤醒过程
- 当被阻塞的进程所期待的事件发生时,由有关进程调用唤醒原语wakeup,将等待该事件的进程唤醒。
- wakeup首先把被阻塞的进程从阻塞队列中移除,将其PCB的现行状态由阻塞改为就绪,然后将该PCB插入就绪队列。
进程的挂起与激活
进程的挂起过程:
- OS利用suspend原语将指定进程或处于阻塞状态的进程挂起。
- 其执行过程中,首先检查被挂起进程的状态,若处于活动就绪状态,便将其改为静止- - 就绪状态;对于活动阻塞状态的进程,则改为静止阻塞状态。
- 为了方便用户或父进程考查该进程运行情况,将该进程的PCB复制到某指定的内存区域,挂起操作会将进程从内存移动到外存。
- 若被挂起的进程正在执行,则转向调度程序重新调度。
进程的激活过程
- OS利用active原语将指定进程激活。
- 激活原语先将进程从外存调入内存,检查该进程的现行状态,若是静止就绪状态,便改为活动就绪状态;若为静止阻塞状态,便改为活动阻塞状态。
- 若采用抢占调度策略,在将静止就绪进程激活后插入就绪队列时,要比较被激活进程和当前进程的优先级,若被激活进程的优先级更高,则立即剥夺当前进程的运行,将处理机分配给刚激活的进程。