资源描述:
《操作系统补充习题》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、补充习题一、作业的周转时间二、计算作业周转时间三、P/V操作例子四、银行家算法五、存储分配与地址变换六、磁盘调度及设备管理概念七、磁盘空闲块的成祖分配算法八、概念复习题练习题一个32位的虚拟存储系统有两级页表,其逻辑地址中,第22到31位是第一级页表,12位到21位是第二级页表,页内偏移占0到11位。一个进程的地址空间为4GB,如果从0XC0000000开始映射4MB大小页表,请问第一级页表所占的4KB空间映射在什么位置,并说明理由。(注意B代表字节,一个32位地址占4字节)一、作业的周转时间作业号作业提交时间所需CPU时间(分)作业长度(KB)开始执行
2、时间作业完成时间周转时间(分)T=完成–提交110:002515210:203060310:202540410:301520510:351030有5个作业,到达的时间、所需执行时间、所需存储容量如下表所示。假定内存容量为100KB,采用可变分区存储管理方法,作业在内存中不能移动,并且假定内存中的就绪作业平分CPU时间,采用先来先服务调度策略,试求各作业开始执行的时间、完成的时间和周转时间,并填入表中。(不计作业换进换出时间和其它的开销)10:2510:0010:2511:2010:5011:2011:1511:3011:4011:452560557565
3、平均周转时间=(25+60+55+75+65)/5=56(分钟)25510二、计算作业周转时间操作系统中采用多道程序设计技术以提高CPU及各种资源的利用率,试以下例比较说明.假定系统中有一个CPU,一台I/O设备,二者可同时工作,有三个作业X,Y,Z,各自的程序行为是:I/OCPUI/OCPUI/O(单位:ms)X2020203020Y40304010Z302030①假若采用单道串行方式调度运行,总的周转时间是多少?②假若采用多道程序设计技术调度,调度优先权X最高,Y其次,Z最低,当前三个作业都已就绪.试画出调度时序图,给出各自的以及总的周转时间.二(续
4、)①各自的周转时间X=(20+20+20+30+20)=110(ms)Y=(20+20+20+30+20)+(40+30+40+10)=230(ms)Z=(20+20+20+30+20)+(40+30+40+10)+(30+20+30)=310(ms)总的周转时间=110+230+310=570,平均周转时间=570/3=190②各自的周转时间X:110(ms)Y:140(ms)Z:210(ms)总的=110+140+210=460,平均=460/3153tXYZI/oYYXXXZI/OCPUI/OCPUI/O(单位:ms)X2020203020Y40
5、304010Z30203020202020203020304010303020CPU执行时间三、P/V操作例子(司机与售票员)汽车司机与售票员之间必须协同工作,一方面,只有售票员把车门关好了,司机才能开车,因此,售票员关好车门应通知司机开车;另一方面,只有当汽车已经停下,售票员才能开门上下客,故司机停车后应通知售票员.假定某辆公共汽车上有一名司机与两名售票员.汽车当前正在始发站停车上客.试设必要的信号量并赋初值,用P、V操作写出他们的同步算法.三(续)设信号量为:doorclose=0;busstop=1;conbeginDriver:beginrepe
6、atP(doorclose);开车;到站;停车;V(busstop);乘客上/下车;foreverendconductor:beginrepeatP(busstop);开门;乘客上/下车;售票;关门;V(doorclose);开车;foreverendconend习题:一个供销商与三个喝冰水者口渴的人必须有三样东西:水、冰和茶杯才能喝到冰水。有三个人,每人手中仅有一样上述东西第四个人是服务员该人可以无限地提供这三样东西没有人喝水时,服务员便随机地提供其中的两样东西放在桌上如果这两样东西是口渴的人所需要的,则按需要收起,便可喝一杯冰水。喝完后则通知服务员,
7、此过程反复进行。写一个管程,控制口渴者和服务员的活动过程。习题解答:一个供销商与三个喝冰水者提供冰和水提供杯子和水提供杯子和冰有杯子glass有水water有冰ice}}ProcedureseverWhile(true){drinkers.Serve();}Cobeginsever;drinker1;drinker2;drinker3;coendProceduredrinker1While(true){drinkers.GetIngredients(requirementswater);drink();drinkers.NotifyServer();}P
8、roceduredrinker2While(true){drinkers.Get