[自考类试卷]全国自考操作系统(进程通信)模拟试卷3及答案与解析.doc

上传人:priceawful190 文档编号:912830 上传时间:2019-02-28 格式:DOC 页数:15 大小:71KB
下载 相关 举报
[自考类试卷]全国自考操作系统(进程通信)模拟试卷3及答案与解析.doc_第1页
第1页 / 共15页
[自考类试卷]全国自考操作系统(进程通信)模拟试卷3及答案与解析.doc_第2页
第2页 / 共15页
[自考类试卷]全国自考操作系统(进程通信)模拟试卷3及答案与解析.doc_第3页
第3页 / 共15页
[自考类试卷]全国自考操作系统(进程通信)模拟试卷3及答案与解析.doc_第4页
第4页 / 共15页
[自考类试卷]全国自考操作系统(进程通信)模拟试卷3及答案与解析.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

1、全国自考操作系统(进程通信)模拟试卷 3 及答案与解析一、单项选择题1 临界区是指并发进程中_。(A)用于实现进程互斥的程序段(B)用于实现进程同步的程序段(C)用于实现进程通信的程序段(D)与互斥的共享资源有关的程序段2 解决进程间同步与互斥问题的常用方法是使用_。(A)锁操作(B)存储管理(C)信号机构(D)信号量3 在进程之间要传递大量的数据,效率高而且互斥与同步控制方便的方法是采用_。(A)管道(B)共享存储(C)全局变量(D)信号量4 能支持两台计算机之间的通信机制是_。(A)Signal(B) Pipe(C) Ipc(D)Socket5 如果系统只有一个临界资源,同时有很多进程要竞

2、争该资源,那么系统_发生死锁。(A)一定会(B)一定不会(C)不一定会(D)由进程数量决定6 在多进程的并发系统中,肯定不会因竞争_而产生死锁。(A)打印机(B)磁带机(C)光刻机(D)处理机7 系统有 11 台磁带机供 5 个进程使用,如每个进程最多同时分配_台磁带机,就没有死锁的危险。(A)2(B) 3(C) 4(D)58 设有 12 个同类资源可供 4 个进程共享,资源分配情况见表 41。当进程 P1、P2、P3、P4 都相继提出申请要求,为使系统不致死锁,应满足_的要求。(A)P1(B) P2(C) P3(D)P4二、填空题9 若一个进程已进入一个临界区,其他欲进入同一临界区的进程必须

3、_。10 每执行一次 semSignal 操作,信号量的数值 S 加 1。若_,则该进程继续执行;否则,从对应的_队列中移出一个进程,该进程的状态将为_。11 某一时刻系统中共有 6 个进程,每个进程要使用 1 个相关临界资源。互斥信号量 s 的初值为 3,当前值为-2,则表示有_个进程正在访问相关临界资源,有_个访问相关临界资源的进程进入了阻塞状态,有_个进程还没有申请访问相关临界资源。12 一个进程要向另一个进程传送大量数据,如不考虑进程间的同步,效率最高的进程通信机制为_。13 对资源采用_的策略可以使循环等待资源的条件不成立。三、简答题14 什么是临界资源和临界区?一个进程进入临界区的

4、调度原则是什么?15 说明互斥和同步对信号量操作方法的差异。16 叙述面向连接的 Socket 通信基本过程实现网络通信。17 在生产者一消费者问题中,如果将两个 semWait 操作即生产者程序流程中的semWait(buffers)和 semWait(mutex)互换位置,或者是将 semSignal(mutex)与semSignaj(products)互换位置,结果会如何 ?18 在某系统中,有 N 个进程共享 6 台同类设备资源,每个进程最多需要 2 台设备资源,试问:N 最多为几时才能保证系统不会发生死锁 ?简略说明。19 在解决死锁的方法中,哪种方法最浪费资源?哪种方法最容易实现?

5、 如果死锁发生的可能性很小,用哪种方法最好?四、综合题20 用纯用户软件实现进程的互斥。对共享资源的访问要互斥进行,进程级的互斥可以通过系统提供的锁和信号量等实现,也可通过纯软件实现。用纯软件实现进程互斥地进入临界段的方法既可用于单处理机环境,也可用于多处理机环境,只要这些处理机能共享同一个存储区,且诸进程对同一主存单元的访问是串行地进行的,除此以外不需要任何硬件、操作系统或程序设计语言的特殊支持。通过纯软件来实现进程间的互斥所需共享存储区,就要通过共享内存的系统调用shmget、shmat 获得。父进程的全局变量在创建子进程后,两者也是分开存放的,故即使父子进程之间也不能通过全局变量进行通信

