文档详情

第二章进程管理

鲁**
实名认证
店铺
PPT
267.51KB
约19页
文档ID:576312419
第二章进程管理_第1页
1/19

第二章 进程管理2.2 进程控制 进程控制 进程控制是进程管理中最基本的功能它用于创建一进程控制是进程管理中最基本的功能它用于创建一个新进程,终止一个已完成的进程,或终止一个因出现某个新进程,终止一个已完成的进程,或终止一个因出现某事件而使其无法运行下去的进程,还可负责进程运行中的事件而使其无法运行下去的进程,还可负责进程运行中的状态转换进程控制一般是由状态转换进程控制一般是由OSOS的内核中的原语来实现的的内核中的原语来实现的 原语原语(Primitive)(Primitive)是由若干条指令组成的,用于完成是由若干条指令组成的,用于完成一定功能的一个过程它与一般过程的区别在于:它们是一定功能的一个过程它与一般过程的区别在于:它们是““原子操作原子操作(Action Operation)(Action Operation)””原子操作,是不可分原子操作,是不可分割的基本单位,在执行中不允许被中断原子操作在管态割的基本单位,在执行中不允许被中断原子操作在管态下执行,常驻内存下执行,常驻内存 进程的创建进程的创建Ø进程图进程图(Process Graph)(Process Graph)     进程图用于描述一个进进程图用于描述一个进程的家族关系的有向树,如程的家族关系的有向树,如图所示。

图中结点代表进程图中结点代表进程D D是是I I的父进程的父进程(Parent (Parent Process)Process),,I I是是D D的子进程的子进程(Progeny Process)(Progeny Process) Ø引起创建进程的事件引起创建进程的事件     在多道程序环境中,只有进程才能在系统中运行因在多道程序环境中,只有进程才能在系统中运行因此,为使程序能运行,就必须为它创建进程导致一个进此,为使程序能运行,就必须为它创建进程导致一个进程去创建另一个进程的典型事件,可有以下四类:程去创建另一个进程的典型事件,可有以下四类:     (1) (1) 用户登录在分时系统中,用户在终端键入登录用户登录在分时系统中,用户在终端键入登录命令后,如果是合法用户,系统将为该终端建立一个进程,命令后,如果是合法用户,系统将为该终端建立一个进程,并把它插入就绪队列中并把它插入就绪队列中     (2) (2) 作业调度在批处理系统中,当作业调度程序按作业调度在批处理系统中,当作业调度程序按算法调度到某作业时,便装入内存,分配资源,并立即为算法调度到某作业时,便装入内存,分配资源,并立即为它创建进程,再插入就绪队列中。

它创建进程,再插入就绪队列中    (3) (3) 提供服务当运行中的用户程序提出某种请求后,提供服务当运行中的用户程序提出某种请求后,系统将专门创建一个进程来提供用户所需要的服务系统将专门创建一个进程来提供用户所需要的服务 (4) (4) 应用请求上述三种情况,都是由系统内核创建应用请求上述三种情况,都是由系统内核创建一个新进程;第一个新进程;第4 4类事件则是基于应用进程的需求,由它类事件则是基于应用进程的需求,由它自己创建一个新进程,以便使新进程以并发运行方式完成自己创建一个新进程,以便使新进程以并发运行方式完成特定任务特定任务 Ø进程的创建进程的创建(Creation of Process)(Creation of Process)     一旦操作系统发现了要求创建新进程的事件后,便调一旦操作系统发现了要求创建新进程的事件后,便调用进程创建原语用进程创建原语CreatCreat( )( )按下述步骤按下述步骤: :     (1)(1)申请空白申请空白PCBPCB为新进程申请获得惟一的数字标识为新进程申请获得惟一的数字标识符,并从符,并从PCBPCB集合中索取一个空白集合中索取一个空白PCBPCB。

     (2)(2)为新进程分配资源为程序和数据以及用户栈分为新进程分配资源为程序和数据以及用户栈分配必要内存空间配必要内存空间此时操作系统必须知道新进程所需内存此时操作系统必须知道新进程所需内存的大小 (3)(3)初始化初始化PCBPCB进程控制块)进程控制块)PCBPCB的初始化包括:的初始化包括: ① ①初始化标识信息,将系统分配的标识符和父进程标初始化标识信息,将系统分配的标识符和父进程标识符填入新识符填入新PCBPCB中;中; ② ②初始化处理机状态信息,使程序计数器指向程序的初始化处理机状态信息,使程序计数器指向程序的入口地址,使栈指针指向栈顶;入口地址,使栈指针指向栈顶; ③ ③初始化处理机控制信息,将进程的状态设置为就绪初始化处理机控制信息,将进程的状态设置为就绪状态或静止就绪状态,通常把新建立的设置为最低优先级,状态或静止就绪状态,通常把新建立的设置为最低优先级,除非用户以显式方式提出高优先级要求除非用户以显式方式提出高优先级要求     (4)(4)将新进程插入就绪队列,如果进程就绪队列能够接将新进程插入就绪队列,如果进程就绪队列能够接纳新进程,便将新进程插入就绪队列。

