第二章思考练习

发布 2022-07-14 23:22:28 阅读 8946

1. 桌上有一空盘,允许放一个水果。爸爸可向盘中放苹果,也可向盘中放桔子,儿子专等吃盘中桔子,女儿专等吃盘中苹果。

规定当盘空时一次只能放一只水果供吃者取用。请用p、v原语实现爸爸、儿子、女儿三个并发进程的同步。

分析:本题中,爸爸、儿子、女儿共用一个盘子,且盘中一次只能放一个水果。当盘子为空时,爸爸可将一个水果放入果盘中。

若放入果盘中的是桔子,则允许儿子吃,女儿必须等待;若放入的是苹果,则允许女儿吃,儿子等待。

本题实际是生产者-消费者问题的一种变形。这里,生产者放入缓冲区的产品有两类,消费者也有两类,每类消费者只消费其中固定的一类产品。

故,应设置三个信号量mutex,s1,s2,其中mutex表示盘子是否为空,初值为1;s1 表示盘中是否有桔子,初值为0;s2表示盘中是否有苹果,初值为0。

同步描述如下:

var mutex,s1,s2:semaphore: =1,0,0; /初始化。

beginparbegin

process father() 爸爸进程。

repeat

wait (mutex);

将水果放入盘中;

if (放入的是桔子) then signal (s1)

else signal(s2);

until false;

endprocess son() 儿子进程。

beginrepeat

wait (s1);

从盘中取出桔子;

signal(mutex);

吃桔子;until false;

endprocess daughter() 女儿进程。

begin

repeat

wait(s2);

从盘中取出苹果;

signal(mutex);

吃苹果;until false

end parend

end2. 在一个小盒子里存放了黑子和白子两种围棋棋子,已知黑子和白子数量皆等于n。试设计两个并发进程a和b,将这些充分混合在一起的棋子分拣开来。

该系统约束条件: (1)a专拣白子;b专拣黑子; (2)每个进程每次只能拣一枚,且拣棋子过程是互斥的; (3)两个拣棋子进程应当交替进行,且拣白子的优先。

分析:本题是两个进程的同步问题,故只需要设计两个信号量s和m控制进程同步即可。

可定义同步信号量s和m的初始值为1和0。算法参考描述如下:

begin

var s,m:semaphore:=1,0;

int i,j:=0,0;

cobegin

process white()

begin

repeat

wait(s);

pick_up();拣一白子。

signal(m);

i:=i+1;

until i=n

endprocess black()

begin

repeat

wait(m);

pick_up();拣一黑子。

signal(s);

j:=j+1;

until j=n

endcoend

end2. 某高校计算机系开设有网络课并安排了上机实习,假设机房共有2m台机器,有2n名学生选该课,规定:(1)每两个学生组成一组,各占一台机器,协同完成上机实习;(2)只有一组两个学生到齐,且此时机房有空闲机器时,该组学生才能进入机房;(3)上机实习由一名教师检查,检查完毕,一组学生同时离开机房。

试用p、v操作模拟上机实习过程。

分析:本题的意图是进程互斥与同步问题。为了保证系统的控制流程,可专门设一个monitor进程,用于控制学生进入机房及计算机的分配使用。本题的设置意图是为了引入后文管程的内容。

上机过程描述如下:

begin

semaphore:student,computer,enter,finish,check;

student:=0;

computer:=2m;

enter:=0;

finish:=0;

check:=0;

cobegin

process procedure student()

beginsignal(student);/表示有学生到达。

wait(computer);/等待获取一台计算机。

wait(enter);/等待进入许可。

do it with partner();上机操作。

signal(finish);/上机完成。

wait(check); 等待老师检查。

signal(computer); 释放计算机资源。

endprocess procedure teacher()

beginl1:

wait(finished);/等待学生实习完成。

wait(finished);/等待另一学生完成。

check the work();检查上机工作。

signal(check);/检查完成。

signal(check); 另一学生的上机检查也已完成。

goto l1; /循环。

endprocess procedure monitor()

begin

l2: wait(student); 等待学生到达。

wait (student); 等待另一学生到达。

signal(enter); 允许学生进入。

signal(enter):/允许学生进入。

goto l2;//循环。

endcoend

end课后题25. 为某临界资源设置一把锁w,当w=1时表示关锁;当w=0时表示锁已打开,试写出开锁和关锁原语,并利用它们去实现互斥。

整型信号量:lock(w): while w=1 do no-op

w:=1;unlock(w): w:=0;

记录型信号量:lock(w): w:=w+1;

if(w>1) then block(

unlock(w): w:=w-1;

if(w>0) then wakeup(

例子:var w:semaphore:=0;

beginrepeat

lock(w);

critical section

unlock(w);

remainder section

until false;end

第二章练习与思考

一 名词解释。1 经常性调查 2 随机原则 3 调查对象 4 调查单位。二 单项选择。1 重点调查中的重点单位是 a 具有典型意义或代表性的单位。b 那些具有反映事物属性差异的品质标志的单位。c 能用以推算总体标志的单位 d 在总体中具有举足轻重的单位。2 普查是为了某种特定的目的而 a 专门组织的...

第二章思考与练习

课程作业 思考与练习 第二章网络操作基本技能。1.学完本章知识,您是否已经学会上网浏览网页?请每周至少登录1次学院的主页 查看与自己密切相关的重要通知和教学安排。答 我已经学会上网浏览网页。2.您有自己的电子信箱吗?如果没有,请上网申请一个免费的电子信箱,用来朋友 同学或老师保持联系。申请成功后给 ...

第二章练习

1在名称为form1的窗体上绘制一个命令按钮,其名称为cmd1,通过属性窗口设置窗体和命令按钮的属性来实现如下功能 1 窗体标题为 设置按钮属性 2 命令按钮的标题为 计算机等级考试 3 命令按钮的标题用三号规格黑体显示 4 程序运行后,命令按钮不显示。2 在窗体form1上画两个命令按钮,其名称分...