6、。线程能有效地增强不同执行程序之间的通信效率。在大多数的操作系统中,独立进程之间的通信需要与核心交互,以提供进程通信所需的机制。可是,由于在同一进程中的线程共享内存,它们之间的通信就不需要调用核心。由于同一个进程中的所有线程共享进程的资源,它们驻留在相同的地址空间和访问相同的数据。如一个线程修改了存储空间中的一项数据,其他线程访问该数据项时也会获得改变了的结果。故子线程之间就能通过进程的全局变量进行通信,也能用全局变量实现纯软件的安全锁。试编一个多线程并发的程序,用纯软件来实现对共享资源的访问计数,最简单的互斥共享资源就是共享计数变量。21 有两个生产者 a、b 不断向仓库存放产品,由销售者

7、c 取走仓库中的产品(仓库初态产品数为 0,仓库容量为无限大)。请写出通过 semWait、semSignal 操作实现三个进程间的同步和互斥的框图或伪程序,并写出信号量的初值和意义。五、判断题22 变量也可以是一个临界资源。( )(A)正确(B)错误23 锁可以用于控制临界段的互斥执行。( )(A)正确(B)错误24 普通用户能用文件的 creat 系统调用实现锁操作。 ( )(A)正确(B)错误25 利用信号量既能实现进程间的同步,也能实现进程间的互斥。( )(A)正确(B)错误26 中断和信号都有优先级。( )(A)正确(B)错误27 信号可以直接传送信息内容。( )(A)正确(B)错误

8、28 若进程资源分配和等待图中含有圈,则一定有进程处于死锁状态。( )(A)正确(B)错误全国自考操作系统(进程通信)模拟试卷 3 答案与解析一、单项选择题1 【正确答案】 D【知识模块】 进程通信2 【正确答案】 D【试题解析】 锁操作只能解决进程间的互斥而不能解决进程间的同步问题。【知识模块】 进程通信3 【正确答案】 A【试题解析】 信号量只能传递少量的(控制)信息;采用共享存储区的方法,一般还需要信号量来实现进程间的同步;全局变量只能用于进程内部的信息传递。【知识模块】 进程通信4 【正确答案】 D【知识模块】 进程通信5 【正确答案】 B【试题解析】 由于系统只有一个临界资源,各个进

9、程只能竞争和轮流占用该资源,不会形成循环等待的死锁条件,那么系统就一定不会发生死锁。【知识模块】 进程通信6 【正确答案】 D【知识模块】 进程通信7 【正确答案】 B【试题解析】 在最坏的情况下,每一个进程都已平均分配了 2 台磁带机,系统还剩下 1 台磁带机。这台磁带机就可以分配给某个进程使用,使该进程得到了全部的资源后,就能运行到底,从而可释放它所占用的 3 台磁带机,这样其他进程又能获得磁带机,就没有死锁的危险。【知识模块】 进程通信8 【正确答案】 D【试题解析】 目前剩余资源数为 2,只有 P4 剩余需求数最少,为 2 个资源,只要先满足 P4 的要求,使它能运行到底,并释放所分配

10、的资源,再满足其他进程的要求,系统就不致死锁。【知识模块】 进程通信二、填空题9 【正确答案】 等待(被阻塞)【知识模块】 进程通信10 【正确答案】 S0、等待、就绪【知识模块】 进程通信11 【正确答案】 3、2、1【试题解析】 互斥信号量 S 的初值为 3 表示有 3 个同类资源可以被 3 个进程同时访问,当前值为-2 表示有 2 个要访问相关临界资源的进程进入了阻塞状态,另外有 3 个进程正在访问相关临界资源,剩下的(6-5)个进程还没有申请访问相关临界资源。【知识模块】 进程通信12 【正确答案】 共享内存【知识模块】 进程通信13 【正确答案】 按序分配【知识模块】 进程通信三、简

