您好,欢迎来到爱学范文!

当前位置:爱学范文网>>实用资料>>20220229-操作系统作业及参考答案

20220229-操作系统作业及参考答案

标签:时间:

【综合文库】

《操作系统》作业及参考答案-20220229

1、 在生产者—消费者问题中,如果缺少了signal(full)或signal(empty),对执行结果将会有

何影响? 参考答案:

如果缺少signal(full),那么表明从第一个生产者进程开始就没有改变信号量full 值,

即使缓冲池产品已满,但full 值还是0,这样消费者进程执行wait(full)时认为缓冲池是空而被放入进程等待队列,消费者进程一直处于等待状态。

如果缺少signal(empty),假设在生产者进程向n个缓冲区投满产品后消费者进程才开始从中取产品,这时empty=0,full=n,那么每当消费者进程取走一个产品empty 值并不改变,直到缓冲池取空了,empty 值也是0,即使目前缓冲池有n 个空缓冲区,生产者进程要想再往缓冲池中投放产品也会因为申请不到空缓冲区被阻塞。

2、 在生产者-消费者问题中,如果将2个P操作,即P(full)和P(mutex)互换位置,或者P(empty)

和P(mutex)互换位置,其后果如何?如果将2个V操作,即V(full)和V(mutex)互换位

置,或者V(empty)和V(mutex)互换位置,其后果又会如何?

参考答案:

如果对调生产者(或消费者)进程中的两个P操作可能会发生死锁。(考虑系统中缓冲区全满时,若一生产者进程先执行了wait(mutex)操作并获得成功,则当再执行wait(empty)操作时,它将因失败而进入阻塞状态,它期待消费者进程执行signal(empty)来唤醒自己,在此之前,它不可能执行signal(mutex)操作,从而使试图通过执行wait(mutex)操作而进入自己的临界区的其他生产者和所有消费者进程全部进入阻塞状态,这样容易引起系统死锁。) 如果对调生产者(或消费者)进程中的两个V操作,只是影响进程对临界资源的释放次序,而不会引起系统死锁,因此可以互换位置。 3、 试修改下面生产者—消费者问题解法中的错误:

参考答案: producer: begin repeat …

producer an item in nextp;

1

wait(mutex);

wait(full); /* 应为wait(empty),而且还应该在wait(mutex)的前面 */ buffer(in):=nextp;

/* 缓冲池in指针应前移: in:=(in+1) mod n; */ signal(mutex); /* signal(full); */ until false; end

consumer: begin

repeat

wait(mutex);

wait(empty); /* 应为wait(full),而且还应该在wait(mutex)的前面 */ nextc:=buffer(out);

out:=out+1; /* 考虑循环,应改为: out:=(out+1) mod n; */ signal(mutex);/* signal(empty); */

consumer item in nextc; until false; end

4、 试利用记录型信号量写出一个不会出现死锁的哲学家进餐问题的算法。

参考答案:(略,请参考课件)

5、 在测量控制系统中的数据采集任务时,把所采集的数据送往一单缓冲区;计算任务从该单缓冲区中取出数据进行计算。试写出利用信号量机制实现两任务共享单缓冲区的同步算法。

参考答案:

解法一:.

Var mutex, empty, full: semaphore:=1, 1, 0; gather: begin repeat ……

gather data in nextp; wait(empty); wait(mutex); buffer:=nextp; signal(mutex); signal(full); until false; end compute: begin repeat …… wait(full);

2

wait(mutex); nextc:=buffer; signal(mutex); signal(empty);

compute data in nextc; until false;

end

解法二:

Var empty, full: semaphore:=1, 0; gather:

begin repeat ……

gather data in nextp; wait(empty); buffer:=nextp; signal(full); until false; end compute: begin repeat …… wait(full); nextc:=buffer; signal(empty);

compute data in nextc; until false; end

6、 设有n个进程共享一个程序段,对于如下两种情况,请问所采用的信号量初值是否相同?

各是多少?信号量的值的变化范围如何?

(1)如果每次只允许一个进程进入该程序段;

