操作系统大题全集_第1页
操作系统大题全集_第2页
操作系统大题全集_第3页
操作系统大题全集_第4页
操作系统大题全集_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2.进程A1,A2,...,Anl通过m个缓冲区向进程B1,B2,...,Bn2不断地发送消息,发送和接收工作遵循如下规则:(1)每个发送进程一次发送一个信息,写入一个缓冲区,缓冲区大小与消息长度一样;(2)对每一个消息,B1,B2,...,Bn2都需各接收一次,读入各自的数据区内;(3)m个缓冲区都满时,发送进程等待,没有可读的消息时,接收进程等待。试用P、V操作组织正确的发送和接收操作。解答:这是一个变形的生产和消费问题。每个缓冲区只需写一次,但需读n2次。可以把一组缓冲区看做n2组缓冲区,这样,每个生产者需要同时写n2个缓冲区组中相应的n2个缓冲区,而每一个消费者只需读它自己对应的那组缓冲区中的单元。生产者须在n2个缓冲区都为空闲是方可写入,这时,就可以用n2组信息量(avail,free)来实现这一流程,具体流程如下:BEGINintegermutex,avail[n2],full[n2];integerI;mutex:=1;forI:=1ton2dobeginavail[I]:=m;full[I]:=0;end;proceduresend[M]integerI;beginforI:=1ton2dobeginP(avail[I]);end;P(metux);将消息放入缓冲区;forI:=1ton2dobeginV(full[I]);end;V(metux)end;procedurereceive(M,I)beginP(full[I]);P(metux);从缓冲区中取消息;V(avail[I]);V(mutex);end;CobeginAi:begin……..send[M]………endBi;begin…….Receive(M,i);………end;Coend;end;3.设系统中仅有一类数量为M的独占型资源,系统中有N个进程竞争该类资源,其中各进程对该类资源的最大需求数为W,当M,N,W分别取下列值时,试判断哪些情况会发生死锁,为什么?M=2,N=2,W=1M=3,N=2W=2M=3,N=2,W=3M=5N=3W=2M=6N=3W=3解答:不会发生死锁。因为系统中只有两个进程,每个进程的最大需求量为1,且系统中资源总数为2,系统能够满足两个进程的最大资源需求量,故不会发生死锁。不会发生死锁。因为系统中有两个进程,每个进程的最大资源需求量为2,且系统中资源总数为3,无论如何分配,两个进程中必有一个进程可以获得两个资源,该进程将顺利完成,从而可以将分配给它的资源归还给系统,使另一个进程也能顺利执行完成,故不会发生死锁。可能发生死锁。因为系统中有两个进程,每个进程的最大资源需求量为3,且系统中资源总量为3,若系统先将全部资源分配给其中一个过程,则该进程将顺利完成,从而可将分配给它的资源归还给系统,使另一进程也能顺利完成,以这种方式分配资源时不会发生死锁;若系统将两个资源分配给一个过程,而剩余的一个资源分配给另一个进程,则系统中没有空闲资源,而每个进程都需要等待资源,此时发生死锁。不会发生死锁。因为系统中有3个过程,每个进程的最大资源需求量为2,CCBBBAAACCBBBAAAI/O计算I/O计算CCBB时间ms时间ms020506070809010012014002050607080901001201407.在南京大学和天津大学的之间有一条弯曲的小路,其中从S到T一段路每次只允许一辆自行车通过,但中间有一个小的安全岛M(同时允许两辆自行车停留),可供两辆自行车在以从两端进入小路情况下错车使用,如下图所示,试设计一个算法,使来往的自行车辆均靠顺利通过。MM南开大学天津大学SKLT解答:对于这一类问题,关键在于正确分析所需控制的对象、工作流程以及控制关系。在这一问题中,根据从S到T路段的特点,可以把它分为3个小段:从S到K,驶进安全岛M,从L到T。路段S到K及L到T,只允许一辆自行车通过(即一个进程使用),而安全岛M允许两辆自行车通过(即两个进程使用)。对它们分别用3个信号量来管理。再注意到同时最多只能由一个方向的一辆自行车通过,因此每个方向的自行车还要用一个信号量来控制。用bikeT_to_N和bikeN_to_T分别表示从天津大学到南开大学和从南开大学到天津大学两个方向的自行车。控制流程如下:BeginInteger:N_to_T,T_to_N,L,M,K;N_to_T:=1;T_to_N:=1;L:=1;M:=2;K:=1;ProcedurebikeT_to_N()BeginP(T_to_N);P(L);GothroughTtoL;P(M);GointoM;V(L);P(K);GothroughKtoS;V(M);V(K);V(T_to_N);End;ProcedurebikeN_to_T()BeginP(N_to_T);P(K);GothroughStoK;P(M);GointoM;V(K);P(L);GothroughLtoT;V(M);V(L);V(N_to_T);End;End;8.例:在银行家算法中,若出现表2-4所示的资源分配情况,试问:该状态是否安全?如果进程P2提出请求Request2(1,2,2,2)后,系统能否将资源分配给它。表2-4资源分配表资资源情况进程AllocationNeedAvailableABCDABCDABCDP0003200121622P110001750P213542356P303320652P400140656解答:(1)利用银行家算法对此时刻的资源分配情况进行分析,可得表2-5所示的安全性分析情况。 表2-5安全性检查表资资源情况进程WorkNeedAllocationWork+AllocationFinishABCDABCDABCDABCDP01622001200321654truetruetruetruetrueP31654065203321986P419861750001419910P1199100656100029910P229910235613543121414从以上情况分析可以看出,此时存在一个安全序列{p0,p3,p4,p1,p2},故该状态是安全的。(2)P2提出请求Request2(1,2,2,2)。按银行家算法进行检查:Request2(1,2,2,2)<=need(2,3,5,6)Request2(1,2,2,2)<=available(1,6,2,2)试分配并修改相应数据结构,资源分配情况如表2-6所示。表2-6P2申请资源后的资源分配表资资源情况进程AllocationNeedAvailableABCDABCDABCDP0003200120400P110001750P213541134P303320652P400140656再利用安全性检查算法检查系统是否安全,可用资源available(0,4,0,0)已不能满足任何进程的需要,此时系统不能将资源分配给P2。9.有桥如图2-7所示。北北南桥车流如箭头所示,桥上不允许两车交会,但允许同方向多辆车依次通行(即桥上可以有多个同方向的车)。用P、V操作实现交通管理以防止桥上阻塞。解答:由于桥上不允许两车相会,故桥应该互斥访问,而同一方向上允许多辆车一次通过,即临界区允许多个实例访问。用同一信号量来互斥访问临界区。由于不能允许某一方向的车完全“控制桥”,应保证最多某一方向上连续通过一定数量的车后,必须让另一方向的车通过,可以通过3个信号量来控制。具体程序如下:BeginInteger:mutex,availn,abails;Mutes:=0;avialn:=m;avails:=m;CobeginSouth:beginP(avails);P(mutex);过桥;V(mutex);V(avails);End;North:beginP(availn);P(mutex);过桥;V(mutex);V(availn);End;Coend;End;10.设系统中有三类资源A、B和C,又设系统中有5个进程P1,P2,P3,P4和P5.在T0时刻系统状态如下: 最大需求量 已分配资源量 剩余资源量 ABC ABC ABC P1864 121 211 P2433 311 P31013 413 P4333 322 P5546 113(1)系统是否处于安全状态?如是,则给出进程安全序列.(2)如果进程P5申请1个资源类A、1个资源类B和1个资源类C,能否实施分配?为什么?答案:(1)最大需求量 已分配资源量 剩余资源量尚需要量 ABC ABC ABCABC P1864 121 211743 P2433 311122 P31013 413600 P4333 322011 P5546 113433系统是处于安全状态,安全序列为:P4,P2,P1,P3,P5(2)P5申请(1,1,1)最大需求量 已分配资源量 剩余资源量尚需要量 ABC ABC ABCABC P1864 121 100743 P2433 311122 P31013 413600 P4333 322011 P5546 224322不能实施分配,因为分配后找不到安全序列,系统将处于不安全状态.31.有三个进程PA,PB和PC合作解决文件打印问题:PA将文件记录从磁盘读入主存的缓冲区1,每执行一次读一个记录;PB将缓冲区1的内容复制到缓冲区2,每执行一次复制一个记录;PC将缓冲区2的内容打印出来,每执行一次打印一个记录。缓冲区的大小等于一个记录大小。请用P,V操作来保证文件的正确打印。解答:在本题中,进程PA,PB和PC之间的关系为:PA与PB共用一个单缓冲区,而PB又与PC共用一个单缓冲区,其合作方式可用图2-10表示,当缓冲区1为空时,进程PA可将一个记录读入其中;若缓冲区1中有一个数据且缓冲区2为空,则进程PB可将记录从缓冲区1复制到缓冲区2中;若缓冲区2中有数据,则进程PC可以打印记录,在其他条件下,相应进程必须等待。事实上,这是一个生产者—消费者的问题打印缓冲区1打印缓冲区1缓冲区2PA从磁盘读入PBPC复制图2-10进程间的合作方式为遵循这一同步规则。应设置四个信号量empty1,empty2,full1,full2,信号量empty1及empty2分别表示缓冲区1及缓冲区2是否为空,其初值为1;信号量full1,full2分别表示缓冲区1及缓冲区2是否有记录可供处理,其初值为0。其同步描述如下:intempty1=1;intempty2=1; intfull1=0;intfull2=0; main(){cobegin PA();PB();PC();coend}PA(){while(1){从磁盘读一个记录;P(empty1);将记录存入缓冲区1;V(full1);}}PB(){while(1){P(full1);从缓冲区1中取出记录;V(empty1);P(empty2);将记录存入缓冲区2;V(full2);}}PC(){while(1){P(full2);从缓冲区2中取出记录;V(empty2);打印记录;}}本题也是一个典型生产者—消费者的问题,其中的难点在于PB既是一个生产者又是一个消费者。11.有一个虚拟存储系统,每个进程在内存占有3页数据区、1页程序区.刚开始时数据区为空.有以下访页序列:1、5、4、1、2、3、2、1、5、4、2、4、6、5、1试给出下列情形下的缺页次数:(1)系统采用先进先出(FIFO)淘汰算法.(2)系统采用最近最少使用(LRU)淘汰算法.12.有个一虚拟存储系统,每个进程在内存占有3页数据区,刚开始时数据区为空.有以下访页序列:2、3、4、5、3、4、1、2、3、5、1、4、2、4、5、1、3、2、1、3试给出下列情形下的缺页次数:(1)系统采用先进先出(FIFO)淘汰算法.(2)系统采用最近最少使用(LRU)淘汰算法.用PV操作解决读者写者问题的正确程序如下:beginS,Sr:Semaphore;rc:integer;