纳新进程,便将新进程插入就绪队列 进程的终止进程的终止Ø引起进程终止的事件引起进程终止的事件    1)1)正常结束正常结束     系统中,都有一个用于表示进程已经运行完成的指示系统中,都有一个用于表示进程已经运行完成的指示例如,在批处理系统中,通常在程序的最后安排一条例如,在批处理系统中,通常在程序的最后安排一条HoltHolt指令或终止的系统调用当程序运行到指令或终止的系统调用当程序运行到HoltHolt指令时,将产指令时,将产生一个中断,通知生一个中断,通知OSOS进程已经完成在分时系统中,用户进程已经完成在分时系统中,用户可利用可利用Logs offLogs off去表示进程运行完毕,同样可产生一个中去表示进程运行完毕,同样可产生一个中断,通知断,通知OSOS进程已运行完毕进程已运行完毕 2)2)异常结束异常结束     进程运行期间,由于出现某些错误和故障而迫使进程进程运行期间,由于出现某些错误和故障而迫使进程终止终止(Termination of Process)(Termination of Process)常见的有下述几种:常见的有下述几种:     (1)(1)越界错误。

程序访问的存储区越出该进程的区域越界错误程序访问的存储区越出该进程的区域     (2)(2)保护错进程试图去访问一个不允许访问的资源保护错进程试图去访问一个不允许访问的资源或文件,或者以不适当的方式进行访问,或文件,或者以不适当的方式进行访问,     (3)(3)非法指令试图去执行一条不存在的指令出现非法指令试图去执行一条不存在的指令出现该错误的原因,可能是程序错误地转移到数据区,把数据该错误的原因,可能是程序错误地转移到数据区,把数据当成了指令当成了指令    (4)(4)特权指令错进程试图去执行一条只允许特权指令错进程试图去执行一条只允许OSOS执行的执行的指令     (5)(5)运行超时进程的执行时间超过指定最大值运行超时进程的执行时间超过指定最大值     (6)(6)等待超时进程等待某事件的时间超过规定的最大等待超时进程等待某事件的时间超过规定的最大值     (7)(7)算术运算错进程试图去执行一个被禁止的运算,算术运算错进程试图去执行一个被禁止的运算,例如被例如被0 0除     (8)I/O(8)I/O故障这是指在故障这是指在I/OI/O过程中发生了错误等。

