2013 第二章 进程管理课堂讨论-习题

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

释放写信号;
读数据; 读者数-1 判断读者数,为0则释放数据区;
Reader: 写者操作(Writer): P (W); 写者数+1; P(Read); if判断写者数,为 readcount=0 then P(S1); 1则申请写; readcount:=readcount+1; 申请数据区; V(Read); 写数据; V(W); read file; 释放数据区; P(Read); 写者数-1; readcount:=readcount-1; if readcount=0 then V(S1); 判断写者数,为 0则释放写; V(Read);
第二章 进程管理习题课
第二章 进程管理习题课
• 进程:概念,特征,进程控制块,状态及其 转换,进程与程序的比较 • 进程的同步与互斥:同步和互斥,临界资源 和临界区,信号量机制 • 线程 • 管程
第二章 进程管理习题课
1. 为什么说PCB是进程存在的唯一标志? 2. 下述哪些情况是对的? (1) 进程由自己创建; (2) 进程由自己阻塞;
5. 设有n个进程共享一互斥段对如下两种情况 1) 每次只允许一个进程进入互斥段; 2) 最多允许M个进程(M<N)同时进入互斥段;所采 用信号量是否相同?信号量值的变化范围如何?
第二章 进程管理习题课
P(Wait)、V(Signal)操作
动物园的饲养员喂黑熊,饲养员苹果到盆中,黑 熊从盆中抓走苹果吃掉,盆中只能放一个苹果。 分别用饲养员进程、黑熊进程模拟饲养员喂黑熊 的过程,请用 P 、 V 操作(即 wait 和 signal )利用 信号量机制实现这两个进程同步
读者操作(Reader): 是否有写者正在写或请求写?
写者操作(Writer):
写者数+1;
判断写者数,为1则申请写; 申请数据区; 写数据; 释放数据区; 写者数-1; 判断写者数,为0则释放写;
读者数+1;
判断读者数,为1则申请数据区;
释放写信号;
读数据; 读者数-1 判断读者数,为0则释放数据区;
cobegin var x: integer; procecc p1 (进程p1) var y, z: integer; begin x: =1; y: =0; if x>=1 then y:=y+1 z:=y end
第二章 进程管理习题课
procecc p2 var t, u: integer; begin x:=0; t:=0; if x<1 then t:=t+z; u: =t end coend
Writer: Reader: 读者1 P(Write); P (W); if writecount=0 then P(W); P(Read); writecount:=writecount+1; if readcount=0 then P(S1); V(Write); readcount:=readcount+1; 写者1 P(S1); V(Read); write file; V(W); V(S1); read file; 读者2 P(Write); P(Read); writecount:=writecount-1; readcount:=readcount-1; if writecount=0 then V(W); if readcount=0 then V(S1); W阻塞队列 V(Write); V(Read);
全局变量:readcount(读者数),0,writecount(写者数),0 信号量:S1(资源数据区),1; Read(临界资源readcount),1;Write(临界资源writecount),1 W (写信号量),1;
读者操作(Reader): 是否有写者正在写或请求写?
读者数+1;
判断读者数,为1则申请数据区;
否则进程无法被调度执行。进程是被分给并拥有资源
的基本单元,同一进程内的多个线程共享该资源,但 线程并不拥有该资源只是使用它们。
线程不是由进程建立的,因为需要时线程可以创建
其他线程。
第二章 进程管理习题课
4. 下面是两个并发执行的程序它们能正确执行吗?若 不能正确执行请举例说明并改正之(X是公共变量)
P(wait)、V(signal)操作(2)
如图,试用信号量实现 这7个进程的同步:要 求详细解释为进程图设 置的每一个同步信号量 的具体涵义及初值,然 后为进程图中的每一个 进程设计P、V操作;
P1
P2
P3
P5
P4
P7
P6
P(wait)、V(signal)操作(3)
用P、V操作解决下图之同步问题:get进程负责往双缓冲区S中输 入数据,copy进程负责将双缓冲区S中的数据复制到双缓冲区T, put进程负责从双缓中区T中取出数据用于处理。 提示:双缓冲区,代表有两个缓冲区,可以存储两个数据
P0
信箱M0
信箱M1
P1 P2 信箱M2
P3
信箱M3
P(Wait)、V(Signal)操作
设有一台计算机,有两条I/O通道,分别接一台卡 片输入机和一台打印机。卡片机把一叠卡片逐一 输入到缓冲区B1中,加工处理后再搬到缓冲区 B2中,并在打印机上印出,问: (1)系统要设几个进程来完成这个任务?各自的 工作是什么? (2)这些进程间有什么样的相互制约关系?
get copy put
S
T
P(wait)、V(signal)操作(4)
四个进程A、B、C、D都要读一个共享文件F,系统允许多个进程同时读文 件F,但限制是:进程A和C不能同时读文件F,进程B和D也不能同时读文 件F。 请回答下面的问题: (1)应定义的信号量及初值:
(2)在程序中填上适当的P、V操作,以保证它们能正确并发工作:
Writer: P(Write); if writecount=0 then P(W); writecount:=writecount+1; V(Write); P(S1); write file; V(S1); P(Write); writecount:=writecount-1; if writecount=0 then V(W); V(Write);
A() { { B() { C() { D()
[1];
read F; [2];
[3];
read F; [4];
[5];
read F; [6];
[7];
read F; [8];
}
}
}
}
P(wait)、V(signal)操作(5)
桌上有一空盘,最多允许放一只水果。爸爸可向盘中放 一个苹果,妈妈可向盘中放一个桔子,儿子专等吃盘中 的桔子,女儿专等吃苹果。 试用P、V操作实现爸爸、妈妈、儿子、女儿四个并发进 程的同步。
P(wait)、V(signal)操作
如图所示,四个进程和四个信箱 ,进程间借助相邻信箱传 递消息,即Pi每次从Mi中取一条消息,经加工后ห้องสมุดไป่ตู้入Mi+1 , 其中Mi(i=0~3)分别可存放3,3,2,2个消息。初始状态 下,M0装了3条消息,其余为空。试以P、V操作为工具, 写出 Pi (i=0~3)的同步工作算法。
(3)用P、V操作写出这些进程的同步算法。
全局变量:readcount(读者数),0,writecount(写者数),0 信号量:S1(资源数据区),1; Read(临界资源readcount),1;Write(临界资源writecount),1 W (写信号量),1;
Writer: 读者操作(Reader): P(Write); 是否有写者正在写或请求写? if writecount=0 then P(W); 读者数 +1; writecount:=writecount+1; V(Write); 判断读者数,为 1则申请数据区; P(S1); 允许写者申请写; write file; 读数据; V(S1); P(Write); 读者数 -1 writecount:=writecount-1; 判断读者数,为0则释放数据区; if writecount=0 then V(W); V(Write);
(3) 进程由自己挂起;
(4) 进程由自己解除挂起; (5) 进程由自己唤醒; (6) 进程由自己撤消。
第二章 进程管理习题课
3. 进程和线程的关系是什么?线程是由进程建立的,
是吗?
答:进程和线程的关系是:线程是进程内的一 个相对独立的可调度的执行单元。
第二章 进程管理习题课
进程在创建时,系统至少需要同时为该进程创建一 个线程,即进程中至少要有一个或一个以上的线程,
P(wait)、V(signal)操作(1)
修改读者写者问题的算法,使之对写者优先, 即一旦有写者到达,后续的读者必须必须等待, 无论是否有读者在读。
有两组并发进程: 读者和写者,共享一组数据区 要求: 允许多个读者同时执行读操作 不允许读者、写者同时操作 不允许多个写者同时操作
全局变量:readcount(读者数),0,writecount(写者数),0 信号量:S1(资源数据区),1; Read(临界资源readcount),1;Write(临界资源writecount),1 W (写信号量),1;
写者操作(Writer):
写者数+1;
判断写者数,为1则申请写; 申请数据区; 写数据; 释放数据区; 写者数-1; 判断写者数,为0则释放写;
全局变量:readcount(读者数),0,writecount(写者数),0 信号量:S1(资源数据区),1; Read(临界资源readcount),1;Write(临界资源writecount),1 W (写信号量),1;
全局变量:readcount(读者数),0,writecount(写者数),0 信号量:S1(资源数据区),1; Read(临界资源readcount),1;Write(临界资源writecount),1 W (写信号量),1;R(读信号量),1
Reader: P(R); P (W); P(Read); if readcount=0 then P(S1); readcount:=readcount+1; V(Read); V(W); V(R); read file; P(Read); readcount:=readcount-1; if readcount=0 then V(S1); V(Read);
相关文档
最新文档