S:=1;Sr:=1;rc:=0;cobeginPROCESSReaderi(i=1,2…)

beginP(Sr)

rc:=rc+1;

ifrc=1thenP(S);

V(Sr);

readfile;

P(Sr);

rc:=rc-1

ifrc=0thenV(S);

V(Sr);

end;

PROCESSWriterj(j=1,2…)

beginP(S);

Writefile;

V(S)

end;

coend;end;

请回答:(1)信号量Sr的作用;(2)程序中什么语句用于读写互斥,写写互斥;(3)若规定仅允许5个进程同时读怎样修改程序?答:(1)Sr用于读者计数rc的互斥信号量;(2)ifrc=1thenP(S)中的P(S)用于读写互斥,写者进程中的P(S)用于写写互斥,读写互斥。(3)程序中增加一个信号量S5,初值为5,P(S5)语句加在读者进程P(Sr)之前,V(S5)语句加在读者进程第2个V(Sr)之后。

2.考虑一个由8个页面、每页有1024个字节组成的逻辑空间,把它装入到有32个物理块的存储器中,问:(1)逻辑地址需要多少二进制位表示?(2)物理地址需要多少二进制位表示?

因为页面数为8=23,故需要3位二进制数表示。每页有1024个字节,1024=210,于是页内地址需要10位二进制数表示。32个物理块,需要5位二进制数表示(32=25)