过程中发生了错误等 3)3)外界干预外界干预     是指进程应外界的请求而终止运行这些干预有:是指进程应外界的请求而终止运行这些干预有:     (1)(1)操作员或系统干预由于某种原因,例如,发生操作员或系统干预由于某种原因,例如,发生了死锁,由操作员或操作系统终止该进程了死锁,由操作员或操作系统终止该进程     (2)(2)父进程请求由于父进程具有终止自己的任何子父进程请求由于父进程具有终止自己的任何子孙进程的权力,因而当父进程提出请求时,系统将终止该孙进程的权力,因而当父进程提出请求时,系统将终止该进程     (3)(3)父进程终止当父进程终止时,父进程终止当父进程终止时,OSOS也将它的所有也将它的所有子孙进程终止子孙进程终止 Ø进程的终止过程进程的终止过程     如果系统中发生了上述要求终止进程的某事件,如果系统中发生了上述要求终止进程的某事件,OSOS便便调用进程终止原语,按下述过程去终止指定的进程调用进程终止原语,按下述过程去终止指定的进程     (1)(1)根据进程标识符,从根据进程标识符,从PCBPCB集合中检索出该进程的集合中检索出该进程的PCBPCB,从中读出该进程的状态。

从中读出该进程的状态     (2)(2)若被终止进程正处于执行状态,应立即终止该进若被终止进程正处于执行状态,应立即终止该进程的执行,并置调度标志为真,用于指示该进程被终止后程的执行,并置调度标志为真,用于指示该进程被终止后应重新进行调度应重新进行调度 (3)(3)若有子孙进程,应将所有子孙进程予以终止若有子孙进程,应将所有子孙进程予以终止     (4)(4)将被终止进程所拥有的全部资源,或者归还给其将被终止进程所拥有的全部资源,或者归还给其父进程,或者归还给系统父进程,或者归还给系统     (5)(5)被终止进程被终止进程(PCB)(PCB)从所在队列从所在队列( (或链表或链表) )中移出,等中移出,等待其他程序来搜集信息待其他程序来搜集信息 进程的阻塞与唤醒进程的阻塞与唤醒Ø引起进程阻塞和唤醒的事件引起进程阻塞和唤醒的事件    1)1)请求系统服务请求系统服务     当正在执行的进程请求操作系统提供服务时,由于某当正在执行的进程请求操作系统提供服务时,由于某种原因,操作系统并不立即满足该进程的要求时,该进程种原因,操作系统并不立即满足该进程的要求时,该进程只能转变为阻塞状态来等待。

只能转变为阻塞状态来等待   2)2)启动某种操作启动某种操作     当进程启动某种操作后,如果该进程必须在该操作完当进程启动某种操作后,如果该进程必须在该操作完成之后才能继续执行,则必须先使该进程阻塞,以等待该成之后才能继续执行,则必须先使该进程阻塞,以等待该操作完成操作完成 3)3)新数据尚未到达新数据尚未到达     对于相互合作的进程,如果其中一个进程需要先获得对于相互合作的进程,如果其中一个进程需要先获得另一另一( (合作合作) )进程提供的数据后才能对数据进行处理,则只进程提供的数据后才能对数据进行处理,则只要其所需数据尚未到达,该进程只有要其所需数据尚未到达,该进程只有( (等待等待) )阻塞   4)4)无新工作可做无新工作可做     具有特定功能的系统进程,这种进程完成任务后,便具有特定功能的系统进程,这种进程完成任务后,便把自己阻塞起来以等待新任务到来把自己阻塞起来以等待新任务到来 Ø进程阻塞过程进程阻塞过程     正在执行的进程,当发现上述某事件时,由于无法继正在执行的进程,当发现上述某事件时,由于无法继续执行,于是进程便通过调用阻塞原语续执行,于是进程便通过调用阻塞原语blockblock把自己阻塞。