(2)如果每次最多允许m个进程(m≤n)同时进入该程序段。

参考答案:

(1)由于每次只允许一个进程进入该程序段,因此可以将该程序段看成是临界资源,应设初值为1的信号量。当没有进程进入该程序段时,信号量的值为1;当有一个进程进入该程序段且没有进程等待进入该程序段时,信号量的值为0;当有一个进程进入该程序段且有一个进程等待进入该程序段时,信号量的值为-1;最多可能有n-1个进程等待进入该程序段,所以信号量的取值范围是:-(n-1)≤信号量≤1

(2)由于每次最多允许m个进程进入该程序段,因此可以将这个程序段看成是m个程序段,每个进程使用一个程序段,应设初值为m的信号量。当没有进程进入该程序段时,信号量的值为m;当有一个进程进入该程序段且没有进程等待进入该程序段时,信号量的值为m-1;当有m个进程进入该程序段且有一个进程等待进入该程序段时,信号量的

3

值为-1;最多可能有n-m个进程等待进入该程序段,所以信号量的取值范围为:-(n-m)≤信号量≤m。

4

推荐阅读:

    想了解更多实用资料的资讯,请访问:实用资料
    下载文档

    看过《20220229-操作系统作业及参考答案》的人还看了以下文章

    延伸阅读

    寒假,我看了《居里夫人》这本书。书一开始,玛丽一个人从波兰来到当时文化和科学的中心——巴黎去求学。她的老师跟她说:“虽然你们已经是最出色的学生了,但你们不一定能成为像牛顿、伽利略一样那种手可摘星的

    各位评委,各位老师,同学们:大家好!很荣幸能再次登上这个演讲台,对评委和同学们给予我的支持表示由衷的感谢。首先,我作一个自我介绍,我叫……现为学生会宣传委员拿破仑说过:&l

    一、教学工作方面必须以新理念指导教育教学。充分备课,吃透课标和教材,力求每节课,突出重点,突破难点,排除疑点,根据新教师的校本培训计划,做到“一课一备”。认真参与集体备课,

    会计调查报告第一篇一、公司概况南京物业管理有限公司的前身是南京贸易有限公司,公司成立于__年2月12日,于__年12月8日变更为南京物业管理有限公司。注册资本为56万元人民币,是一家以物业管理为主营业

    测量实习自我鉴定(汇编15篇)自我鉴定是个人在一个阶段的自我总结,自我鉴定使我们及时找出错误并改正,不妨让我们用心总结,认真完成自我鉴定吧。自我鉴定怎么写才不会千篇一律呢?下面是小编为大家整理的测量实习自

    [实战]后期自我批评八篇范文在学习、工作或生活中出现问题或错误后,要写一篇自我批评,好好复习。写自我批评时要注意语言,避免随意。其实很多朋友都不知道怎么写自我批评的书。以下是小编整理的8本晚期自我批评

    以下是幼儿园中产阶级欢迎辞样本,推荐给大家。希望对老师有帮助!幼儿园中产阶级欢迎辞[1]大家好!我相信这个暑假一定很愉快!9月1日是我们上学的正式时间。千万别忘了!新学期,我们成了中产阶级的兄弟姐妹。

    生产企业劳动合同模板。法律意识已越来越被人们加以重视,合同也受到越来越多的人的重视。我们该如何拟定一份合同呢?爱学范文网编辑为您准备了以下关于“生产企业劳动合同模板”的内容,相信您在阅读网页内

    小学一年级数学教案模板7篇为了让学生体会学习数学的乐趣,提高学习数学的兴趣,建立学好数学的信心。我们都应该写一篇优秀的数学教案。下面是小编为大家整理的关于小学一年级数学教案模板,欢迎大家来阅读。小学一

    开学第一课高三教案开学第一课是教育部与中央电视台合作的大型公益节目。小编整理的开学第一课高三教案,喜欢的赶紧来看下啦!教学目标:1、充分认识安全工作的重要意义。2、在学习和生活中注意人身安全,饮食安全