《操作系统习题及答案三.pdf》由会员分享,可在线阅读,更多相关《操作系统习题及答案三.pdf(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、习题三习题三同步、通信与死锁同步、通信与死锁一、单项选择题一、单项选择题1、在单一处理机上,将执行时间有重叠的几个程序称为 。A.顺序程序B. 多道程序C.并发程序D. 并行程序2、进程间的基本关系为 。A.相互独立与相互制约B. 同步与互斥C.并行执行与资源共享D. 信息传递与信息缓冲3、两个进程合作完成一个任务,在并发执行中,一个进程要等待其合作伙伴发来信息,或者建立某个条件后再向前执行,这种关系是进程间的关系。A.同步B. 互斥C.竞争D. 合作4、在一段时间内,只允许一个进程访问的资源称为 。A. 共享资源B. 临界区C. 临界资源D. 共享区5、在操作系统中,对信号量S 的 P 原语
2、操作定义中,使进程进入相应阻塞队列等待的条件是 。A. S0B. S=0C. S0D. S 06、信号量 S 的初值为 8,在 S 上执行了 10 次 P 操作,6 次 V 操作后,S 的值为 。A10B8C6D47、临界区是指( )。A. 并发进程中用于实现进程互斥的程序段B并发进程中用于实现进程同步的程序段C并发进程中用户实现进程通信的程序段D并发进程中与共享变量有关的程序段8、以下对线程的描述中,()是错误的。A不同的线程可执行相同的程序 B线程是资源的分配单位C线程是调度和执行单位 D同一进程中的线程可共享该进程的主存空间9、P, V操作是10、假设 P, V操作的信号量 S 初值为
3、2,当前值为-1,则表示有等待进程。 A. 0 个 B. 1 个 C. 2 个 D. 3 个11、 是一种只能进行P 操作和 V 操作的特殊变量12、下面的表达中正确的选项是 。A.操作系统的一个重要概念是进程,因此不同进程所执行的代码也一定不同B.为了防止发生进程死锁,各进程只能逐个申请资源C.操作系统用 PCB 管理进程,用户进程可以从PCB 中读出与本身运行状况有关的信息13、对于两个并发进程,设互斥信号量为mutex,假设 mutex=0,则 C.表示有一个进程进入临界区,另一个进程等待进入14、发生死锁的必要条件有四个,要防止死锁的发生,可以破坏这四个必要条件,但破坏条件是不太实际的
4、。A互斥B不可抢占C部分分配D循环等待15、资源的按序分配策略可以破坏条件。A互斥使用资源B占有且等待资源C非抢夺资源D循环等待资源16、在的情况下,系统出现死锁。A电脑系统发生了重大故障B有多个封锁的进程同时存在C假设干进程因竞争资源而无休止地相互等待他方释放己占有的资源D资源数大大小于进程数或进程同时申请的资源数大大超过资源总数17、银行家算法是一种算法。A死锁解除B死锁防止C死锁预防D死锁检测18、某系统中有 3 个并发进程,都需要同类资源4 个,试问该系统不会发生死锁的最少资源数是 。A9B10C11D1219、信箱通信是一种通信方式。20、并发进程失去了封闭性是指()。A多个相对独立
5、的进程以各自的速度向前推进B并发进程的执行结果与速度无关C并发进程执行时,在不同时刻发生的错误D并发进程共享变量,其执行结果与速度有关二、填空题二、填空题1、假设一个进程已进入临界区,其他欲进入临界区的进程必须。2、用 P, V 操作管理临界区时,任何一个进程在进入临界区之前应调用操作,退出临界区时应调用操作。3、用信箱实现通信时,应有和两条基本原语。4、有m 个进程共享同一临界资源,假设使用信号量机制实现对临界资源的互斥访问,则信号量值的变化范围是。5、死锁产生的必要条件有四个,即、。6、银行家算法中,当一个进程提出的资源请求将导致系统从进入时,系统就拒绝它的资源请求。7、PV 操作也可看作
6、为进程间的一种通信方式,由于只交换了少量的信息,故称为。8、在多线程操作系统中,线程与进程的根本区别在于进程作为单位,而线程是单位。9、临界区是指并发进程中与有关的程序段10、操作系统中信号量的值与_ _的使用情况有关,它的值仅能由来改变。三、简答题三、简答题1、什么是进程的互斥与同步?2、一个进程进入临界区的调度原则是什么?3、在操作系统中,P 操作和 V 操作各自的动作是如何定义的?4、为什么并发进程执行时可能会产生与时间有关的错误?如何防止?5、为什么说采用有序资源分配法不会产生死锁?四、应用题四、应用题1、四个进程 A、B、C、D 都要读一个共享文件 F,系统允许多个进程同时读文件 F
7、。但限制是进程 A 和进程 C 不能同时读文件 F,进程 B 和进程 D 也不能同时读文件 F。为了使这四个进程并发执行时能按系统要求使用文件,现用PV 操作进行管理,请答复下面的问题:1如何定义信号量及初值;2在以下的程序中填上适当的P、V 操作,以保证它们能正确并发工作:进程 A进程 B进程 C进程 D1;3;5;7;read F;read F;read F;read F;2;4;6;8;2、设有一台电脑,有两条I/O通道,分别接一台卡片输入机和一台打印机。卡片机把一叠卡片逐一输入到缓冲区B1中,加工处理后再搬到缓冲区B2中,并在打印机上打印,问:系统要设几个进程来完成这个任务?各自的工作
8、是什么?这些进程间有什么样的相互制约关系?用P、V操作写出这些进程的同步算法。3、生产者-消费者问题表述如下:一组生产者进程和一组消费者进程通过缓冲区发生联系。生产者进程将生产的产品送入缓冲区, 消费者进程则从中取出产品。 假定环形缓冲池中共有 N 个缓冲区,编号为 0N-1。为了描述生产者进程和消费者进程,设指针 in 和 out 分别指向生产者进程和消费者进程当前所用的缓冲区(buffer),初值均为 0。1应设置三个信号量实现两类进程的同步,分别是full、empty 和 mutex。请说出它们的含义及初值。2下面是生产者进程的算法描述,请填写相应的P、V 操作语句。while (TRU
9、E);产品送往 bufferin ;in=in+1mod N; /*mod 为取模运算*/;3指出生产者进程算法中的临界区是哪一段程序?4、在银行家算法中,假设出现下述资源分配情况:AllocationP0P1P2P3P400321000135403320014Need00121750235606520656Available1622试问:(1)该状态是否安全?(2)如果进程 P2 提出请求 Request2(1,2,2,2)后,系统能否将资源分配给它?5、桌上有一空盘,允许存放一只水果。爸爸可向盘中放苹果,也可向盘中放桔子,儿子专等吃盘中的桔子,女儿专等吃盘中的苹果。规定当盘空时一次只能放一
10、只水果供吃者取用,请用 P, V原语实现爸爸、儿子、女儿三个并发进程的同步。6、哲学家甲请哲学家乙、丙、丁到某处讨论问题,约定全体到齐后开始讨论:在讨论的间隙四位哲学家进餐,每人进餐时都需使用刀、叉各一把,餐桌上的布置如图2.9 所示。请用信号量及 P、V 操作说明这四位哲学家的同步、互斥过程。丁叉 2刀 1¥b丙食品甲b刀 2乙¥叉 1答案三答案三同步、通信与死锁同步、通信与死锁一、单项选择题一、单项选择题1、C2、B3、A4、C5、A6、C7、D8、B9、A10、B11、D12、D13、B14、A15、D16、C17、B18、B19、B20、D二、填空题二、填空题1、等待2、P、V3、发送
11、、接收4、1 至(m-1)5、互斥条件、不剥夺条件、部分分配、环路条件6、安全状态、不安全状态7、低级通信8、资源分配、调度和执行单位9、共享变量10、资源、PV 操作三、简答题三、简答题1进程的互斥是指在逻辑上本来完全独立的假设干进程,由于竞争同一个资源而产生的相互制约关系。进程的同步是进程间共同完成一项任务时直接发生相互作用的关系, 也就是说, 这些具有伙伴关系的进程在执行时间次序上必须遵循确定的规律。2一进程进入临界区的调度原则是:如果有假设干进程要求进入空闲的临界区,一次仅允许一个进程进入。任何时候,处于临界区内的进程不可多于一个。 如已有进程进入自己的临界区, 则其它所有试图进入临界
12、区的进程必须等待。进入临界区的进程要在有限时间内退出,以便其它进程能及时进入自己的临界区。如果进程不能进入自己的临界区,则应让出CPU,防止进程出现“忙等”现象。3P 操作顺序执行下述两个动作:信号量的值减1,即S=S-1;如果S0,则该进程继续执行;如果S0,则把该进程的状态置为阻塞态, 把相应的PCB连入该信号量队列的末尾,并放弃处理机,进行等待直至其它进程在S上执行V操作,把它释放出来为止。V操作顺序执行下述两个动作:S值加1,即S=S+1;如果S0,则该进程继续运行;如果 S0,则释放信号量队列上的第一个PCB即信号量指针项所指向的PCB所对应的进程把阻塞态改为就绪态,执行V 操作的进
13、程继续运行。4有交往的并发进程可能会同时使用共享资源,如果对这种情况不加控制,由于进程占用处理器的时间、执行的速度和外界的影响等, 就会引起与时间有关的错误。 只要使假设干并发进程的相关临界区互斥执行,就可防止造成这类错误。5为了便于说明,不妨设系统中有m 类资源,n 个进程,分别用 Rl,R2,Rm(1,2,m 可看作资源编号)和 P1,P2,Pn 表示。根据有序资源分配法可知,进程申请资源时必须按照资源编号的升序进行,即任何进程在占有了Ri 类资源后,再申请的资源Rj 的编号 j 一定大于 i。因此在任一时刻,系统中至少存在一个进程Pk,它占有了较高编号的资源 Rh,且它继续请求的资源必然
14、是空闲的,因而 Pk 可以一直向前推进直至完成,当Pk 运行完成后即会释放它占有的所有资源; 在 Pk 完成之后,剩下的进程集合中同样会存在一个进程,它占有了较高编号的资源, 且它继续请求的资源必然是空闲的, 因而它可以一直向前推进直至完成;以此类推,所有进程均可运行完成,故不会发生死锁。四、应用题四、应用题1解:1定义二个信号量 S1、S2,初值均为 1,即:S1=1,S2=1共 2 分2从1到8分别为:P(S1), V(S1), P(S2), V(S2), P(S1) ,V(S1) ,P(S2) ,V(S2)2、解:系统可设三个进程来完成这个任务:R进程负责从卡片输入机上读入卡片信息,输入
15、到缓冲区B1中;C进程负责从缓冲区B1中取出信息,进行加工处理,之后将结果送到缓冲区B2中;P进程负责从缓冲区B2中取出信息,并在打印机上印出。R进程受C进程影响,B1放满信息后R进程要等待等C进程将其中信息全部取走,才能继续读入信息;C进程受R进程和P进程的约束:B1中信息放满后C进程才可从中取出它们,且B2被取空后C进程才可将加工结果送入其中;P进程受C进程的约束:B2中信息放满后P进程才可从中取出它们,进行打印。信号量含义及初值:B1full 缓冲区B1满,初值为0;B1empty缓冲区B1空,初值为0;B2full 缓冲区B2满,初值为0;B2empty缓冲区B2空,初值为0;R进程C
16、进程P进程输入信息写入缓冲区 B1;V(B1full);P(B1empty);P(B1full);从 B1 中取出信息;加工信息;结果送入 B2;V(B1empty);V(B2full);P(B2empty);P(B2full);从 B2 中取出信息进行打印;V(B2empty);3答:1full 表示放有产品的缓冲区数,初值为0;empty 表示可供使用的缓冲区数,初值为N;mutex 为互斥信号量,初值为 1,表示互斥进入临界区。2Pempty,Pmutex,Vmutex,Vfull3生产者进程算法中的临界区是如下程序段:产品送往 bufferin;in=(in+1) mod N;/*mo
17、d 为取模运算*4解:(1)利用银行家算法对此时刻的资源分配情况进行分析,可得此时刻的安全性分析情况:WorkP0P3P4P1P21622165419861991029910Need00120652065617502356Allocation00320332001410001354Work+Allocation1654198619910299103 121414Finishtruetruetruetruetrue从上述分析中可以看出,此时存在一个安全序列P0,P3,P4,Pl,P2,故该状态是安全的。2P2 提出请求 Request2(1,2,2,2),按银行家算法进行检查:Request2(
18、1,2,2,2)Need2(2,3,5,6)Request2(1,2,2,2)Available(1,6,2,2)试分配并修改相应数据结构,资源分配情况如下:AllocationP0P1P2P3P400321000257603320014Need00121750113406520656Available0400再利用安全性算法检查系统是否安全,可用资源Available0,4,0,0已不能满足任何进程的需要,故系统进入不安全状态,此时系统不能将资源分配给P2。5解:在此题中,应设置三个信号量S, So, Sa,信号量 S 表示盘子是否为空,其初值为 1;信号量 So 表示盘中是否有桔子,其初值
19、为0;信号量 Sa 表示盘中是否有苹果,其初值为 0。同步描述如下:int S=1;int So=0;int Sa=0;maintcobeginfather ;son;daughter ;coendfather( )while(1)P(S);将水果放入盘中:If(放入的是桔子)V (So);elseV (Sa):son()while(1)P(So);从盘中取出桔子;V(S):吃桔子;daughter()while(1)P(Sa):从盘中取出苹果;V(S):吃苹果;6解:在此题中,应设置四个信号量forkl、fork2、knifel、knife2,其初值均为 1,分别表示资源叉 1、叉 2、刀
20、1、刀 2 是否可用。同步描述如下:intfork1=l;intfork2=1;intknife1=l;intknife2=l;main( )cobeginPa();/*分别用进程 Pa、Pb、Pc、Pd 代表哲学家甲、乙、丙、丁的活动*/Pb();Pc();Pd();coendPa( )while(1)P(knife1);P(fork1);进餐;V(knife1);V(fork1);讨论问题:Pb( )while(1)P(knife2);P(fork1);进餐;V(knife2);V(fork1);讨论问题;Pc( )while(1)P(knife2);P(fork2);进餐;V(knife2);V(fork2);讨论问题:Pd( )while(1)P(knife1);P(fork2);进餐:V(knife1);V(fork2);讨论问题;