把自己阻塞可见,进程的阻塞是进程自身的一种主动行为进入可见,进程的阻塞是进程自身的一种主动行为进入blockblock过程后,由于此时该进程还处于执行状态,所以应过程后,由于此时该进程还处于执行状态,所以应先立即停止执行,把进程控制块中的现行状态由先立即停止执行,把进程控制块中的现行状态由““执行执行””改为改为““阻塞阻塞””,并将,并将PCBPCB插入阻塞队列如果系统中设置插入阻塞队列如果系统中设置了因不同事件而阻塞的多个阻塞队列,则应将本进程插入了因不同事件而阻塞的多个阻塞队列,则应将本进程插入到具有相同事件的阻塞到具有相同事件的阻塞( (等待等待) )队列最后,转调度程序进队列最后,转调度程序进行重新调度,行重新调度, Ø进程唤醒过程进程唤醒过程     当阻塞进程期待的事件出现时,则由有关进程调用唤当阻塞进程期待的事件出现时,则由有关进程调用唤醒原语醒原语wakeup( )wakeup( ),将等待该事件的进程唤醒唤醒原语,将等待该事件的进程唤醒唤醒原语执行的过程是:首先把被阻塞的进程从等待该事件的阻塞执行的过程是:首先把被阻塞的进程从等待该事件的阻塞队列中移出,将其队列中移出,将其PCBPCB中的现行状态改为就绪,然后再将中的现行状态改为就绪,然后再将该该PCBPCB插入到就绪队列中。

插入到就绪队列中 blockblock原语和原语和wakeupwakeup原语作用刚好相反因此,如果原语作用刚好相反因此,如果在某进程中调用了阻塞原语,则必须在与之相合作的另一在某进程中调用了阻塞原语,则必须在与之相合作的另一进程中或其他相关的进程中安排唤醒原语,以能唤醒阻塞进程中或其他相关的进程中安排唤醒原语,以能唤醒阻塞进程;否则,被阻塞进程将会因不能被唤醒而长久地处于进程;否则,被阻塞进程将会因不能被唤醒而长久地处于阻塞状态,从而再无机会继续运行阻塞状态,从而再无机会继续运行 进程的挂起与激活进程的挂起与激活Ø进程的挂起进程的挂起     系统利用挂起原语系统利用挂起原语suspend( )suspend( )将指定进程或处于阻塞将指定进程或处于阻塞状态的进程挂起状态的进程挂起 挂起原语的执行过程是:首先检查被挂起进程的状态,挂起原语的执行过程是:首先检查被挂起进程的状态,若处于活动就绪状态,便将其改为静止就绪;若处于活动就绪状态,便将其改为静止就绪; 对于活动对于活动阻塞状态的进程,则将之改为静止阻塞为了方便用户或阻塞状态的进程,则将之改为静止阻塞。

为了方便用户或父进程考查该进程的运行情况而把该进程的父进程考查该进程的运行情况而把该进程的PCBPCB复制到某复制到某指定的内存区域最后,若被挂起的进程正在执行,则转指定的内存区域最后,若被挂起的进程正在执行,则转向调度程序重新调度向调度程序重新调度 Ø进程的激活过程进程的激活过程     系统利用激活原语系统利用激活原语active( )active( )将指定进程激活将指定进程激活 激活原语先将进程从外存调入内存,检查该进程的现激活原语先将进程从外存调入内存,检查该进程的现行状态,若是静止就绪,便将之改为活动就绪;若为静止行状态,若是静止就绪,便将之改为活动就绪;若为静止阻塞,便将之改为活动阻塞假如采用的是抢占调度策略,阻塞,便将之改为活动阻塞假如采用的是抢占调度策略,则每当有新进程进入就绪队列时,应检查是否要进行重新则每当有新进程进入就绪队列时,应检查是否要进行重新调度,即由调度程序将被激活进程与当前进程进行优先级调度,即由调度程序将被激活进程与当前进程进行优先级的比较,如果被激活进程的优先级更低,就不必重新调度;的比较,如果被激活进程的优先级更低,就不必重新调度;否则,立即剥夺当前进程的运行,把处理机分配给刚被激否则,立即剥夺当前进程的运行,把处理机分配给刚被激活的进程。

下载提示
相似文档
正为您匹配相似的精品文档