11、答题14 【正确答案】 不能允许 2 个或 2 个以上进程同时访问的资源称为临界资源。进程执行的访问临界资源的程序段称为临界区、临界段或互斥段。能支持各进程互斥地执行临界区的调度机制必须满足下列要求。(1)在所有共享相同资源或对象的临界区中,每次只能允许一个进程进入。(2)一个进程在非临界区中的暂停运行不能影响其他进程。(3)一个进程如需要进入临界区,不能发生无限延迟的情况,即既不会死锁,也不会饥饿。(4)当无进程在临界区时,必须让任何希望进入该程序段的进程无延迟地进入。(5)一个进程只能在临界区内停留有限的时间。(6)对于相关进程的运行速度和处理机的数量不做假设。【知识模块】 进程通信15

12、【正确答案】 互斥和同步都是通过对信号量的 sereWait、semSignal 操作来实现的,但这两种控制机制对信号量的操作策略是不同的。互斥的实现是不同的进程对同一信号量进行 semWait、semSignal 操作,一个进程在成功地对信号量执行了semWait 操作后进入临界段,并在退出临界段后,由该进程本身对这信号量执行semSignal 操作,表示没有进程处于临界段,可让其他进程进入。同步的实现由一个进程 Pa 对一个信号量进行 semWait 操作后,只能由另一个进程 Pb 对同一个信号量进行 semSignal 操作,使 Pa 能继续前进,在这种情况下,进程 Pa 要同步等待Pb

13、。如进程 Pb 也要同步等待 Pa,则要设置另一个信号量。【知识模块】 进程通信16 【正确答案】 面向连接的 Socket 通信的过程如下。(1)服务器方:申请套接字端口,建立通信链路端点。建立主机地址和端口号与 socket 描述符的联系。指定接收队列区。等待客户机请求到达指定端口。接收到客户机的请求后,启动一个新进程处理来自客户机的请求。当服务完成时,终止该进程。原进程继续等待客户机的请求。(2)客户方:申请一套接字,建立通信链路端点。建立与服务机上的 ACPIP 进程监听端口的连接。向服务器发出请求消息(报文) ,等待接收应答。接收服务器来的应答。可循环多次。当不再请求时关闭通信链路并

14、终止客户进程。【知识模块】 进程通信17 【正确答案】 seinWait(buffers)和 semWait(mutex)互换位置后,因为 mutex 在这儿是生产者和消费者公用的信号量变量,生产者在执行完 semWait(mutex)后,则mutex 赋值为 0,倘若当前无空闲缓冲区,buffers 也为 0,在执行了semWait(buffers)后,buffers 为-1,该生产者进程就会进入阻塞状态,这样不仅其他的生产者进程会因 mutex 不能继续存放产品,并且消费者也因 mutex 不能取产品,从而释放缓冲区,使缓冲区始终为 0,这样就形成了死锁。由于 semSignal 操作不含

15、有使进程阻塞的操作,故 semSignal(mutex)与semSignal(products)互换位置后,不会发生死锁问题。交换消费程序流程中的 semWait(products)和 sereWait(mutex)或者 semSignal(mutex)与 semSignal(products)的位置的结果也类似。【知识模块】 进程通信18 【正确答案】 N 最多为 5 时才能保证系统不会发生死锁,资源申请最坏的情况是每个进程都已得到了 1 个资源,现均要再申请一个资源,现系统还有一个剩余资源可分配给某个进程,待它结束资源的使用或运行结束后就可归还资源再供其他进程使用,因此该系统不会发生死锁。

16、【知识模块】 进程通信19 【正确答案】 只要进程一次申请它所需要的所有的资源,在所有的需要同时满足以前,阻塞自己。这种方法简单,易于实施,但也最浪费资源,因为分配给一个进程的资源可能长时间地闲置不用,而在这段时间内,它们也不能被其他进程使用,这影响了资源的周转使用,造成了浪费。采用有序资源使用法也可以防止死锁的循环等待条件。采用这种策略,进程是在需要时才动态申请和分配资源的,故按序分配法资源的利用率比预分配方法要高,但后使用的序号较小的资源要先申请,也一定程度上造成了资源的浪费。如果死锁发生的可能性很小,可以不采用任何预防和避免死锁的措施,操作系统可定期地执行死锁检测算法,一旦检测到死锁,就

