进程管理
进程控制块(PCB)
未建立PCB的程序都不能作为一个独立的单位参与运行。
进程控制块是进程的唯一标志。
PCB是有限的,创建进程需要申请PCB。
进程控制块中的内容:
为什么要区分就绪状态和等待状态?
就绪状态是指进程仅缺少处理机,只要获得处理机资源就立即执行;
等待状态是指进程需要其他资源(除了处理机)或等待某一事件。
之所以把处理机和其他资源划分开,是因为在分时系统的时间片轮转机制中,每个进程分到的时间片是若干毫秒。也就是说,进程得到处理机的时间很短且非常频繁,进程在运行过程中实际上是频繁地转换到就绪状态的;而其他资源(如外设)的使用和分配或者某一事件的发生(如I/O操作的完成)对应的时间相对来说很长,进程转换到等待状态的次数也相对较少。这样看来,就绪状态和等待状态是进程生命周期中两个完全不同的状态,显然需要加以区分。
进程状态
1、运行状态
进程正在处理机上运行,在单处理机环境下,每一时刻最多只有一个进程处于运行状态。
2、就绪状态
进程已处于准备运行的状态,即进程获得了除处理机之外的一切所需资源,一旦得到处理机即可运行。
3、阻塞状态
进程正在等待某一事件而暂停运行,如等待某资源为可用(不包括处理机)或等待输入\输出完成。即使处理机空闲,该进程也不能运行。
4、创建状态
进程正在被创建,尚未转到就绪状态。创建进程通常需要多个步骤:首先申请一个空白的PCB,并向PCB中填写一些控制和管理进程的信息;然后由系统为该进程分配运行时必需的资源;最后把该进程转入到就绪状态。
5、结束状态
进程正从系统中消失,这可能是进程正常结束或其他原因中断退出运行。当进程需要结束运行时,系统首先必须置该进程为结束状态,然后再进一步处理资源释放和回收等工作。
进程状态转换
1、就绪状态→运行状态
处于就绪状态的进程获得了处理机资源。
2、运行状态→就绪状态
时间片用完了让出处理机;
可剥夺操作系统中,优先级更高的进程被调度,正在执行的低优先级进程从运行状态转为就绪状态。
3、运行状态→阻塞状态
进程请求某一资源或等待某一事件的发生。
4、阻塞状态→就绪状态
进程等待的事件到来了(I/O操作结束或中断结束)。
进程控制
进程的创建
子进程可以继承父进程所拥有的资源。
子进程被撤销时,将从父进程那里获得的资源归还给父进程。
撤销父进程时,必须同时撤销其所有的子进程。
创建过程:
1、为新进程分配一个唯一的进程标识号,并申请一个空白的PCB(PCB是有限的)。若PCB申请失败则创建失败。
2、为进程分配资源,为新进程的程序和数据,以及用户栈分配必要的内存空间(在PCB中体现)注意:如果资源不足(比如内存空间),并不是创建失败,而是处于等待状态,等待的是内存这个资源。
3、初始化PCB,主要包括初始化标志信息、初始化处理机状态信息和初始化处理机控制信息,以及设置进程的优先级等。
4、如果进程就绪队列能够接纳新进程,就将新进程插入到就绪队列,等待被调度运行。
进程的终止
正常结束:进程的任务完成和准备退出运行。
异常结束:进程运行时,发生了某种异常事件,使程序无法继续运行。(存储区越界、保护错、非法指令、特权指令错、I/O故障)
外界干预:进程应外界的请求而终止运行。(操作员或操作系统干预、父进程请求和终止)
终止过程:
1、根据被终止进程的标识符,检索PCB,从中读出该进程的状态。
2、若被终止进程处于执行状态,立即终止该进程的执行,将处理机资源分配给其他进程。
3、若该进程还有子进程,则应将其所有子进程终止。
4、奖该进程所拥有的全部资源,或归还其父进程或归还给操作系统。
5、将该PCB从所在队列(链表)中删除。
进程的阻塞和唤醒
正在执行的进程,由于期待的某些事件未发生,如请求系统资源失败、等待某种操作的完成、新数据尚未到达或无新工作可做等,则有系统自动执行阻塞源于,使自己由运行状态变为阻塞状态。可见,进程的阻塞是进程自身的一种主动行为,也因此只有处于运行态的进程(获得CPU),才可能将其转换为阻塞状态。
进程切换
对于通常的进程,其创建、撤销以及要求有系统设备完成的I/O操作都是利用系统调用而进入内核,再由内核中相应处理程序予以完成的。进程切换同样是在内核的支持下实现的,因此可以说,任何进程都是在操作系统内核的支持下运行的,是与内核紧密相关的。