计算机操作系统 第二章作业
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
作业(第二章)
解题规范示例
• 三个进程P1、P2、P3互斥使用一个包含N(N>0) 个单元的缓冲区,P1每次用produce()生成一个正 整数,并用put()送入缓冲区的某一空单元中;P2 每次用getodd()从该缓冲区取出一个奇数并用 countodd()统计奇数个数;P3每次用geteven()从 该缓冲区取出一个偶数并用counteven()统计偶数 个数。请用信号量机制实现这三个进程的同步与 互斥活动,并说明所定义信号量含义,要求用伪 代码描述。
作业
• 2、设有两个优先级相同的进程P1和P2如下。信号量S1和S2的初值 均为0,试问:P1和P2并发执行后,x、y、z的值各是多少?
进程P1 y=1; y=y+2; V(s1); z=y+1;
进程P2
x=1; x=x+1; P(s1); x=x+y; V(s2); z=z+x;
P(s2);
y=z+y;
作业
• 3、在一个盒子里,混装了个数相同的围棋白子和 黑子。现在要用自动分拣系统把白子和黑子分开。 设系统有两个进程P1和P2,其中P1拣白子,P2 拣黑子。规定每个进程每次只拣一子。当一个进 程正在拣子时,不允许另一个进程同时拣子;当 一个进程拣一个子后,必须让另一个进程去拣。 试写出这两个并发进程能正确执行的程序。
进程P3 While(true)
{
P(even); P(mutex); geteven(); V(mutex); V(empty); counteven(); } } coend }
作业
• 1、进程间存在哪几种制约关系?各是什么 原因引起的?以下活动各属于哪种制约关 系? (1)若干学生去图书馆借书 (2)两队进行篮球比赛 (3)流水线生产的各道工序 (4)商品生产和社会消费
作业
• 4、桌子上有一个盘子,最多可容纳2个水 果,每次只能放入或取出一个水果。爸爸 专门向盘子放苹果,妈妈专门向盘子放桔 子。两个儿子专等吃盘子中的桔子,两个 女儿专等吃盘子中的苹果。请用P、V操作 实现爸爸、妈妈、儿子、女儿之间的同步 与互斥关系。
作业
• 5、假设有一座东西向的车辆单行道的桥,每次允 许同方向的若干车辆通过。在桥上没有车辆时, 任何一端的车辆都允许上桥通过,当有车辆上桥 后,同端的车辆可以继续上桥,但另一端的车辆 不能上桥。请用P、V操作实现东西两端车过桥问 题。
• 假设上述问题中,桥上最多可载重4辆汽车,该如 何实现?
ຫໍສະໝຸດ Baidu
示例
解:(1)互斥问题:缓冲区是一个互斥资源,因此设置互斥信号量mutex。 (2)同步问题:P1和P2因为奇数的放置与读取而同步,设置同步信号量odd;P1和P3因为偶数的放置与 读取而同步,设置同步信号量even;P1、P2和P3因为共享缓冲区,设置同步信号量empty。 P1、P2、P3三个进程的同步与互斥活动描述如下: semaphore mutex=1;//缓冲区操作互斥信号量 semaphore odd=0, even=1;//奇数、偶数进程的同步信号量 semaphore empty=N;//空缓冲区单元个数信号量 main() { cobegin 进程P2 { While(true) 进程P1 while(true) { { P(odd); number=produce(); P(empty); P(mutex); P(mutex); getodd(); put(); V(mutex); V(mutex); if (number%2 == 0) V(empty); V(even); else countodd(); V(odd); } }
解题规范示例
• 三个进程P1、P2、P3互斥使用一个包含N(N>0) 个单元的缓冲区,P1每次用produce()生成一个正 整数,并用put()送入缓冲区的某一空单元中;P2 每次用getodd()从该缓冲区取出一个奇数并用 countodd()统计奇数个数;P3每次用geteven()从 该缓冲区取出一个偶数并用counteven()统计偶数 个数。请用信号量机制实现这三个进程的同步与 互斥活动,并说明所定义信号量含义,要求用伪 代码描述。
作业
• 2、设有两个优先级相同的进程P1和P2如下。信号量S1和S2的初值 均为0,试问:P1和P2并发执行后,x、y、z的值各是多少?
进程P1 y=1; y=y+2; V(s1); z=y+1;
进程P2
x=1; x=x+1; P(s1); x=x+y; V(s2); z=z+x;
P(s2);
y=z+y;
作业
• 3、在一个盒子里,混装了个数相同的围棋白子和 黑子。现在要用自动分拣系统把白子和黑子分开。 设系统有两个进程P1和P2,其中P1拣白子,P2 拣黑子。规定每个进程每次只拣一子。当一个进 程正在拣子时,不允许另一个进程同时拣子;当 一个进程拣一个子后,必须让另一个进程去拣。 试写出这两个并发进程能正确执行的程序。
进程P3 While(true)
{
P(even); P(mutex); geteven(); V(mutex); V(empty); counteven(); } } coend }
作业
• 1、进程间存在哪几种制约关系?各是什么 原因引起的?以下活动各属于哪种制约关 系? (1)若干学生去图书馆借书 (2)两队进行篮球比赛 (3)流水线生产的各道工序 (4)商品生产和社会消费
作业
• 4、桌子上有一个盘子,最多可容纳2个水 果,每次只能放入或取出一个水果。爸爸 专门向盘子放苹果,妈妈专门向盘子放桔 子。两个儿子专等吃盘子中的桔子,两个 女儿专等吃盘子中的苹果。请用P、V操作 实现爸爸、妈妈、儿子、女儿之间的同步 与互斥关系。
作业
• 5、假设有一座东西向的车辆单行道的桥,每次允 许同方向的若干车辆通过。在桥上没有车辆时, 任何一端的车辆都允许上桥通过,当有车辆上桥 后,同端的车辆可以继续上桥,但另一端的车辆 不能上桥。请用P、V操作实现东西两端车过桥问 题。
• 假设上述问题中,桥上最多可载重4辆汽车,该如 何实现?
ຫໍສະໝຸດ Baidu
示例
解:(1)互斥问题:缓冲区是一个互斥资源,因此设置互斥信号量mutex。 (2)同步问题:P1和P2因为奇数的放置与读取而同步,设置同步信号量odd;P1和P3因为偶数的放置与 读取而同步,设置同步信号量even;P1、P2和P3因为共享缓冲区,设置同步信号量empty。 P1、P2、P3三个进程的同步与互斥活动描述如下: semaphore mutex=1;//缓冲区操作互斥信号量 semaphore odd=0, even=1;//奇数、偶数进程的同步信号量 semaphore empty=N;//空缓冲区单元个数信号量 main() { cobegin 进程P2 { While(true) 进程P1 while(true) { { P(odd); number=produce(); P(empty); P(mutex); P(mutex); getodd(); put(); V(mutex); V(mutex); if (number%2 == 0) V(empty); V(even); else countodd(); V(odd); } }