(1)页的逻辑地址由页号和页内地址组成,所以需要3+10=13位二进制数表示。

(2)页的物理地址由块号和页内地址的拼接,所以需要5+10=15位二进制数表示。

1.某虚拟存储器的用户编程空间共32个页面,每页为1KB,内存为16KB。假定某时刻一用户页表中已调入内存的页面的页号和物理块号的对照表如下:页号物理块号051102437

计算逻辑地址0A5C1.解:页式存储管理的逻辑地址分为两部分:页号和页内地址。由已知条件“用户编程空间共32个页面”,可知页号部分占5位;由“每页为1KB”,1K=210,可知内页地址占10位。由“内存为16KB”,可知有16块,块号为4位。逻辑地址0A5C2.

假设一个磁盘有200个磁道,编号从0~199。当前磁头正在143道上服务,并且刚刚完成了125道的请求。如果寻道请求队列的顺序是:86,147,91,177,94,150,102,175,130问:为完成上述请求,使用最短寻道时间优先磁盘调度算法SSTF时,磁头移动的总量是多少?(要求写出分析过程)采用最短寻道时间优先磁盘调度算法SSTF,进行调度的情况为:从143道开始下一磁道移动磁道数147150130102949186175177432028835892磁头移动总量为162。设某文件的物理存储方式采用链接方式,该文件由5个逻辑记录组成,每个逻辑记录的大小与磁盘块大小相等,均为512字节,并依次存放在50、121、75、80、63号磁盘块上。(10分)文件的第1569逻辑字节的信息存放在哪一个磁盘块上?要访问第1569逻辑字节的信息,需要访问多少个磁盘块?(假如该文件的FCB在内存)答:因为:1569=512×3+33所以要访问字节的逻辑记录号为3,对应的物理磁盘块号为80。故应访问第80号磁盘块。由于采用链接方式,所以要访问第3个逻辑记录的信息,必须访问逻辑记录第0、1、2后,才能访问第3个逻辑记录,所以要访问第1569逻辑字节的信息,需要访问4个磁盘块。37.当磁头处于100号磁道时,有9个进程先后提出读写请求涉及的柱面号为63、57、34、88、91、103、76、18和128。要求:(1)写出按最短寻找时间优先算法SSTF时的调度次序;(2)计算按SSTF调度算法时的平均寻道数。答:(1)调度次序:10010391887663573418128(2)总移过的道数为:3+12+3+12+13+6+23+16+110=198平均寻道数为:198/9=22(道)34.哲学家就餐问题是一个经典的进程同步问题,该问题中描述有5个哲学家,他们的生活方式是交替地进行思考和进餐。哲学家们共用一张圆桌,分别坐在周围的椅子上。在圆桌上有5只碗和5支筷子,平时哲学家们进行思考,饥饿时便试图取用其左、右两边的筷子,只有在他拿到两支筷子时才能进餐。进餐完毕,放下筷子继续思考。为了解决哲学家就餐问题,可以用一个信号量表示一支筷子,由这5个信号量构成信号量数组:semaphorestick[5];所有信号量初值为1,第1个哲学家的活动算法可以推述如下:semaphorestick[5]={1,1,1,1,1};main(){cobeginPhilosopehr(0);Philosopehr(1);Philosopehr(2);Philosopehr(3);Philosopehr(4);Coend;Philosopehr(intI){While(true){思考;P(stick[I]);P(stick[(I+1)%5]);进餐;v(stick[I];v(stick[(I+1)%5]);}}试问上述算法是否会发生死锁?为什么?若会发生死锁,请给出一个不会发生死锁的哲学家就餐算法。34.答案上述算法可能发生死锁。例如,5个哲学家几乎同时饥饿而各自拿起左边的筷子时,使得5支筷子信号量均为0,当他们试图去拿右边筷子时,都将因无筷子拿而无限期地等待下去。对于上述算法的死锁问题有多种解决办法,这里给出两种解决方案。方案一:用额外的信号量mutex(初值为1)来控制对临界资源的使用。算法如下:Semaphoremutex=1;Philosopehr(intI){While(true){思考;P(mutex);P(stick[I]);P(stick[(I+1)%5]);进餐;v(stick[I];v(stick[(I+1)%5]);}}改进的算法实质上是对资源申请过程进行限制,即要求一次申请完所有的资源,也就是在申请两个资源的过程中不被其他进程打断。且在系统满足该进程要求之前别的进程无法申请资源,因而也就可以避免死锁。方案二:对申请资源(筷子)的进程(哲学家)进行限制,要求至多允许4个哲学家同时进餐,以保证至少有一个哲学家能够拿到两支筷子进餐,最后总会进餐完毕并释放他占有的两支筷子,以使其他哲学家可以进餐。算法如下:Semaphores=4;//用于控制同时进餐的人数Philosopehr(intI){While(true){思考;P(s);P(stick[I]);P(stick[(I+1)%5]);进餐;v(stick[I];v(stick[(I+1)%5]);v(s);}}16.在一个系统中采用分页存储管理,页的大小为4KB,允许用户进程的存储映像最大为16页,物理内存共有512内存块,试问:虚拟地址寄存器和内存地址寄存器的长度各是多少位?答:(1)页的大小为 4KB=212B,页面数为16=24,所以虚拟地址寄存器需要12+4=16位。(2)页的大小为 4KB=212B,物理块数为512=29,所以内存地址寄存器需要12+9=21位。17.考虑一个由8个页面、每页1024字节组成的存储空间,把它映射到容量为32个物理块的存储器中,试问逻辑地址和物理地址分别是多少位?为什么?答:因为每页大小为1024字节,故页内地址需要10个二进制位描述;作业的逻辑地址有8页,页号需要3个二进制位。由此可知,物理地址共需要15位。因为每个物理块与页大小相同,即大小为1024字节,故块内地址需要10个二进制位描述;内存空间容量为32块,块号需要个二进制位。由此可知,物理地址共需要15位。18.假定某页式存储器管理系统中,主存为128KB,分为32块,块号为0、1、2、3、…..、31;某作业有5块,其页号为0、1、2、3、4,被分别装入主存的3、8、4、6、9块中。有一逻辑地址为[3,70]。试求出相应的物理地址(其中方括号中的第一个元素为页号,第二个元素为页内地址,按十进制计算),并画图说明地址变换过程。答:由已知可得,块大小为128KB/32=4KB,因为块与页面大小相同,因此每页大小为4KB。再由题目可知,第3页被装入到主存第6块中,故逻辑地址[3,70]对应的物理地址为:4KB*6+70=24646。其地址变换过程如下图:页号(3)页内地址(70)页号(3)页内地址(70)38469670页号块号0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论