进程的描述与控制
进程的定义:
一·进程是程序的一次执行。
二.进程是一个程序及其数据在处理机上顺序执行时所发生的活动。
三.进程是具有独立功能的程序在一个数据结合上运行的过程,它是系统进行资源分配和调度的一个独立单位。
为了使程序并发执行,并且可以对并发执行的程序加以描述和控制,人们引入了进程的概念。
为了使参与并发执行的每个程序都能独立运行,在操作系统中必须为之分配一个专门的数据结构,称为进程控制块(PCB)。系统利用PCB来描述进程的基本情况和活动过程,进而控制和管理进程。
进程实体由程序段,相关数据和PCB三部分构成。
在引入了进程实体的概念后,可以将传统的os定义为:“进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。”
进程的特征:
动态性
并发性
独立性
异步性
进程三种基本状态
由于多个进程在并发执行时共享系统资源,致使他们在运行过程中呈现间断性的运行规律,所以进程在生命周期内可能具有不同状态。一般而言,每个进程至少应处于以下三种基本状态:
就绪(Ready)状态
指进程已处于准备好运行的状态,即进程已分配到除CPU以外的所有必要资源后,只要再获得CPU就可以立即执行。如果有多个就绪状态的进程。
通常按照一定的策略排成一个队列,称该队列为就绪队列
执行(Running)状态
指进程已经获得CPU,其程序正在执行的状态。在单处理机系统中,只有一个进程处于执行状态,而多处理机系统则有多个进程处于执行状态。
阻塞(Block)状态
指正在执行的进程由于发生某事件(如I/O请求、申请缓冲区失败等)暂时无法继续执行时的状态,即进程的执行受到了阻塞。此时引起进程调度,OS把处理机分配给另一个就绪的进程,而让受阻进程处于暂停状态,一般将这种暂停状态称为阻塞状态,有时也称为等待状态或封锁状态。
通常系统将处于阻塞状态的进程也排成一个队列,称为阻塞队列。
创建状态和终止状态
创建状态
申请PCB,填写用于控制和管理进程的信息—>分配必须资源—>把进程转入就绪状态并插入就绪队列。
引入创建状态是为了保证进程调度必须在创建工作完成后进行,以确保对进程控制块操作的完整性。
终止状态
两个步骤: 首先,是等待操作系统进行善后处理,最后将其PCB清零,并将PCB空间返还系统。
挂起操作和进程状态的转换
当挂起操作作用与某个进程时,该进程被挂起,意味着此时该进程处于静止状态。如果进程在执行,那么将暂停执行。
引入挂起的原因
终端用户的需要
父进程的请求
负荷调节的需要
操作系统的需要
引入挂起原语操作后三个进程的状态转换
引入挂起原语Suspend和**原语Active后,进程可能发生以下几种状态转换:
活动就绪—>静止就绪
当进程处于未被挂起的就绪状态时,被称为活动就绪状态,标示为Readya,此时进程接受调度。当用Suspend将进程挂起时,此进程变为静止就绪状态,表示为Readys,此时进程不再被调度执行。
活动阻塞—>静止阻塞
当进程未被挂起时的阻塞状态称为活动阻塞状态,表示为Blockda,当用SUspend挂起时,便成为了静止阻塞,表示为Blockeds.处于该状态的进程中在其所期待的事件出现后,它将从静止阻塞变为静止就绪状态Readys状态。
静止就绪—>活动就绪
处于Readys状态的进程若用Active**后,就变成了活动就绪Readya状态。
静止阻塞—>活动阻塞
处于Blockeds状态的用Active**后,变成Blockeda状态。
进程控制块PCB的作用
为了便于系统描述和管理进程的运行,在os的核心为每个进程专门定义了一个数据结构——进程控制块PCB(Process Control Block)
进程控制块的作用是使一个在多道程序环境下不能独立运行的程序成为一个能独立运行的基本单位,一个能与其他进程并发执行的进程。
1.**作为独立运行基本单位的标志。**PCB 成为进程存在于系统的唯一标志
2.能实现间断性运行方式。
3.提供进程管理所需要的信息。
4.提供进程调度所需要的信息。
5.实现与其他进程的同步与通信。
进程控制
引起创建进程的事件
用户登录
作业调度
提供服务
应用请求
进程创建步骤:
申请空白PCB,为新进程申请获得唯一的数字标识符,并从PCB集合中索取一个空白PCB。
为新进程分配其运行所需要的资源,包括物理和逻辑资源,如内存、文件、I/O设备和CPU时间等。
初始化进程控制块
如果进程就绪队列能够接纳新的进程,便将新进程插入就绪队列。
进程的终止
引起进程终止的事件:
正常结束,表示进程的任务已经完成,准备推出运行。
异常结束,指进程在运行时发生了某种异常事件,使程序无法继续运行。
越界错:程序访问存储区超出该进程区域
保护措:进程访问一个不允许访问的资源,或者以不当的方式访问。
非法指令:程序试图去执行不存在的指令
特权指令错:用户进程试图去执行一条只允许OS执行的指令
运行超时:进程执行事件超过了制定的最大值
等待超时:进程等待的时间超过了规定最大值
算术运算错:进程试图执行一个被禁止的运算。例如被0除。
I/O故障:I/O过程中发生错误。
外界干预
操作员或者操作系统干预
父进程请求
父进程终止
进程终止的过程
根据被终止进程的标识符,从PCB集合中检索出该进程的PCB,从中读取该进程的状态
若被终止进程正在处于执行状态,则立即终止执行,并置调度标志为真,用于指示该进程被终止后应重新进行调度。
如有该进程有子进程,则所有子进程也终止
将被终止进程PCB从队列移除,等待其他程序来搜集信息。
进程的阻塞与唤醒
引起进程阻塞和唤醒的事件:
向系统请求共享资源失败
请求共享资源,但是没有足够资源分配,所以进程变为阻塞状态。
等待某种操作的完成
例如一个进程的完成必须要有另一个进程的支持,即另个进程完成后这个进程才能执行,这时候进程变为阻塞状态。
新数据尚未到达
等待新任务到达
进程阻塞过程
如果进程执行,则立刻停止,把PCB插入阻塞队列。
进程唤醒过程
当阻塞进程所期待的事件发生,则调用唤醒原语wakeup,从阻塞队列移出,将PCB状态由阻塞变为就绪,然后把PCB插入就绪队列中。
进程的挂起与**
进程的挂起
检查进程状态,如果活动就绪改为静止就绪;如果活动阻塞改为静止阻塞。为了方便用户或父进程考察该进程的运行情况,把进程PCB复制到制定内存区域;最后若被挂起的进程正在执行,则扎ungxiangdiaodu程序重新调度。
进程的**状态
利用**原语Active,把进程从外存调入内存,检查其状态,若静止就绪改为活动就绪;若静止阻塞改为活动阻塞。