14.从"互斥","空闲让进","有限等待"3个方面讨论它的正确性.若正确,则证明之.若不正确,说明理由。
programsample;
varc1,c2:integer;
procedurep1
begin
repeat
othersection1;
repeat
c1=1-c2;
untilc2!=0
criticalsection;//临界区
c1=1;
untilfalse
end
procedurep2
begin
repeat
othersection2;
repeat
c2=1-c1;
untilc1!=0
criticalsection;//临界区
c2=1;
untilfalse
end
begin
c1=1;
c2=1;
cobegin
p1;
p2;//进程p1,p2并行执行
end
分析:
1)互斥:不能实现互斥进入临界区.比如:进程p1,p2都可以在判断到c1,c2为1的时候而进入临界区.
2)空闲让进:可以实现.当一个进程离开临界区后,进程p2还未来得及执行c2 = 1-c1操作时,进程p1再次先执行c1 = 1-c2,可以立即进入临界区,可能会造成进程p2长时间等待,出现"饥饿"现象.
15.解释彩票调度算法
答:彩票调度算法是一种模拟现实世界发行彩票的方法的计算机资源分配算法.其实现的基本思想是:为进程发放针对系统各种资源(如cpu占用时间)的彩票.当调度程序需要做出决策时,随机选择一张彩票,持有该彩票的进程将获得系统资源.所有的进程都是平等的.它们有相同的运行机会.若某些进程需要更多的机会,就可以被给予更多的额外彩票,以增加其中将(获得资源)的机会.
16.假设一个电影院有0,1,2三种不同的影片由观众选择放映.放映规则是:1)任一时刻最多只能放映一种影片,正在放映的影片是自动循环放映的,最后一个观众主动离开时结束当前影片的放映.2)选择当前正在放映影片的观众可立即进入,允许同时有多位选择同一影片的观众同时观看,同时观看的观众数量不受限制;3)等待观看其他影片的观众按到达顺序排队,当一中新的影片开始放映时,所有等待观看该影片的观众可以依次序进入电影院同时观看.
分析:电影院一次只能放映一部影片,希望观看的观众可能有不同的爱好,但每次只能满足部分观众的需求,即希望观看另外两部影片的用户只能等待.分别为三部影片设置三个信号量s0,s1,s2,初值分别为1,1,1电影院一次只能放一部影片,因此需要互斥使用.由于观看影片的观众有多个,因此必须分别设置三个计数器(初值都是0),用来统计观众个数.当然计数器是个共享变量,需要互斥使用。
vars=1,s0=1,s1=1,s2=1:semaphore;
varcount0=0,count1=0,count2=0;
cobegin
processvideoshow0//vcd_id=0
begin
repeat
p(s0);
count0=count0+1;
if(count0=1)p(s);
v(s0);
看影片;
p(s0);
count0=count0-1;
if(count0=1)v(s);
v(s0);
untilfalse
end
processvideoshow1//vcd_id=1
begin
repeat
p(s1);
count1=count1+1;
if(count1=1)p(s);
v(s1);
看影片;
p(s1);
count1=count1-1;
if(count1=1)v(s);
v(s1);
untilfalse
end
processvideoshow2//vcd_id=2
begin
repeat
p(s2);
count2=count2+1;
if(count2=1)p(s);
v(s2);
看影片;
p(s2);
count1=count1-1;
if(count2=1)v(s);
v(s2);
untilfalse
end
coend
17.图书馆有100个座位.读者进入时必须在一张登记表上登记,该表为每一座位列一表目,包括座位号和读者姓名.读者离开时要消掉登记内容.
varmutex=1,count=1:semaphore;
cobegin
processReaderi(i=1,2)
begin
repeat
进入图书馆;
p(count);
p(mutex);
i=获取座位号;
登记i项表目(名字,座位号);
v(mutex);
坐下阅读;
p(mutex);
消去登记项(名字,座位号)
v(mutex);
v(count);
离开;
untilfalse
end
18.盒子里装着数量相等的白子和黑子,两个进程p1,p2,p1捡白子,p2捡黑子,规定每一个进程轮流捡子且只捡一子.当一个进程正在捡子时,不允许另一个进程去捡,并设捡白子的进程先手.
分析:可以设置两个信号量s1,s2协调进程p1,p2之间的同步,由于不存在进程p1,p2之间同时取子的竞争,所以不必设置互斥信号量.又由于白先,所以信号量s1,s2的初值分别为1,0;
vars1=1,s0=0:semaphore;
cobegin
processp1
begin
repeat
p(s1);
捡白子;
v(s2);
untilfalse
end
processp2
begin
repeat
p(s2);
捡黑子;
v(s1);
untilfalse
end
19,有100名毕业生去甲,乙两公司求职,两公司合用一间接待室,其中甲公司准备招收10人,乙公司准备要15人,招完即止.两公司各有一位主管接待毕业生,每位主管每次只可接待一人,其他毕业生在接待室外排成一队等待,
分析:由于毕业生只排一队,所以只需要设置一个队列数据结构,在队列中不含甲,乙都接待过的毕业生和已被录用了的毕业生,只含标志为"A"(被甲接待过)或标志为"B"(被乙接待过)以及无标志的毕业生,此外,设置s1和s2分别为队列中甲乙正在面试的毕业生i(i=1,..100)标志,即此刻另一方不得面试该毕业生i.k1,k2为甲,乙所录取的毕业生计数,c1,c2为甲乙面试过的毕业生计数.mutex为访问队列互斥信号量,sa,sb分别为访问c1,c2的互斥信号量.需要注意的,若甲录取了一名学生,且乙没有面试过该学生,则乙的面试学生数将减少1人.可以采取如下方法:若甲所录取的学生没有被乙面试过时,给乙面试计数器c2加1(相当于乙已经面试过该生);即始终保持乙面试的人数值为100.反之,对甲也是如此.
varsa=1,sb=1,mutex=1,c1=0,c2=0,k1=0,k2=0:semaphore;
cobegin
process甲
begin
L1:p(mutex);
p(sa);
c1=c1+1;
v(sa);
if(c1<=100)then
begin
从标志为“B"且不为”Sb"或无标识的毕业生队列中选第i个学生将学生i标识为"A"和"sa"
end
v(mutex);
面试;
p(mutex);
if合格then
begin
k1=k1+1;
if(学生i的标识不含"B")then
begin
p(sb);
c2=c2+1;
v(sb);
将学生i从队列上摘除;
end
else
将学生i从队列上摘除;
else
if(学生i的标识含“B”)then
将学生i从队列上摘除
else
取消学生i的"sa"标识;
v(mutex);
if(k1<10)and(c1<100)thengotoL1
end
v(s2);
untilfalse
end
process乙
begin
L2:p(mutex);
p(sa);
c2=c2+1;
v(sb);
if(c2<=100)then
begin
从标志为“A"且不为”Sa"或无标识的毕业生队列中选第i个学生将学生i标识为"B"和"sb"
end
v(mutex);
面试;
p(mutex);
if合格then
begin
k2=k2+1;
if(学生i的标识不含"A")then
begin
p(sa);
c1=c1+1;
v(sa);
将学生i从队列上摘除;
end
else
将学生i从队列上摘除;
else
if(学生i的标识含“A”)then
将学生i从队列上摘除
else
取消学生i的"sb"标识;
v(mutex);
if(k2<10)and(c2<100)thengotoL2
end
v(s2);
untilfalse
end
分享到:
相关推荐
西安交通大学软件学院操作系统复习笔记,包含前九个章节的内容,可以查看博文https://blog.csdn.net/qq_46311811/article/details/122322967 查看内容及介绍
该资源为操作系统期末复习笔记,笔者最终也是获得了90+的成绩
操作系统复习笔记.pdf
操作系统复习笔记整理共享.pdf
对技术爱好者很有帮助,自己打开看,觉对不是垃圾内容
操作系统基本架构介绍,包括两种I/O方法,DMA,Channel, Main memory,Secondary memory,Operating system architecture
操作系统复习笔记.docx
操作系统期末复习
2012操作系统复习笔记.pdf
操作系统复习提纲用于复习操作系统考试
操作系统复习笔记成稿.pdf
电子科技大学操作系统复习笔记,里面包含例题,主要参考丁旭阳老师的课件
同济大学操作系统课程项目及复习笔记.zip同济大学操作系统课程项目及复习笔记.zip同济大学操作系统课程项目及复习笔记.zip同济大学操作系统课程项目及复习笔记.zip同济大学操作系统课程项目及复习笔记.zip同济大学...
操作系统第四版的复习笔记…… 这本书很经典,不过我们为啥要学这门课啊……汗 我已经加密过了,不能复制的,可以打印。为了防止某些同学去做小抄哈~
桂电操作系统期末复习手写笔记.pdf
操作系统复习笔记(注释).doc
天勤计算机考研2019操作系统高分笔记复习指导书
操作系统复习笔记2——进程管理,涵盖进程、线程、CPU调度、进程同步和死锁
计算机专业考研兰大,操作系统复习时整理的笔记,算是比较全面的