进程状态与控制_第1页
进程状态与控制_第2页
进程状态与控制_第3页
进程状态与控制_第4页
进程状态与控制_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、进程状态与管理制作人:颜远海进程状态实例o 计算机的进程状态转换图如下图所示,请说明:计算机的进程状态转换图如下图所示,请说明:(1)引起各种状态转换的典型事件哪些?)引起各种状态转换的典型事件哪些?(2)在观察系统中的某些时,能够看到某一进程产生的)在观察系统中的某些时,能够看到某一进程产生的一次状态转换相应地引起另一进程做一次状态转换。一次状态转换相应地引起另一进程做一次状态转换。在什么情况下,当一个进程发生转换在什么情况下,当一个进程发生转换C时能立即引起时能立即引起另一另一个进程发生转换个进程发生转换A?(3)试说明是否会发生下述因果转换:)试说明是否会发生下述因果转换:B-A:C-B

2、:D-A执行执行阻塞阻塞就绪就绪ABDCo解析:本题首先要透彻理解的状态转换和状态转换条件,其次是解析:本题首先要透彻理解的状态转换和状态转换条件,其次是理解因果转换。所谓因果转换,指的是有两个转换,一个转换的理解因果转换。所谓因果转换,指的是有两个转换,一个转换的发生会引起另一个转换的发生,前一个转换称为因,后一个转换发生会引起另一个转换的发生,前一个转换称为因,后一个转换称为果,这两个转换称为因果转换。称为果,这两个转换称为因果转换。根据以上分析,解答过程如下:根据以上分析,解答过程如下:(1)在本题所给的进程状态转换图中,进程在三种状态之间进行了)在本题所给的进程状态转换图中,进程在三种

3、状态之间进行了4种状态转换。种状态转换。当进程高度程序从就绪队列中选取一个进程投入运行时引起转换当进程高度程序从就绪队列中选取一个进程投入运行时引起转换A正在执行的进程如因时间片用完而被暂停执行就会引起转换正在执行的进程如因时间片用完而被暂停执行就会引起转换B:正在执行的进程因等待的事件尚未发生而无法执行(如进程请求完正在执行的进程因等待的事件尚未发生而无法执行(如进程请求完成成I/O)则会引起转换)则会引起转换C当进程等待的事件发生时(如当进程等待的事件发生时(如I/O完成)则会引起转换完成)则会引起转换D。o(2)如果就绪队列非空,则一个进程的发生转换)如果就绪队列非空,则一个进程的发生转

4、换C会立即引起另会立即引起另一个进程的发生转换一个进程的发生转换A。这是因为一个进程发生转换。这是因为一个进程发生转换C意味着正在意味着正在执行的进程由执行状态变为阻塞状态,这时处理机空闲,进程高执行的进程由执行状态变为阻塞状态,这时处理机空闲,进程高度程序必然会从就绪队列中选取一个进程并将它投入运行,因此度程序必然会从就绪队列中选取一个进程并将它投入运行,因此只要就绪队列非空,一个进程的发生转换只要就绪队列非空,一个进程的发生转换C能立即引起另一个进程能立即引起另一个进程的发生转换的发生转换A。o(3)因果关系并不是什么时候都能发生,而是在一定条件下才可)因果关系并不是什么时候都能发生,而是

5、在一定条件下才可能发生。能发生。B-A:当某进程发生转换:当某进程发生转换B时,就必然引起另一进程的转换时,就必然引起另一进程的转换A。因为。因为当发生转换当发生转换B时,正在执行的进程从执行状态变为就绪状态,进程时,正在执行的进程从执行状态变为就绪状态,进程调度程序必然会从就绪队列中选取一个进程投入运行,即发生转调度程序必然会从就绪队列中选取一个进程投入运行,即发生转换换A。:C-B:某个进程的转换某个进程的转换C决不可能引起另一进程发生转换决不可能引起另一进程发生转换B。这是因为当前执行进程从执行状态变为阻塞状态,不这是因为当前执行进程从执行状态变为阻塞状态,不可能又从执行状态变为就绪状态

6、。可能又从执行状态变为就绪状态。:D-A: 当处理机空闲且就绪队列为空时,某一进程发生转换当处理机空闲且就绪队列为空时,某一进程发生转换D就会引起该进程的转换就会引起该进程的转换A。因为此时处理机空闲,一。因为此时处理机空闲,一旦某个进程发生转换旦某个进程发生转换D,就意味着有一个进程从阻塞,就意味着有一个进程从阻塞状态变为就绪状态,因而调度程序就会将就绪队列中状态变为就绪状态,因而调度程序就会将就绪队列中年级进程投入运行。年级进程投入运行。 进程互斥举例(进程互斥举例(1 1) 例2,上述的“飞机订票系统”。一个飞机订票系统可以有多个订票处的n个订票终端。现假设n=2,公共数据区为Hi(i=

7、1,2,,m),分别存放各次班机的现存票数, Pi(i=1,2,n)表示售票终端的进程。进程互斥举例(进程互斥举例(2 2) semaphore S;oS = 1; / 公用信号量ocobegin oo process Pi (i=1,2,n)o o int temp;o 按照定票要求找到单元Hi;o P(S);o temp = Hi ; if temp 1 temp =temp -1; Hi = temp; V(S); 输出一张票 else V(S); 输出提示“票已售完”;coned经典进程同步问题经典进程同步问题o 1、生产者消费者问题o 问题描述:一群生产者向一个有界缓冲区放入产品,只

8、要缓冲问题描述:一群生产者向一个有界缓冲区放入产品,只要缓冲区未满就可以存放,又有一群消费者从有界缓冲区取走产品,只区未满就可以存放,又有一群消费者从有界缓冲区取走产品,只要缓冲区未空就可以取走。要缓冲区未空就可以取走。o 要求:存存、取取、存取都不能同时进行,缓冲区满时停存,缓要求:存存、取取、存取都不能同时进行,缓冲区满时停存,缓冲区空时停取,生产与消费等放。冲区空时停取,生产与消费等放。解决方法解决方法设三个信号量1、信号量S,初值为1,表示没有产品进入临界区,用于互斥;2、信号量Sn,表示可用缓冲区个数,初值为n3、信号量S0,表示产品个数,初值为0生产者:生产者:消费者:消费者:生产

9、一个产品生产一个产品P(Sn)P(Sn)P(S)P(S)产品放入缓冲区产品放入缓冲区V(S0)V(S0)V(S)V(S)消费一个产品消费一个产品P(S0)P(S0)P(S)P(S)产品取出缓冲区产品取出缓冲区V(Sn)V(Sn)V(S)V(S)2 2、读者、读者写者问题写者问题问题描述:问题描述:(1) 一个数据对象被多个读者、写者进程共享;(2) 允许多个读者进程可以共享这个数据对象,因为读操作不会使数据文件混乱;(3) 写者与写者、写者与读者必须互斥使用数据对象;解决方法:解决方法:(1) 设ReadCount是整型变量,初值为0,最大值是RN,表示读者个数;(2) 设信号量r,初值为1,表示读者互斥使用ReadCount;(3) 设信号量w,初值为1,写者与写者互斥,写者与第一读者互斥读者:读者:P(r)Re

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论