1、计算机操作系统,杨为民,汤子瀛 哲凤屏 汤小丹 编著,2,1、有一个仓库可存放A、B两种零件,最大库容量各为m个。生产车间不断地取A和B进行装配,每次各取一个。为避免零件锈蚀,按先入库者先出库的原则。有两组供应商分别不断地供应A和B,每次一个。为保证配套和合理库存,当某种零件比另一种零件超过n(nm)个时,暂停对数量大的零件的进货,集中补充数量少的零件。试用信号量与P、V操作正确地实现它们之间的同步关系。2、设有输入进程INPUT,缓冲区B1接纳输入内容。进程MAKER对B1中的内容加工后移送到B2。进程OUTPUT负责从B2中取出内容进行打印。设有一个无穷序列供INPUT输入,B1与B2的大
2、小相同。请用PV过程写出三个进程同步工作的过程。3、有一个阅览室,共有100个座位,读者进入时必须先在一张登记表上登记,该表为每一座位列一表目,包括座号和读者姓名等,读者离开时要消掉登记的信息,试问:(1)为描述读者的动作,应编写几个程序,设置几个进程?(2)试用PV操作描述读者进程之间的同步关系。4、假定具有5个进程的进程集合PP0,P1,P2,P3,P4,系统中有三类资源A,B和C。其中A类资源有10个,B类资源有5个,C类资源有7个。假定在某时刻有如下状态,试给出Need,并说明当前系统是否处于安全状态; 如果是,给出安全序列。如果不是,说明理由。 Allocation Max Avai
3、lable A B C A B C A B C P00 1 0 7 5 3 3 3 2 P12 0 0 3 2 2 P23 0 2 9 0 2 P32 1 1 2 2 2 P40 0 2 4 3 35、某虚拟存储器的用户空间共有32个页面,每页1KB,主存16KB,假定某时刻系统为该用户的第0、1、2、3页分别分配的物理块号为5、10、4、7,试将虚拟地址0A5C变换为物理地址 。6、在一个采用页式虚拟存储管理的系统中,有一用户作业,它依次要访问的字地址序列是:115,228,120,88,446,102,321,432,260,167,若该作业的第0页已经装入主存,现分配给该作业的主存共30
4、0字,页的大小为100字,请回答下列问题:(1)按FIFO调度算法将产生 次缺页中断,依次淘汰的页号为 , , ,缺页中断率为 。(2)按LRU调度算法将产生 次缺页中断,依次淘汰的页号为 , , , ,缺页中断率为 。,3,答:按照题意,应满足以下控制关系: A零件数量- B零件数量n; B零件数量- A零件数量n; A零件数量m; B零件数量m。四个控制关系分别用信号量sa、sb、empty1和empty2实施。为遵循先入库者先出库的原则,A、B零件可以组织成两个循形队列,并增加入库指针in1、in2和出库指针out1、out2来控制顺序。,1、有一个仓库可存放A、B两种零件,最大库容量各
5、为m个。生产车间不断地取A和B进行装配,每次各取一个。为避免零件锈蚀,按先入库者先出库的原则。有两组供应商分别不断地供应A和B,每次一个。为保证配套和合理库存,当某种零件比另一种零件超过n(nm)个时,暂停对数量大的零件的进货,集中补充数量少的零件。试用信号量与P、V操作正确地实现它们之间的同步关系。,4,并发程序编制如下:var empty1,empty2,full1,full2:semaphore;mutex,sa,sb:semaphore;in1,in2,out1,out2:integer;buffer1,buffer2 :array 0.m-1 of item; empty1:=emp
6、ty2:=m; sa:=sb:=n; in1:=in2:=out1:=out2:=0;cobeginprocess producer A repeat P(empty1); P(sa); P(mutex); buffer1in1 :=A零件; in1:=(in1+1) mod m; V(mutex); V(sb); V(full1); untile false;,5,process producerB repeat P(empty2); P(sb); P(mutex); Buffer2in2 :=B零件; in2:=(in2+1) mod m; V(mutex); V(sa); V(full2
7、); untile false;process take repeatP(full1);P(full2);P(mutex);Take from buffer1out1 and buffer2out2中的A、B零件;out1:=(out1+1) mod m;out2:=(out2+1) mod m;V(mutex);V(empty1);V(empty2);把A和B装配成产品;until falsecoend.,6,答:INPUT进程受MAKER进程影响。B1放满信息后INPUT进程要等待-等MAKER进程将其中全部信息取走,才能读入信息;MAKER进程受INPUT进程和OUTPUT进程的约束:B
8、1中放满信息后MAKER进程才可从中取出它们,并且B2被取空后MAKER进程才可将加工结果放入其中;OUTPUT进程受MAKER进程约束:B2中信息放满后OUTPUT进程才可从中取出它们,进行打印。系统设置四个信号量:B1full 缓冲区B1满,初值0B1empty 缓冲区B1空,初值1B2full 缓冲区B2满,初值0B2empty 缓冲区B2空,初值1,2、设有输入进程INPUT,缓冲区B1接纳输入内容。进程MAKER对B1中的内容加工后移送到B2。进程OUTPUT负责从B2中取出内容进行打印。设有一个无穷序列供INPUT输入,B1与B2的大小相同。请用PV过程写出三个进程同步工作的过程。
9、,7,8,答:读者的动作有两个,一是填表进入阅览室,这时要考虑阅览室里是否有座位;一是读者阅读完毕,离开阅览室,这时的操作要考虑阅览室里是否有读者。读者在阅览室读书时,由于没有引起资源的变动,不算动作变化。 算法的信号量有三个:seats表示阅览室是否有座位(初值为100,代表阅览室的空座位数);readers表示阅览室里的读者数,初值为0;用于互斥的mutex,初值为1。,3、有一个阅览室,共有100个座位,读者进入时必须先在一张登记表上登记,该表为每一座位列一表目,包括座号和读者姓名等,读者离开时要消掉登记的信息,试问:(1)为描述读者的动作,应编写几个程序,设置几个进程?(2)试用PV操
10、作描述读者进程之间的同步关系。,9,读者进入阅览室的动作描述getin:while(TRUE)P (seats); /*没有座位则离开*/P(mutex) /*进入临界区*/填写登记表;进入阅览室读书;V(mutex) /*离开临界区*/V(readers)读者离开阅览室的动作描述getout:while(TRUE)P(readers) /*阅览室是否有人读书*/P(mutex) /*进入临界区*/消掉登记;离开阅览室;V(mutex) /*离开临界区*/V(seats) /*释放一个座位资源*/,10,4、当前系统处于安全状态,安全序列如下求解:work=Available=(3,3,2)寻
11、找 Needj=work=(3,3,2)(j=0,1,2,3,4)j=1Need1=(1,2,3)=(3,3,2)work:=(3,3,2)+(2,0,0)=(5,3,2)寻找Needj=work=(5,3,2)(j=0,2,3,4)j=3Need3=(0,1,1)=(5,3,2)work:=(5,3,2)+(2,1,1)=(7,4,3)寻找Needj=work=(7,4,3)(j=0,2,4)j=4Need4=(4,3,1)=(7,4,3)work:=(7,4,3)+(0,0,2)=(7,4,5)寻找Needj=work=(7,4,5)(j=0,2)j=2Need2=(6,0,0)=(7,4
12、,5)work:=(7,4,5)+(3,0,2)=(10,4,7)寻找Needj=work=(10,4,7)(j=0)j=0work:=(10,4,7)+(0,1,0)=(10,5,7)所以安全序列为P1,P3,P4,P2,P0。,11,5、 0 A 5 C 0000 1010 0101 1100第2页对应第4块 起始地址: 0001 0000 0000 0000加起来: 0001 0010 0101 1100 1 2 5 C,12,6、 115,228,120,88,446,102,321,432,260,167分别对应第1,2,1,0,4,1,3,4,2,1内存页面,300字对应3个空闲页,第0页已经装入主存。访问页面序列: 1 2 1 0 4 1 3 4 2 1FIFO算法: 0 0 0 0 0 4 4 4 4 4 4 1 1 1 1 1 1 3 3 3 3 2 2 2 2 2 2 2 2 1* * * *FIFO算法:缺页次数为5次,依次淘汰的页面有0,1,2,最后为4,3,1页面。LRU算法:0 0 0 0 0 0 0 3 3 3 1 1 1 1 1 1 1 1 1 2 2 2 2 2 4 4 4 4 4 4* * * * *LRU算法:缺页次数6次,依次淘汰2,0,1,3,最后存在页面为1,2,4页面。,