1、全国自考(操作系统)模拟试卷 11 及答案与解析一、单项选择题1 不能提高处理器的利用率的系统是_。(A)多道程序设计系统(B)批处理系统(C)实时系统(D)分时系统2 在固定分区管理中,每个分区的大小是_的。(A)相同(B)根据用户申请而定(C)可以不同但预先固定(D)可以不同但根据作业长度固定3 在可变分区存储管理中,在分配一个空闲区后,空闲区管理表中不可能_。(A)增加一个表项(B)减少一个表项(C)表项数不变(D)改变表项内容4 某一进程从就绪状态进入运行状态的原因可能是_。(A)进程的时间片没用完(B)现执行进程被阻塞(C)等待的事件已发生(D)进程被创建5 UNIX 的进程切换调度
2、程序 swtch 的中间部分涉及选择一个进程,以使其占用处理机。该选择算法不考虑_的因数。(A)进程所在队列(B)进程所在的位置(C)进程的优先数(D)进程的大小6 设有三个进程共享一个资源,如果每次只允许一个进程使用该资源,则用semWait、semSignal 操作管理时,信号量 S 的可能取值是 _。(A)1,-1 ,-2(B) 2,1,0,-1(C) 1,0,-1(D)3,2,1,07 假设有 4 个进程竞争同类资源,每个进程需要 2 个该类资源,如果系统提供该资源少于_个,就有可能发生死锁。(A)5(B) 6(C) 7(D)88 在 UNIX 中,若一个 buf 处于自由队列,则它还
3、可能位于_。(A)设备队列或 IO 请求队列(B)设备队列或 NODEV 队列(C) NODEV 队列或 IO 请求队列(D)两个设备队列9 UNIX 操作系统在收到用户关于文件的_操作命令后,就要在文件系统中寻找空闲 inode 项。(A)创建(B)打开(C)写(D)关闭10 在下面的 Socket 通信中,_是顾客端程序中要用到的系统调用。(A)bind(B) 1isten(C) accept(D)connect二、填空题11 为了能充分发挥处理机与 IO 设备并行工作的能力,操作系统采用了_设计技术。12 静态地址重定位是由_程序实施的。13 操作系统中的 PCB 结构用于对_进行管理。
4、14 进程在临界区访问的资源称为_。15 在有 4 个生产者、3 个消费者共享容量为 2 的缓冲区的生产者一消费者问题中,使用缓冲区的互斥信号量的初值为_。16 存取盘块中的信息一般要有三部分时间,其中与移臂调度有关的是_。17 如一个文件的权限模式是 0751,那么该文件的存取控制权限分别是文件主_、同组用户_、其他用户_。18 _是用于确定字符串模式的一个规则集。19 在 FTP 中,asc 方式用于在不同的系统之间传输_文件。20 一个能从标准输入读取数据,经过选择和处理后将结果写向标准输出的程序,称为_。三、简答题21 阐述程序、进程和线程的区别与联系。22 某系统中有 10 台打印机
5、,有三个进程 P1、P2、P3 分别需要 8、7 和 4 台。若P1、P2、P3 已申请到 4、2 和 2 台。试问:按银行家算法能安全分配吗?说明理由。23 UNIX 将索引结构的 13 个表项分成 4 种寻址方式,即直接寻址、一级间接寻址、二级间接寻址、三级间接寻址,其中三级间接寻址所能索引的文件大小就是前 3 种寻址方式所能索引的文件大小的几百倍。那么 UNIX 只采用三级间接寻址一种索引方法行不行?24 说明在什么时候采用连接静态库的方法更合适,在什么时候采用连接动态库的方法更合适。四、综合题25 2 个信息发送进程 a、 b 不断向缓冲区存放数据,由进程 c 取走缓冲区的数据,每次只
6、能存取一个数据(缓冲区初态为空,容量为无限大)。通过信号量semWait、sereSignal 操作实现三个进程间的互斥和同步,并写出信号量的初值和意义。26 编写利用消息机构实现输入进程和输出进程同步的 C 程序。输入进程从标准输入读入一个字符串,并将该字符串发给输出进程;输出进程向标准输出中输出字符串。通信双方通过关键字为 MSGKEY 的消息队列进行通信,两个程序使用相同的一组头文件,假设头文件的说明已放在文件 msgcomh 中。27 编一个递归的 Shell 程序 rec_ctarsh,该程序能够显示参数表中指定的所有目录子树下的全部目录并分别将各个目录下的全部 C 源程序打包成 C
7、filetar 文件。如目录下无 C 程序,不执行打包操作。如输入命令行:rec_ctarsh homewanghomelee将显示homewang 和 homelee 目录子树中的全部目录,并分别将各个目录下的全部 C 源程序打包成 Cfiletar 文件。当 rec_ctar 不带参数时,则在当前目录树下执行上述操作。五、判断题28 “脱机输入输出 ”是指不需计算机控制的输入输出方式。( )(A)正确(B)错误29 只带有一个终端的计算机不会是多用户操作系统。( )(A)正确(B)错误30 采用静态重定位技术的系统,用户可以直接访问内存物理地址。( )(A)正确(B)错误31 使用 FIF
8、O 算法,分配给一个作业的页架数越多,作业运行发生的缺页中断的次数就一定越少。( )(A)正确(B)错误32 多个进程可以并发地执行一个程序。( )(A)正确(B)错误33 可以将 SRUN 状态的进程从内存调至盘交换区。( )(A)正确(B)错误34 用锁操作能实现进程之间的同步。( )(A)正确(B)错误35 信号没有优先级,但能被屏蔽。( )(A)正确(B)错误36 I O 中断处理程序的工作一般与现运行进程不发生联系。( )(A)正确(B)错误37 当用户态进程调用标准 IO 库函数时,就进入了核心态。( )(A)正确(B)错误全国自考(操作系统)模拟试卷 11 答案与解析一、单项选择
9、题1 【正确答案】 C2 【正确答案】 C3 【正确答案】 A4 【正确答案】 B5 【正确答案】 D6 【正确答案】 A7 【正确答案】 A8 【正确答案】 B9 【正确答案】 A10 【正确答案】 D二、填空题11 【正确答案】 多道程序12 【正确答案】 装入13 【正确答案】 进程14 【正确答案】 临界资源15 【正确答案】 116 【正确答案】 寻道时间17 【正确答案】 可读可写可执行、可读可执行、可执行18 【正确答案】 正则表达式19 【正确答案】 文本20 【正确答案】 过滤器三、简答题21 【正确答案】 进程和程序之间既有区别又有联系。进程是程序执行的动态活动,它是暂时地
10、动态地产生和终止的。程序是进程运行的静态文本,它可以长期保存。一个进程可以执行一个或多个程序,反之,同一个程序也可被多个进程同时执行。进程与线程的主要区别如下。(1)调度方面。在传统的操作系统中,拥有资源和独立调度的基本单位都是进程。而在引入线程的操作系统中,线程是独立调度的基本单位,进程是资源拥有的基本单位。在同一进程中,线程的切换不会引起进程的切换。在不同的进程中进行线程切换,将会引起进程切换。(2)拥有资源。不论是传统操作系统还是设有线程的操作系统,进程都是拥有资源的基本单位,而线程不独立拥有系统资源(也拥有一点必不可少的资源),但线程可以访问其隶属进程的系统资源。(3)并发性。在引入线
11、程的操作系统中,不仅进程之间可以并发执行,而且同一进程内的多个线程之间也可以并发执行。(4)系统开销。由于创建进程或撤销进程时,系统都要为之分配或回收资源,操作系统所付出的开销远大于创建或撤销线程时的开销。在进行进程切换时,涉及整个当前进程 CPU 环境的保护及新调度到新进程的 CPU 环境设置;而线程切换时,只需保护和设置少量寄存器内存,因此开销很小。另外,由于同一进程内的多个线程共享进程的地址空间,因此,多线程之间的同步与通信非常容易实现,甚至无须操作系统的干预。22 【正确答案】 总资源数:10 各进程对资源需求、已分配资源数和还需资源数见表 241。剩余资源数:2 剩余的资源可分配给
12、P3,让 P3 运行完毕并释放资源,然后将 4 个资源分配给进程 P1,让 P1 运行完毕并释放资源,然后 P2 可申请到 5 个资源并正常运行完毕。因此存在一个安全的分配序列,所以可以安全分配。23 【正确答案】 单单三级间接寻址能索引的文件固然很大,但由于需要多次访问索引块,所以访问文件的速度很慢。在文件系统中存储的绝大部分文件是大小不超过 10 个盘块的小型文件,为了提高对绝大多数小型文件的访问速度,采用直接寻址方式可以不需读取索引块,故能大大提高文件访问的速度。对于文件大小超过10 个盘块的中型文件,采用一级间接寻址,既能访问更大的文件,也不会多花费很多时间。对于二级间接索引,其访问文
13、件数据块的时间和最大可索引的文件介于一级间接索引和三级间接索引之间。由于 UNIX 系统采用多级寻址,而且文件的多级寻址方法是随着文件的大小的变化自然过渡的,故兼顾了不同文件大小的存储和访问的性能。24 【正确答案】 在编译、连接静态库时,编译程序将用户程序要调用的库函数全部连接到用户的程序中,组合成一个完整的不可分割的执行代码。在运行时,用户程序就与原静态库脱离了联系。如果一个用户要在其他的同类计算机上运行该程序,就不需要将静态库和相应的运行环境复制过去,在这种情况下采用连接静态库是合适的。如果有若干的应用程序要调用相同的库函数,那么各个应用分别都要把库中有关的函数连入自己的程序库中,这些冗
14、余的代码极大地增加了程序的长度,平时要消耗较多的磁盘存储空间,这些应用同时运用时也要占用较大的内存空间,在这种情况下采用连接静态库是不合适的。在编译、连接动态库时,编译程序并不将动态库中的函数连入用户的程序中,而只建立了对动态库的引用连接,因此所生成的目标代码长度要比使用静态库小得多。当有若干程序要使用同一个动态库时,系统只要在内存中驻留该动态库的一个副本,各个调用程序共享同一个库的代码,这样大大减小了系统中执行代码的总长度,也使更多的用户程序可以并发地运行,在这种情况下采用连接动态库是合适的。如果系统中只有一个程序要使用库,那么采用动态库的方式比起采用静态库的方式非但不能减少执行代码的总长度
15、,反而可能增加其长度。因为在连接静态库时,系统只把用户要调用的库函数连入程序中,而在连接动态库时,尽管所生成的目标代码中不包含库中的函数代码,但在执行时系统却要把整个动态库都调入内存(在虚拟存储管理系统中只要部分调入即可),而不管是否要用到库中的全部函数。故在这种情况下采用连接动态库是不合适的。另一方面,如果一个用户要在其他同类计算机上运行该程序,就必须将动态库和相应的运行环境复制过去,在这种情况下采用连接动态库不如采用连接静态库方便。四、综合题25 【正确答案】 信号灯初值和意义如下。data:缓冲区中的数据个数,初值为 0。mutex:存或取时的互斥变量。a,b 进程 c 进程while(
16、1) while(1)semWait(mutex); semWait(data) ;put(data); semWait(mutex);semSignal(mutex); get(data);semSignal(data); semSignal(mutex); 。26 【正确答案】 程序清单 24-7:msgC*msgcomh*#includeerrnoh#includesystypes h#includesysipc h#includesysmsgh#define MSGKEY 12345678struct msgtypelong mtype;charstr256;*输入进程*#includ
17、e“msgcomh“#includestdioh#includestringhmain()struct msgtype buf;int qid,pid;void bzero();if(qid=msgget(MSGKEY,IPC_CREAT|0666)=-1)return(-1);bufmtype=getpid();while(1)bzero(bufstr,sizeof(bufstr);printf(“Input data:“) ;Scanf(“S“ ,bufstr) ;msgsnd(qid,&buf,strlen(bufstr)+1,0);*输出进程*#include“msgcomh“#inc
18、ludestdiohmain()void bzero();struct msgtype buf;int qid;if(qid=msgget(MSGKEY,IPC_CREAT|0666)=-1)return(-1);while(1)msgrcv(qid,&buf,512,0,MSG_NOERROR);接收消息队列最早的消息printf(“Receive a string from processd:Sn“, bufmtype,bufstr);bzero(bufstr,sizeof(bufstr);由于消息队列本身就具有缓冲和队列的同步机制,故发送进程只需不断发数据,接收进程只管不断收数据就可以了
19、。这比用信号量实现计算进程和打印进程的同步要简单。27 【正确答案】 程序清单 24-8:rec_ctarsh#!binshif test $#-eq 0;thenrec ctarsh elsefor i in$*;do #对命令行中的每一个参数if test-d $i;then #如是目录echo $ i(cd $i #打开该目录ls*cdev null21 #测试是否有 c 程序if test$?-eq 0;thentar cf cfiletar *c: #将当前目录中全部 c 源程序打包fifor j in*;do #对目录中的每一项rec_ctarsh $jdone)fidonefi。五、判断题28 【正确答案】 B29 【正确答案】 B30 【正确答案】 B31 【正确答案】 B32 【正确答案】 A33 【正确答案】 A34 【正确答案】 B35 【正确答案】 A36 【正确答案】 A37 【正确答案】 B