欢迎来到天天文库
浏览记录
ID:14316450
大小:40.50 KB
页数:5页
时间:2018-07-27
《2010年自学考试操作系统名词解释总结汇总》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、2010年自学考试操作系统名词解释总结7 A组进程活动可以给出B组和C组进程活动。 17.设自行车生产线上有一只箱子,其中有N个位置(N≥3),每个位置可存放一个车架或一个车轮;又设有三个工人,其活动分别为:工人1活动:do{加工一个车架;车架放入箱中;}while(1)工人2活动:do{加工一个车轮;车轮放入箱中;}while(1)工人3活动:do{箱中取一车架;箱中取二车轮;组装为一台车;}while(1)试分别用信号灯与PV操作、管程、会合实现三个工人的合作,要求解中不含死锁。解:用信号灯与PV操作实现三个工人的合作,管程与会合解法可仿照给出。首先不
2、考虑死锁问题,工人1与工人3、工人2与工人3构成生产者与消费者关系,这两对生产/消费关系通过共同的缓冲区相联系。从资源的角度来看,箱子中的空位置相当于工人1和工人2的资源,而车架和车轮相当于工人3的资源。定义三个信号灯如下:semaphoreempty=N;//空位置semaphorewheel=0;//车轮semaphoreframe=0;//车架三位工人的活动分别为:工人1活动:do{加工一个车架;P(empty);车架放入箱中;V(frame);}while(1)工人2活动:do{加工一个车轮;P(empty);车轮放入箱中;V(wheel);}wh
3、ile(1)工人3活动:do{P(frame);箱中取一车架;V(empty);P(wheel);P(wheel);箱中取二车轮;V(empty);V(empty);组装为一台车;}while(1)分析上述解法易见,当工人1推进速度较快时,箱中空位置可能完全被车架占满或只留有一个存放车轮的位置,而当此时工人3同时取2个车轮时将无法得到,而工人2又无法将新加工的车轮放入箱中;当工人2推进速度较快时,箱中空位置可能完全被车轮占满,而当此时工人3取车架时将无法得到,而工人1又无法将新加工的车架放入箱中。上述两种情况都意味着死锁。为防止死锁的发生,箱中车架的数量不
4、可超过N-2,车轮的数量不可超过N-1,这些限制可以用两个信号灯来表达。semaphores1=N-2;semaphores2=N-1;如此,可以给出不含死锁的完整解法如下:工人1活动:do{加工一个车架;P(s1);P(empty);车架放入箱中;V(frame);}while(1)工人2活动:do{加工一个车轮;P(s2);P(empty);车轮放入箱中;V(wheel);}while(1)工人3活动:do{P(frame);箱中取一车架;V(empty);V(s1);P(wheel);P(wheel);箱中取二车轮;V(empty);V(empty)
5、;V(s2);V(s2);组装为一台车;}while(1)详细描述还应考虑对箱子单元的描述以及访问互斥问题。建议车架放在箱子的一端,车轮放在箱子的另一端,车架与车轮都采用后进先出的管理方式。 18.一座小桥(最多只能承重两个人)横跨南北两岸,任意时刻同一方向只允许一人过桥,南侧桥段和北侧桥段较窄只能通过一人,桥中央一处宽敞,允许两个人通过或歇息。试用信号灯和PV操作写出南、北两岸过桥的同步算法。解:桥上可能没有人,也可能有一人,也可能有两人。(a)两人同时过桥(b)两人都到中间(c)南(北)来者到北(南)段共需要三个信号量,load用来控制桥上人数,初值为
6、2,表示桥上最多有2人;north用来控制北段桥的使用,初值为1,用于对北段桥互斥;south用来控制南段桥的使用,初值为1,用于对南段桥互斥。semaphoreload=2;semaphorenorth=1;semaphoresouth=1; tosouth(){P(load);P(north);过北段桥;tonorth(){P(load);P(south);过南段桥;到桥中间;V(north);P(south);过南段桥;到达南岸V(south);V(load);}到桥中间V(south);P(north);过北段桥;到达北岸V(north);V(l
7、oad);} 19.某寺庙,有小和尚、老和尚若干.庙内有一水缸,由小和尚提水入缸,供老和尚饮用。水缸可容纳30桶水,每次入水、取水仅为1桶,不可同时进行。水取自同一井中,水井径窄,每次只能容纳一个水桶取水。设水桶个数为5个,试用信号灯和PV操作给出老和尚和小和尚的活动。semaphoreempty=30;//表示缸中目前还能装多少桶水,初始时能装30桶水semaphorefull=0;//表示缸中有多少桶水,初始时缸中没有水semaphorebuckets=5;//表示有多少只空桶可用,初始时有5只桶可用semaphoremutex_well=1;//用于
8、实现对井的互斥操作semaphoremutex_bigjar=1;
此文档下载收益归作者所有