资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,计算机操作系统,习题课,01,本章主要内容:,1.,进程状态变迁,2.,读者,写者问题,3.,哲学家进餐问题,4.,吃水果问题,1.,进程状态变迁,某系统的进程状态变迁如图,请说明:,(,1,)引起各种状态变迁的典型事件有哪些?,(,2,)当我们观察系统中某些进程时,发现某一进程产生的一次状态变迁能引起另一进程作一次状态变迁。在什么情况下,当一个进程发生变迁,3,时能立即另一进程发生变迁,1,?,进程状态变迁,(,3,)试说明是否会发生下述因果变迁:,2,1,3,2,4,1,2.,读者,写者问题,多个进程共享一个文件,其中只读文件称为读者,只写文件称为写者。读者可以同时读,但写者只能独立写。问:,(,1,)说明进程间的相互制约关系,应设置哪些信号量?,(,2,)用,P,、,V,操作写出其同步算法。,(,3,)修改上述的同步算法,使得它对写者优先,即一旦有写者到达,后续的读者必须等待。而且无论是否有读者在读文件。,(,1,)说明进程间的相互制约关系,应设置哪些信号量?,进程间的相互制约关系:,写,-,写互斥,即不能有两个写者同时进行写操作,读,-,写互斥,即不能同时有一个读者在读,同时却有一个写者在写,读读允许,即可以有,2,个以上的读者同时读,设置两个信号量和一个共享变量,int,mutex,=1;/*,读互斥信号量(用于使读者互斥地访问共享变量,count,)*,/,int,write=1;/*,写互斥信号量*,/,int,count=0;/*,记录当前正在读文件的读者数目*,/,3.,哲学家进餐问题,有五个哲学家围坐在一圆桌旁,桌中央有一盘通心粉,每人面前有一只空盘子,每两人之间放一只筷子,每个哲学家的行为是思考,感到饥饿,然后吃通心粉,为了吃通心粉,每个哲学家必须拿到两只筷子,并且每个人只能直接从自己的左边或右边去取筷子,解,设,fork5,为,5,个信号量,初值为均,1,Philosopheri,:,while(1),思考;,P(forki,);,P(fork(i+1)%5),;,进食;,V(forki,);,V(fork(i+1)%5),;,分析,以上解法会出现死锁,为防止死锁发生可采取的措施:,1,)最多允许,4,个哲学家同时坐在桌子周围,2,)仅当一个哲学家左右两边的筷子都可用时,才允许他拿筷子(,),3,)给所有哲学家编号,奇数号的哲学家必须首先拿左边的筷子,偶数号的哲学家则反之,采用,AND,信号量集解决哲学家就餐问题,设,fork5,为,5,个信号量,初值为均,1,Philosopheri,:,while(1),思考;,Swait,(,forki,fork(i+1)%5),;,进食;,Ssignal,(,forki,fork(i+1)%5),;,4.,吃水果问题,用,P,、,V,操作实现下述问题的解。桌上有一个盘子,可以存放一个水果。父亲总是放苹果到盘子中,而母亲总是放香蕉到盘子中;一个儿子专等吃盘中的香蕉,而一个女儿专等吃盘中的苹果。,解,在本题中,父亲、母亲、儿子和女儿共用一个盘子,盘中一次只能放一个水果。当盘子为空时,父亲及母亲均可以试着将一个水果放入盘子中,但一次只能有一人成功放入水果。若放入盘子中的是香蕉,则允许儿子吃,女儿必须等待;若放入盘子中的是苹果,则允许女儿吃,儿子必须等待。,三个信号量,在本题中,应设置三个信号量,dish,、,apple,、,banana,,信号量,dish,表示盘子是否为空,其初值为,1,;信号量,apple,表示盘中是否有苹果,其初值为,0,;信号量,banana,表示盘中是否有香蕉,其初值为,0,。,
展开阅读全文