17、采用某一个算法解除死锁。【知识模块】 进程通信四、综合题20 【正确答案】 实现该功能的 C 程序为程序清单 15-3。程序清单 15-3 的 soft_sectionC 程序使用 Peterson 1981 年发表的算法解决两个进程互斥执行临界段的算法。程序用纯用户软件实现了进入临界段的互斥控制函数enter_section 和退出临界段的控制函数 leave_section。enter_section 保证只能由一个进程或线程能通过本函数,另外的进程或线程就在函数内的 while 语句中循环等待。程序创建了两个线程对共享变量 global_count 进行访问计数,在一次运行中,每一个线程

18、访问 09 次(由随机数产生器产生),并用 enter_section 控制线程互斥地存取global_count。为了强化互斥进入的效果,把对 global_count 访问计数操作拆成两句,并在两句之间插入睡眠 02 秒的 sleep()函数(也由随机数产生器产生 )。另外作为比较,每一个线程也计算各自访问次数,最后由主线程收集累加。从运行结果可以看出,两种独立的计数方法的结果是相同的。如果线程不调用进入临界段的互斥控制函数 enter_section 和退出临界段的控制函数 leave_section,请读者再次编译和运行程序,并比较这两种独立的计数方法的结果。程序清单 15-3:sof

19、t_section c#includepthreadh#includestdioh#includestdlib h#define BALSE 0#define ARUE 1#define N 100*竞争资源的进程数目 *int observer; *轮到哪个进程观察要进入临界段的情况*int wanted_inN;*各进程希望进入临界段的标志*enter_section(process)*进入临界段的互斥控制函数*int process;*进程编号:0 或 1*int other; *对方进程号*other=1-process;wanted_inprocess=ARUE;*本进程要进入临界段

20、*observer=process;*本进程要观察进入临界段的情况*while(observer=processwanted_inother);*等待*leave_section(process)*退出临界段函数 *int process;wanted_inprocess=BALSE;*表示离开了临界段*静 define AIMES 5int global count;*线程执行函数,传入参数为线程序号,传出参数为项:(序号+1)*2*void*dowork(void*params)int i,j ,tmp,times,thread count=0 ;extern int global_cou

21、nt;j=*(int*)params;times=random()10;for(i=0,itimes;i+)enter_section(j);tmp=global_count;sleep(random()3) ;global_count=tmp+1;leave_section(j);thread_count+;*(int*)params=thread count;printf(“the threaddcount=dn“ ,j,thread_count);int nthreads=2;*运行方法:a out n 其中 n 为要创建的线程数,默认为 2*main(intargc,char*argv

22、)int i:pthread_t threads100;int thread_id100;int thread_count=0;extern int global_count;nthreads=1;if(argc=2)nthreads=atoi(argv1);将命令行字符串参数转换为整数srand(0);for(i=0;inthreads ;i+)thread_idi=i;*创建线程,其中 pthreaddatai为传给线程执行函数 dowork 的参数,并将结果带回*pthread_create(&threadsi,NULL,dowork,&thread_idi);for(i=0;inthr

23、eads ;i+)pthread_join(threadsi,NULL);等待子线程结束,汇合结果thread_count+=thread_idi;printf(“Ahe thread_count=dn“,thread_count) ;printf(“Ahe global_count=dn“ ,global_count);编译:$gcc thread_mutexc-lpthread本程序的 enter_section 和 leave_section 函数只能支持两个线程间的互斥。但Peterson 算法也很容易扩展到任意的 N 个进程,只要将 enter_section 函数中的while 语

24、句改成如下的形式。while(observer=process)if(observer!=process)break;for(i=0;wanted_ini;i+)if(wanted_ini)continue;。【知识模块】 进程通信21 【正确答案】 通过 semWait、semSignal 操作实现三个进程间的同步和互斥的框图见图 151。 信号量初值和意义如下。product:初值为 0,仓库中已存放的产品个数,同步信号量。mutex:初值为 1,向仓库存放产品和从仓库取走产品的互斥信号量。【知识模块】 进程通信五、判断题22 【正确答案】 A【知识模块】 进程通信23 【正确答案】 A【知识模块】 进程通信24 【正确答案】 A【知识模块】 进程通信25 【正确答案】 A【知识模块】 进程通信26 【正确答案】 B【试题解析】 中断有优先级,信号没有优先级。【知识模块】 进程通信27 【正确答案】 B【知识模块】 进程通信28 【正确答案】 A【知识模块】 进程通信

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 考试资料 > 大学考试

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1