第4章 进程同步与死锁习题答案
4.2 进程同步习题

【例】现有4个进程R1,R2,W1,W2。它们共享 可以存放一个数据的缓冲器B。进程R1每次把磁 盘上读出的一个数据存到缓冲器B中,供进程W1 打印输出;进程R2每次从键盘上读一个数据存放 到缓冲器B,供W2打印输出。当一个进程把数据 存放到缓冲器后,在该数据还没有打印输出之前 不准任何进程再想缓冲器中存数据。当一个进程 已把缓冲器中的数据打印输出后,在缓冲器中还 没有存如新数据之前不准任何进程再从缓冲器中 取数打印。问怎样用PV操作使这4个进程并发执 行时能相互协作地工作?
• Semaphore Customers = 0; • Semaphore Barber = 0; • Mutex accessSeats = 1; • int NumberOfFreeSeats = N; //total number of seats
Customer() { while(true) Barbers() { { P(accessSeats); //lock while(true) if(NumberOfFreeSeats >0) { { P(customers); NumberOfFreeSeats--; //等待顾客,睡眠 V(customers);//通知理发师 P(accessSeats); //lock V(accessSeats);//unlock NumberOfFreeSeats++; P(barbers);//等待理发师 V(accessSeats); //unlock 顾客理发 理发中… } V(barbers) ; else }//while V(accessSeats); } }//while }
3 两个进程可以改为 semaphore S1=1 semaphore S2=0 Process X L1:P(S1) 使用资源r V(S2) goto L1
死锁习题及答案

死鎖習題及答案一、填空題1.進程の“同步”和“互斥”反映了進程間①和②の關系。
【答案】①直接制約、②間接制約【解析】進程の同步是指在異步環境下の並發進程因直接制約而互相發送消息,進行相互合作、相互等待,使得各進程按一定の速度執行の過程;而進程の互斥是由並發進程同時共享公有資源而造成の對並發進程執行速度の間接制約。
2.死鎖產生の原因是①和②。
【答案】①系統資源不足、②進程推進路徑非法【解析】死鎖產生の根本原因是系統の資源不足而引發了並發進程之間の資源競爭。
由於資源總是有限の,我們不可能為所有要求資源の進程無限地提供資源。
而另一個原因是操作系統應用の動態分配系統各種資源の策略不當,造成並發進程聯合推進の路徑進入進程相互封鎖の危險區。
所以,采用適當の資源分配算法,來達到消除死鎖の目の是操作系統主要研究の課題之一。
3.產生死鎖の四個必要條件是①、②、③、④。
【答案】①互斥條件、②非搶占條件、③占有且等待資源條件、④循環等待條件【解析】互斥條件:進程對它所需の資源進行排它性控制,即在一段時間內,某資源為一進程所獨占。
非搶占條件:進程所獲得の資源在未使用完畢之前,不能被其它進程強行奪走,即只能由獲得資源の進程自己釋放。
占有且等待資源條件:進程每次申請它所需の一部分資源,在等待新資源の同時,繼續占有已分配到の資源,循環等待條件:存在一進程循環鏈,鏈中每一個進程已獲得の資源同時被下一個進程所請求。
4.在操作系統中,信號量是表示①の物理實體,它是一個與②有關の整型變量,其值僅能由③原語來改變。
【答案】①資源,②隊列,③P-V【解析】信號量の概念和P-V原語是荷蘭科學家E.W.Dijkstra提出來の。
信號量是一個特殊の整型量,它與一個初始狀態為空の隊列相聯系。
信號量代表了資源の實體,操作系統利用它の狀態對並發進程共享資源進行管理。
信號量の值只能由P-V原語來改變。
5.每執行一次P原語,信號量の數值S減1。
如果S>=0,該進程①;若S<0,則②該進程,並把它插入該③對應の④隊列中。
操作系统课后题答案

精品文档3、何谓死锁?产生死锁的原因和必要条件是什么?死锁:两个或两个以上的进程都无限止地等待永远不会发生的事件而出现的一种状态。
产生死锁的原因:(1)竞争资源。
为多个进程所共享的资源不足,引起它们对资源的竞争而产生死锁;(2)进程推进顺序不当。
进程运行过程中,请求和释放资源的顺序不当,而导致死锁。
产生死锁必要条件:(1)互斥条件;一个资源每次仅能被一个进程使用,进程一旦申请到了资源后占为己有,则排出其它进程享受该资源。
(2)请求和保持条件;已分配到了一些资源的进程又可以申请新的资源,进程因未分配到新的资源也不释放自己占有的资源。
(3)非剥夺条件;已分配给一进程的资源不可剥夺,进程获得的资源尚未使用完毕之前,只能被占者自己释放,其它进程不能强行占用。
(4)循环等待条件;存在由两个或两个以上进程组成的循环等待链,链中的每一个进程都在等待相邻进程占用的资源。
4、引入缓冲的主要原因是什么,缓冲分为哪几种类型?在操作系统中,引入缓冲的主要原因,可归结为以下几点:(1)改善CPU与I/O设备间速度不匹配的矛盾(2)可以减少对CPU的中断频率,放宽对中断响应时间的限制(3)提高CPU和I/O设备之间的并行性缓冲有硬件缓冲和软件缓冲之分。
硬件缓冲是指以专用的寄存器作为缓冲器。
软件缓冲是指在操作系统的管理下,在内存中划出若干个单元作为缓冲区。
软件缓冲的好处是易于改变缓冲区的大小和数量,但占用了一部分内存空间。
软件缓冲根据缓冲区设置个数的多少,可分为单缓冲、双缓冲和多缓冲。
根据缓冲区的从属关系,可以分为专用缓冲区和缓冲池。
5、有几种I/O控制方式?有四种I/O控制方式,即程序I/O控制方式、中断驱动I/O控制方式、直接存储器访问DMA控制方式及I/O通道控制方式。
程序I/O方式(适用于结构简单,只需少量硬件的电路) 中断驱动I/O控制方式(适用于高效的场合,例如办公室) 直接存储器访问DMA I/O控制方式(适用于无须CPU介入的控制器来控制内存与外设之间的数据交流的场合) I/O通道控制方式(适用于以字节为单位的干预,同时实现CPU,通道和I/O设备三者并行操作的场合).。
第3章死锁习题及答案

第三章死锁习题一、填空题1.进程的“同步”和“互斥”反映了进程间①和②的关系。
【答案】①直接制约、②间接制约【解析】进程的同步是指在异步环境下的并发进程因直接制约而互相发送消息,进行相互合作、相互等待,使得各进程按一定的速度执行的过程;而进程的互斥是由并发进程同时共享公有资源而造成的对并发进程执行速度的间接制约。
2.死锁产生的原因是①和②。
【答案】①系统资源不足、②进程推进路径非法【解析】死锁产生的根本原因是系统的资源不足而引发了并发进程之间的资源竞争。
由于资源总是有限的,我们不可能为所有要求资源的进程无限地提供资源。
而另一个原因是操作系统应用的动态分配系统各种资源的策略不当,造成并发进程联合推进的路径进入进程相互封锁的危险区。
所以,采用适当的资源分配算法,来达到消除死锁的目的是操作系统主要研究的课题之一。
3.产生死锁的四个必要条件是①、②、③、④。
【答案】①互斥条件、②非抢占条件、③占有且等待资源条件、④循环等待条件【解析】互斥条件:进程对它所需的资源进行排它性控制,即在一段时间内,某资源为一进程所独占。
非抢占条件:进程所获得的资源在未使用完毕之前,不能被其它进程强行夺走,即只能由获得资源的进程自己释放。
占有且等待资源条件:进程每次申请它所需的一部分资源,在等待新资源的同时,继续占有已分配到的资源,循环等待条件:存在一进程循环链,链中每一个进程已获得的资源同时被下一个进程所请求。
4.在操作系统中,信号量是表示①的物理实体,它是一个与②有关的整型变量,其值仅能由③原语来改变。
【答案】①资源,②队列,③P-V【解析】信号量的概念和P-V原语是荷兰科学家E.W.Dijkstra提出来的。
信号量是一个特殊的整型量,它与一个初始状态为空的队列相联系。
信号量代表了资源的实体,操作系统利用它的状态对并发进程共享资源进行管理。
信号量的值只能由P-V原语来改变。
5.每执行一次P原语,信号量的数值S减1。
如果S>=0,该进程①;若S<0,则②该进程,并把它插入该③对应的④队列中。
计算机操作系统-陆丽娜-课后答案第四章

14. 设 N 为整型数,初始值为 3,两个并发进程 A 和 B 的程序如下:
process A
process B
do{ N=N+5; }
do{ print(N);
N=0;
} 若 process A 先执行了三个循环后,process A 和 process B 又并发执
行了一个循环,写出可能出现的打印值。请用 P、V 操作实现同步, 使两并发进程能正确执行。
量 S1 和 S2 初值均为 0。试问 P1、P2 并发执行后,x、y 的值各为多 少?
P1:
P2:
begin
begin
y:=1;
x:=1;
y:=y+3;
x:=x+5;
V(S1);
P(S1);
z:=y+1;
x:=x+y;
P(S2);
V(S2);
y:=z+y
end
z:=z+x;
end 答:x=10 y=9 z=15
9. 列举死锁的各种预防策略。 答: 静态分配资源策略:要求每一个进程在开始执行前就要申请它所需要 的全部资源,仅当系统能满足进程的资源申请要求时才把资源分配给 进程,该进程才能开始执行(注意,所有并发执行的进程要求的资源 总和不能超过系统拥有的资源数)。(破坏第二个条件)
按序分配资源策略:把系统中所有资源排一个顺序,对每一个资源给 一个确定的编号,规定任何一个进程申请两个以上资源时总是先申请 编号小的资源,后申请编号大的资源(或者先申请编号大的,后申请 编号小的资源)。系统按进程对资源的申请顺序来分配资源。按序分 配策略将阻止死锁 的第四个条件(循环等待条件)的出现。
end
Ⅱ 单项选择题
操作系统期末考试题和答案

操作系统期末考试题和答案一、选择题(每题2分,共20分)1. 在操作系统中,进程和程序的主要区别是()。
A. 程序是静态的,进程是动态的B. 程序是动态的,进程是静态的C. 程序是操作系统的一部分,进程是用户的一部分D. 程序是用户的一部分,进程是操作系统的一部分答案:A2. 下列关于死锁的描述中,错误的是()。
A. 死锁是指两个或多个进程在执行过程中,因争夺资源而造成的一种僵局B. 死锁产生的原因是系统资源不足C. 死锁的四个必要条件是互斥、占有和等待、不可剥夺和循环等待D. 死锁可以预防,但无法避免答案:D3. 在分页存储管理中,页表的作用是()。
A. 将逻辑地址转换为物理地址B. 将物理地址转换为逻辑地址C. 存储进程的执行状态D. 存储进程的资源分配情况答案:A4. 虚拟内存技术的主要目的是()。
A. 提高CPU的利用率B. 提高内存的利用率C. 提高I/O设备的利用率D. 提高磁盘的利用率答案:B5. 在操作系统中,文件的逻辑结构通常采用()。
A. 顺序结构B. 链接结构C. 索引结构D. 树形结构答案:A6. 操作系统中,文件的物理结构通常采用()。
A. 顺序结构B. 链接结构C. 索引结构D. 树形结构答案:B7. 在操作系统中,文件的共享是指()。
A. 多个进程可以同时访问同一个文件B. 多个进程可以同时修改同一个文件C. 多个进程可以同时创建同一个文件D. 多个进程可以同时删除同一个文件答案:A8. 在操作系统中,文件的保护是指()。
A. 防止文件被非法访问B. 防止文件被非法修改C. 防止文件被非法删除D. 以上都是答案:D9. 在操作系统中,文件的组织方式通常采用()。
A. 顺序文件B. 随机文件C. 索引文件D. 以上都是答案:D10. 在操作系统中,文件的存取方式通常采用()。
A. 顺序存取B. 随机存取C. 直接存取D. 以上都是答案:D二、填空题(每题2分,共20分)1. 操作系统的主要功能包括______、______、文件管理、设备管理和______。
操作系统第四章进程调度和死锁习题及答案

第四章一、单项选择题1.为了根据进程的紧迫性做进程调度,应采用(B )。
A.先来先服务调度算法 B. 优先数调度算法 C.时间片轮转调度法 D.分级调度算法2.采用时间片轮转法调度是为了( A)。
A.多个终端都能得到系统的及时响应 B.先来先服务C. 优先数高的进程先使用处理器 D.紧急事件优先处理3.采用优先数调度算法时,对那些具有相同优先数的进程再按( A )的次序分配处理器。
A 先来先服务 B. 时间片轮转 C. 运行时间长短 D.使用外围设备多少4. 当一进程运行时,系统强行将其撤下,让另一个更高优先数的进程占用处理器,这种调度方式是( B )。
A. 非抢占方式B.抢占方式 C. 中断方式 D.查询方式5.( B)必定会引起进程切换。
A.一个进程被创建后进入就绪态B.一个进程从运行态变成阻塞态C.一个进程从阻塞态变成就绪态6.( B)只考虑用户估计的计算机时间,可能使计算时间长的作业等待太久。
A.先来先服务算法B.计算时间短的作业优先算法C.响应比最高者优先算法 D.优先数算法7.先来先服务算法以( A )去选作业,可能会使计算时间短的作业等待时间过长。
A.进入的先后次序 B.计算时间的长短 C.响应比的高低 D.优先数的大小8.可以证明,采用( C )能使平均等待时间最小。
A.优先数调度算法 B.均衡调度算法C.计算时间短的作业优先算法 D.响应比最高者优先算法9.在进行作业调度时.要想兼顾作业等待时间和计算时间,应选取(D )。
A均衡调度算法 B.优先数调度算法C.先来先服务算法D.响应比最高者优先算法10.作业调度算法提到的响应比是指( B )。
A.作业计算时间与等待时间之比B.作业等待时间与计算时间之比C.系统调度时间与作业等待时间之比 D.作业等待时间与系统调度时间之比11.作业调度选择一个作业装入主存后,该作业能否占用处理器必须由( D )来决定。
A.设备管理 B.作业控制 C.驱动调度D.进程调度12.系统出现死锁的根本原因是( D )。
第四章进程调度与死锁习题及答案

第四章一.选择题1.预防死锁不可以去掉以下__A__条件。
A.互斥 B.请求与保持 C.不可剥夺 D.环路2.资源分配图是否可以完全简化是判断死锁的_C__。
A.充分条件 B.必要条件 C.充分必要条件 D.什么也不是3.设有4个作业同时到达,每个作业的执行时间是2min,它们在一台处理机上按单道方式运行,则平均周转时间为_B__。
A.1min B.5min C.2.5min D.8min4.若系统中有8台绘图仪,有多个进程均需要使用两台,规定每个进程一次仅允许申请一台,则至多允许_C__各进程参与竞争,而不会发生死锁。
A.5 B .6 C .7 D .85.响应比高者优先作业调度算法除了考虑进程在CPU上的运行时间,还考虑以下__D_因素。
A.输入时间B.完成时间C.周转时间D.等待时间6.产生系统死锁的原因可能是_B__。
A.一个进程进入死循环B.多个进程竞争资源出现了循环等待C.进程释放资源D.多个进程竞争共享型设备7.以下_B__方法可以解除死锁。
A.挂起进程B.剥夺资源C.提高进程优先级D.降低进程优先级8.采用有序分配资源的策略可以破坏产生死锁的__D_。
A.互斥条件B.请求与保持条件C.不可剥夺条件D.环路条件9.连个进程争夺同一个资源_B__。
A.一定死锁B.不一定死锁C.不死锁D.以上说法都不对10.以下解决死锁的方法中,属于预防策略的是_C__。
A.化简资源分配图B.银行家算法C.资源的有序分配D.死锁检测法11.下面__D_说法是对可剥夺系统的正确描述。
A.时间片轮转法是一种可剥夺式调度B.进程因等待某一事件而引起系统调度是一种可剥夺式调度C.实时系统采用可剥夺式调度D.优先级低的进程放弃CPU,让优先级高的进程运行12.以下关于调度的说法__A__正确。
A.进程通过调度得到CPUB.优先级是进程调度的主要依据,一旦确定就不能改变C.在单CPU的系统中,任何时刻都有一个进程处于运行状态D.进程申请CPU得不到时,其状态为阻塞13.既考虑进程的等待时间,又考虑进程的执行时间的调度算法是__A__。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
由③式和④式可以得到∑Need[i] +∑Allocation[i]>=0+m+n=m+n⑤
4.让权等待。当进程不能进入临界区时,应立即放弃占用CPU,以使其它进程有机会得到CPU的使用权,以免陷入“饥饿”状态。
(4)整型信号量是否能完全遵循同步机构的四条基本准则?为什么?
解:
不能。在整型信号量机制中,未遵循“让权等待”的准则。
(5)在生产者-消费者问题中,若缺少了V(full)或V(empty),对进程的执行有什么影响?
{
while(true)
{
item=ProducerConsumer.remove;
consume(item)
}
}
(9)进程的高级通信机制有哪些?请简要说明。
解:
进程的高级通信机制分为三大类:共享存储系统、消息传递系统和管道通信系统。
1.共享存储器系统:在共享存储器系统中,相互通信的进程通过共享某些数据结构或共享存储区实现进程之间的通信。该系统又可进一步细分为两种方式:基于共享数据结构的通信方式和基于共享存储区的通信方式。
(2)进程执行时为什么要设置进入区和退出区?
解:
为了实现多个进程对临界资源的互斥访问,必须在临界区前面增加一段用于检查欲访问的临界资源是否正被访问的代码,如果未被访问,该进程便可进入临界区对资源进行访问,并设置正被访问标志,如果正被访问,则本进程不能进入临界区,实现这一功能的代码成为“进入区”代码;在退出临界区后,必须执行“退出区”代码,用于恢复未被访问标志。
解:
如果缺少了V(full),那么表明从第一个生产者进程开始就没有对信号量full值改变,即使缓冲池存放的产品已满了,但full的值还是0,这样消费者进程在执行P(full)时会认为缓冲池是空的而取不到产品,那么消费者进程则会一直处于等待状态。
如果缺少了V(empty),例如在生产者进程向n个缓冲区放满产品后消费者进程才开始从中取产品,这时empty=0,full=n,那么每当消费者进程取走一个产品时empty并没有被改变,直到缓冲池中的产品都取走了,empty的值也一直是0,即使目前缓冲池有n个空缓冲区,生产者进程要想再往缓冲池中投放产品会因申请不到空缓冲区而被阻塞。
(3)同步机构需要遵循的基本准则是什么?请简要说明。
解:
同步机制都应遵循下面的4条准则:
1.空闲让进。当无进程处于临界区时,允许进程进入临界区,并且只能在临界区运行有限的时间。
2.忙则等待。当有一个进程在临界区时,其它欲进入临界区的进程必须等待,以保证进程互斥地访问临界资源。
3.有限等待。对要求访问临界资源的进程,应保证进程能在有限时间内进入临界区,以免陷入“饥饿”状态。
(15)考虑由n个进程共享的具有m个同类资源的系统,如果对于i=1,2,3,…,n,有Need[i]>0并且所有进程的最大需求量之和小于m+n,试证明系统不会产生死锁。
解:
本题中只有一种资源,不妨设Max[i]为第i个进程的资源总共需要量,Need[i]为第i个进程还需要的资源数量,Allocation[i]表示第i个进程已经分配到的资源数量,Available为系统剩余的资源数,其中i=1,2,3,…,n。
begin
parbegin
producer: begin
repeat
.
.
.
produce an item innextp;
.
.
.
Swait(empty,mutex);
buffer(in):=nextp;
in:=(in+1) mod n;
Ssignal(mutex, full);
until false;
所以先试着把P2所申请的资源分配给它,Available变为(2,3,3,0)得到系统状态如下表所示:
Allocation
Need
Available
A
B
C
D
A
B
C
D
A
B
C
D
P0
0
0
2
2
0
0
4
3
2
3
3
0
P1
1
1
0
0
2
6
3
0
P2
3
2
1
4
2
1
0
4
P3
2
0
0
0
4
0
2
0
P4
0
2
2
2
0
5
5
4
然后进行安全性检测:
解:
系统中不会发生死锁的最小资源数量是13,这样可以保证当每一个进程都占有4个资源的时候,有一个进程可以获得最后一个资源后被运行,运行完毕后释放资源,于是其余进程也能顺利运行完,所以不会死锁。
(14)在解决死锁问题的几个方法中,哪种方法最易于实现,哪种方法使资源的利用率最高?
解:
预防死锁这个方法实现简单,效果突出;避免死锁这种方法系统吞吐量和资源利用率较高。
假设此系统可以发生死锁。
系统剩余的资源数量为Available(Available>=0),由假设,因为系统处于死锁状态,所以Available个资源无法分配出去,所以每个进程的Need[i]都大于Available,
即Need[i]>=Available+1
所以∑Need[i]>=n*(Available+1)=n*Available+n,①
解:
所谓死锁是指在一个进程集合中的所有进程都在等待只能由该集合中的其它一个进程才能引发的事件而无限期地僵持下去的局面。
产生死锁的原因可以归结为两点:1)竞争资源,2)各进程之间的推进顺序不当。
产生死锁的必要条件有四个:1)互斥条件,2)不剥夺条件,3)请求和保持条件,4)环路条件。
(11)死锁的预防策略有哪些?请简要说明。
2.摒弃不剥夺条件:要摒弃“不剥夺条件”,可以使用如下策略:进程在需要资源时才提出请求,并且进程是逐个地申请所需资源,如果一个进程已经拥有了部分资源,然后又申请另一个资源而不可得时,其现有资源必须全部释放。在这种方法中,进程只能在获得其原有资源和所申请的新资源时才能继续执行。
3.摒弃环路等待条件:为确保环路等待条件不成立,可以在系统中实行资源有序分配策略,即系统中的所有资源按类型被赋予一个唯一的编号,每个进程只能按编号的升序申请资源。
void insert(intitem)
{
if (count==N) wait(full);
insert(item);
count=count+1;
if (count==1) signal(empty);
}
intremover()
{
if (count==0) wait(empty);
remove=remove_item;
P3
4 0 2 0
2 000
P4
0 554
0 222
解:
现在对该时刻的状态进行安全分析:
由于Available向量为(3,4,4,1),所以Work向量初始化为(3,4,4,1)
此时的Work小于任意的Need[i]向量,所以系统处于不安全状态
由于Request2(1,1,1,1)<Available(3,4,4,1)且Request2(1,1,1,1)<Need2(1,1,1,2)
解:
死锁的预防策略有三,说明如下:
1.摒弃请求和保持条件:为摒弃请求和保持条件,系统中需要使用静态资源分配法,该方法规定每一个进程在开始运行前都必须一次性地申请其在整个运行过程中所需的全部资源。此时,若系统有足够的资源,就把进程需要的全部资源一次性地分配给它;若不能全部满足进程的资源请求,则一个资源也不分给它,即使有部分资源处于空闲状态也不分配给该进程。这样,当一个进程申请某个资源时,它不能占有其它任何资源,在进程运行过程中也不会再提出资源请求。这种方法破坏了请求和保持条件,从而避免死锁的发生。
count=count-1;
if (count==N-1) signal(full);
}
count=0;
end monitor
void producer()
{
while (true)
{
item=produce_item;
ProducerConsumer.insert(item);
}
}
void consumer()
第
(1)什么是进程同步?什么是进程互斥?
解:
同步是进程间的直接制约关系,这种制约主要源于进程间的合作。进程同步的主要任务就是使并发执行的各进程之间能有效地共享资源和相互合作,从而在执行时间、次序上相互制约,按照一定的协议协调执行,使程序的执行具有可再现性。
进程互斥是进程间的间接制约关系,当多个进程需要使用相同的资源,而此类资源在任一时刻却只能供一个进程使用,获得资源的进程可以继续执行,没有获得资源的进程必须等待,进程的运行具有时间次序的特征,谁先从系统获得共享资源,谁就先运行,这种对共享资源的排它性使用所造成的进程间的间接制约关系称为进程互斥。互斥是一种特殊的同步方式。
end
consumer: begin
repeatBiblioteka Swait(full,mutex);
nextc:=buffer(out);
out:=(out+1) mod n;
Ssignal(mutex, empty);
consume the item innextc;
until false;