云文档网 - 专业文章范例文档资料分享平台

2011—12操作系统复习题答案(基本全部答案)

来源:网络收集 时间:2024-05-05 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xuecool-com或QQ:370150219 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

(一)进程同步

?

进程同步1

进程P1和进程P2并发执行时满足一定的时序关系,P1的代码段S1执行完后,才能执行P2的代码段S2.为描述这种同步关系,?:试设计相应的信号量,?:给出信号量的初始值,?:给出进程P1和P2的结构

解答: ?信号量变量申明为 Typedef struct {

int value; //信号量中的值,表示资源的数量 struct PCB *L; //等待该信号量的队列 }semaphore;

设信号量semaphore synch; ?初始值为:synch.value=0 ?进程P1和P2的结构为

P1: { P2: { ? ? S1 wait(synch); signal(synch); S2 ? ? } } ?

进程同步2

问题描述:(理发店问题)一个理发店有一间配有n个椅子的等待室和一个有理发椅的理发室。如果没有顾客,理发师就睡觉;如果顾客来了二所有的椅子都有人,顾客就离去;如果理发师在忙而有空的椅子,顾客就会坐在其中一个椅子;如果理发师在睡觉,顾客会摇醒他。 ① 给出同步关系

② 设计描述同步关系的信号量;

③ 给出满足同步关系的进程结构(请完成满足同步关系的进程结构)。

解答:?顾客customer应满足的同步关系为: a:顾客来时要等空的椅子,否则不进理发室

b:座椅上的顾客要等理发椅空才有可能与别的顾客竞争理发椅,如果顾客坐上 理发椅,就要腾空其座椅给新来顾客,同时叫理发师给其理发。 c:一旦顾客理发完,就要让别的等待顾客有机会理发。

理发师应满足的同步关系为: 一旦顾客唤醒,就给顾客理发,之后进入睡觉。

?信号量定义如下:

Typedef struct {

int value; //信号量中的值,表示资源的数量 struct PCB *L; //等待该信号量的队列 }semaphore; 互斥信号量定义如下: Typedef struct { bool flag; struct PCB *L;

}binary_semaphore;

理发店问题的解决需要信号量和互斥信号量为:

semaphore chair; binary_semaphore barber_chair, hair_cut; 它们的初始值为:

chair.value=n; barber_chair.flag=1; hair_cut.flag=0;

?顾客和理发师进程分别为:

customer { barber { wait(chair); do {

waiting in the chair; wait(hair_cut);

wait(barber_chair); cutting hair; signal(hair_cut); signal(barber_chair); sitting in barber chair for haircut; }while(1) signal(chair); } }

?

进程同步2

设公共汽车上,司机和售票员的活动分别为:司机的活动为启动车辆,正常行车,到站停车;售票员的活动为

关车门,售票,开车门。

?给出在汽车不断地到站、停车、行驶过程中,司机和售票员的活动的同步关系。 ?用信号量和wait, signal操作实现他们间的协调操作。

解答:?根据一般的常识,有

售票员应满足的同步关系为:当司机停车后,才将车门打开让顾客上下车。 司机的同步关系为:当售票员关门后,才能开车.

?设互斥信号量 binary_semaphore bus_closed,bus_stopped; 初始值为bus_closed.flag=0; bus_stopped.flag=0;

//表达初始情况第一次用到信号量时情形为车门没有关,车是开着的 ?进程为:

driver { busserver { do { do {

wait(bus_closed); closing the door; bus starting up; signal(bus_closed); bus is driving; ticket selling; bus is parking; wait(bus_stopped); signal(bus_stopped); opening the door; }while(1) getting onoff the bus; } }while(1) }

?

进程同步3:

某高校计算机系开设网络课并安排上机实习,假设机房共有2m台机器,有2n名学生选该课,规定: (1) 每两个学生组成一组,各占一台机器,协同完成上机实习;

(2) 只有凑够两个学生,并且此时机房有空闲机器,门卫才允许该组学生进入机房; (3) 上机实习由一名教师检查,检查完毕,一组学生才可以离开机房。 试用信号量机制(P/V操作)实现它们的同步关系。

(1) 确定并发和顺序操作

在这个问题中,学生(student)、检查教师(teacher)和门卫(gategard)是并行操作的,因此, 有多个学生(student)进程、一

个检查教师(teacher)进程和一个门卫(gategard)进程。

(2) 确定互斥和同步的规则

gateguard:只有凑够两个学生,并且此时机房有空闲机器时,门卫才分配计算机给学生,允许该组学生进入机房; student:只有门卫分配完计算机后,学生才能进入机房上机操作。只有老师检查完毕才能离开。 Teacher:只有老师检查完学生的实习,才准许学生离开。 (3) 每个进程的操作流程

设立有学生到达标志,通知gateguard进程; 学生是否可进入? 上机实习;

设立实习完成标志,通知教师; 教师是否可检查,等待教师检查完毕; 学生释放一台计算机资源;

repeat

是否有学生1实习完成?

是否有学生2实习完成? (是否有一组学生实习完成)

检查学生实习结果; 检查完成,允许学生1离开; 检查完成,允许学生2离开; until false repeat

等待学生1到达; 等待学生2到达; 是否有可用的计算机1; 是否有可用的计算机2; 分配计算机; 设置学生1可进入标志; 设置学生2可进入标志; until false

(4) 确定信号量的个数和含义 student:是否有学生;

computer:是否有可用的计算机; enter:学生是否可以进入机房; finish:是否有学生完成实习; test: 老师是否检查完一组学生。 (5) 确定信号量的初值

在初始状态,各信号量的初值如下: student=0 学生没有到达;

compute=2m 有2m个可用的计算机;

enter=0 不允许学生进入机房,因为需要得到门卫允许; finish=0 没有学生实习完成; test=0 老师没有检查学生。 (6) 确定P、V操作的位置

设立有学生到达标志,通知gateguard进程 =>V(student) 学生是否可进入?=> P(enter) 上机实习;

设立实习完成标志,通知教师 => V(finish)

教师是否可检查,等待教师检查完毕 => P(test(i)) 学生释放一台计算机资源 => V(computer) repeat

是否有学生1实习完成?=>P(student)

是否有学生2实习完成?=>P(student) (是否有一组学生实习完成)

检查学生实习结果;

检查完成,允许学生1离开 => V(test(i)) 检查完成,允许学生2离开 => V(test(i)) until false repeat

等待学生1到达 =>P(student) 等待学生2到达 =>P(student)

是否有可用的计算机1 => P(computer) 是否有可用的计算机2 => P(computer) 分配计算机;

设置学生1可进入标志 => V(enter) 设置学生2可进入标志 => V(enter) until false

(7) P、V操作实现 程序如下: student:=0; computer:=2m; enter:=0; finish:=0; test(i):=0; parbegin

Student i: Begin

V(student); /*表示有学生到达,通知gateguard进程 */ P(enter); /*学生是否可进入*/

上机实习;

V(finish); /*实习结束,通知教师,有需要检查的学生*/ P(test(i)); /*等待教师检查完毕*/ V(computer); /*释放计算机资源} End;

. Teacher:Begin repeat

P(finish); /*是否有需要检查的学生,等待实习完成*/ P(finish); /*是否有需要检查的学生,等待实习完成*/ 选出可检查的第i组学生;

检查第i组学生实习结果;

V(test(i)); /*检查完成*/ V(test(i)); /*检查完成*/ until false End; Gategard:Begin repeat.

P(student); /*等待学生到达*/ P(student); /*等待另一学生到达*/ P(computer); /*是否有可用的计算机*/ P(computer); /*是否有可用的计算机*/ 分配计算机;

V(enter); /*设置学生1可进入标志*/ V(enter); /*设置学生2可进入标志*/ untile false End; Parend;

在student进程中,如果在一个学生到达后,立即向gateguard进程发信号,在gateguard进程为其分配计算机后,该学生才被允许进入机房,因此避免了让该学生争夺计算机的使用权和死锁的发生。

进程同步4:

多个进程对信号量S进行了5次 P操作,2次V操作后,现在信号量的值是 -3,与信号量S相关的处于阻塞状态的进程有几个?信号量的初值是多少?

(1) 因为S的当前值是-3,因此因为S处于阻塞状态的进程有3个;

(2) 因为每进行一次P(S)操作,S的值都减1,每执行1次V操作S的值加1,故信号量的初值为-3+5-2=0;

进程同步5:

使用多个进程计算Y=F1(X)+F2 (X). 解

(1) 确定并发和顺序操作

在这个问题中,F1(X)和F2 (X)的计算是可以并行处理的,因此F1(X)和F2 (X)可以分别

百度搜索“yundocx”或“云文档网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,云文档网,提供经典教育范文2011—12操作系统复习题答案(基本全部答案)在线全文阅读。

2011—12操作系统复习题答案(基本全部答案).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.yundocx.com/fanwen/915595.html(转载请注明文章来源)
Copyright © 2018-2022 云文档网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:370150219 邮箱:370150219@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:7 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219