1、操作系统原理课程试卷答案班级 _ 学号 _ 姓名 _一、选择题(本大题共40分,每小题2分)1、在现代操作系统中引入了( D ),从而使并发和共享成为可能。A.单道程序 B. 磁盘 C. 对象 D.多道程序 2、( )操作系统允许在一台主机上同时连接多台终端,多个用户可以通过各自的终端同时交互地使用计算机。 A.网络 B.分布式 C.分时 D.实时3、从用户的观点看,操作系统是( A )。 A. 用户与计算机硬件之间的接口 B.控制和管理计算机资源的软件 C. 合理组织计算机工作流程的软件 D.计算机资源的的管理者 4、当CPU处于管态时,它可以执行的指令是(A )。 A. 计算机系统中的全部
2、指令 B. 仅限于非特权指令 C. 仅限于访管指令 D. 仅限于特权指令5、用户在程序中试图读取某文件的第100个逻辑块时,使用操作系统提供的( A )接口。 A. 系统调用 B.图形用户接口 C.原语 D.键盘命令6、下列几种关于进程的叙述,( A )最不符合操作系统对进程的理解?A.进程是在多程序并行环境中的完整的程序。 B.进程可以由程序、数据和进程控制块描述。 C.线程是一种特殊的进程。 D.进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。7、当一个进程处于( B )状态时,称其为等待(或阻塞)状态。 A. 它正等待中央处理机 B. 它正等待合作进程的一
3、个消息 C. 它正等待分给它一个时间片 D. 它正等待进入内存8、一个进程释放一种资源将有可能导致一个或几个进程( D )。A.由就绪变运行 B.由运行变就绪 C.由阻塞变运行 D.由阻塞变就绪9、下面关于线程的叙述中,正确的是( C )。A.不论是系统支持线程还是用户级线程,其切换都需要内核的支持。 B.线程是资源的分配单位,进程是调度和分配的单位。 C.不管系统中是否有线程,进程都是拥有资源的独立单位。 D.在引入线程的系统中,进程仍是资源分配和调度分派的基本单位。10、设有3个作业,它们同时到达,运行时间分别为T1、T2和T3,且T1T2T3,若它们在单处理机系统中按单道运行,采用短作业
4、优先调度算法,则平均周转时间为( )。 A. T1+T2+T3 B. (T1+T2+T3)/3 C. T1+T2/3+2*T3/3 D.T3/3+2*T2/3+T111、在下面的I/O控制方式中,需要CPU干预最少的方式是( D )。A程序I/O方式 B中断驱动I/O控制方式 C直接存储器访问DMA控制方式 DI/O通道控制方式12、有m个进程共享同一临界资源,若使用信号量机制实现对一临界资源的互斥访问,则信号量的变化范围是( A )。A.1至 (m-1) B.1至m-1 C.1至m D.1至m13、对资源编号,要求进程按照序号顺序申请资源,是破坏了死锁必要条件中的哪一条?( D )A. 互斥
5、 B. 请求与保持 C. 不可剥夺 D. 循环等待14、某系统采用了银行家算法,则下列叙述正确的是( B )。A.系统处于不安全状态时一定会发生死锁 B.系统处于不安全状态时可能会发生死锁C.系统处于安全状态时可能会发生死锁 D.系统处于安全状态时一定会发生死锁15、CPU输出数据的速度远远高于打印机的打印速度,为解决这一矛盾,可采用(B)A并行技术 B缓冲技术 C虚拟存储器技术 D覆盖技术16、下面最有可能使得高地址空间成为大的空闲区的分配算法是( A )。A.首次适应法 B.最佳适应法 C.最坏适应法 D.循环首次适应法17、在下面关于虚拟存储器的叙述中,正确的是( B )。A.要求程序运
6、行前必须全部装入内存且在运行过程中一直驻留在内存B.要求程序运行前不必全部装入内存且在运行过程中不必一直驻留在内存C.要求程序运行前不必全部装入内存但是在运行过程中必须一直驻留在内存D.要求程序运行前必须全部装入内存但在运行过程中不必一直驻留在内存18、采用段式存储管理的系统中,若地址用24位表示,其中8位表示段号,则允许每段的最大长度是( B )。A.224 B.216 C.28 D.23219、在可变式分区分配方案中,某一作业完成后,系统收回其主存空间,并与相邻空闲区合并,为此需修改空闲区表,造成空闲区数减1的情况是( D )。A.无上邻空闲区,也无下邻空闲区 B.有上邻空闲区,但无下邻空
7、闲区C.有下邻空闲区,但无上邻空闲区 D.有上邻空闲区,也有下邻空闲区20、MS-DOS系统中的磁盘文件物理结构属于( B )。A. 连续文件 B. 链接文件 C. 索引文件 D. 散列文件二、填空题(本大题共21分,每空1分)21、 操作系统是计算机系统中的一个_系统软件_,它管理和控制计算机系统中的_资源_。22、 进程主要由_程序_、_数据_和_PCB_三部分内容组成,其中_PCB_是进程存在的惟一标识,而_数据_部分也可以为其它进程共享。23、在一个具有2个处理器的操作系统中共有n 个进程,在不考虑进程状态过渡的情况下,阻塞进程队列中最多有_n_ 个进程。某一时刻,处于执行状态的进程为
8、0个,且当前处理机空闲,处于就绪状态的进程有_n_ 个。24、当处理器空闲时,调度程序从 _就绪_ 进程队列中选择一个进程给其分配CPU,处于_阻塞_状态的进程是不会获得CPU的。25、在响应比最高者优先的作业调度算法中,当各个作业等待时间相同时,运行时间短_ 的作业将得到优先调度;当各个作业要求运行的时间相同时,_等待时间长_ 的作业得到优先调度。26、某系统中共有10台磁带机被 m 个进程竞争,每个进程最多要求3台磁带机,那么当m的取值为_不超过4的整数_时,系统不会发生死锁。27、 设有8页的逻辑空间,每页有1024字节,它们被映射32块的物理存储区中,那么,逻辑地址的有效位是_13_位
9、,物理地址至少是_15_位。28、 在一个分页存储管理系统中,页长为4KB,页号物理块号031426某一作业的页表如图1所示,虚拟地址3000对应的物理地址为12K+3000=152888 。 图1 作业页表29、虚拟设备是通过_ SPOOLING技术把独占设备变成能为若干用户_共享 _的设备。30、已知某文件采用串联结构,它由10个逻辑记录组成,每个逻辑记录刚好存放于一个磁盘块上,都为1024字节,并依次存放在10、61、32、75、87、98、46、37、33和11号磁盘块上。若要存取文件相对于文件头偏移7654字节处的信息,则要访问的磁盘块块号为_37_,块内的偏移量是_486_。三、简
10、单题(本大题共27分,每小题9分)31、什么是进程?什么是线程?进程与线程有何区别?答:(1)进程是具有独立功能程序在某个数据集合上的一次执行过程。(2分) (2)线程是进程内的一个执行实体或执行单元。(2分) (3)进程和线程的区别:(a)不同进程的地址空间是独立的,而同一进程内的线程共享同一地址空间。一个进程的线程在另一个进程内是不可见的。(b) 在引入线程的操作系统中,进程是资源分配和调度的单位,线程是处理机调度和分配的单位,资源是分配给进程的,线程只拥有很少资源,因而切换代价比进程切换低。(2分) 32、什么是死锁?产生死锁的原因和必要条件是什么?答:(1)在多道程序系统中,当一组进程
11、中的每个进程均无限期地等待被改组进程中的另一进程所占有且永远不会释放的资源,此时的系统处于死锁状态,简称死锁。(2分) (2)死锁产生的原因:(a)系统提供的资源有限;(b)进程推进顺序不当。(2分) (3)产生死锁的必要条件:互斥条件、不可剥夺条件、请求和保持条件、循环等待条件。(2分)33、说明作业调度,中级调度和进程调度的区别,并分析下述问题应由哪一级调度程序负责。 (1) 在可获得处理机时,应将它分给哪个就绪进程; (2) 在短期繁重负载下,应将哪个进程暂时挂起。答:(1) 作业调度用于决定把外存中处于后备队列中的哪些作业调入内存,并为它们创建进程,分配资源,然后将新创建进程插入就绪队
12、列;中级调度负责将内存中暂时不具备运行条件的进程换到外存交换区存放,但内存空闲时,又将外存中具备运行条件的进程重新换入内存;进程调度决定将处理机分配给就绪进程队列的哪个进程。(4分) (2)进程调度、中级调度(2分)四、综合题(本大题共12分)34、如图2所示,系统中有三个进程GET、PRO和PUT,共用两个缓冲区BUF1和BUF2。假设BUF1中最多可放11个信息,现已放入了两个信息;BUF2最多可放5个信息。GET进程负责不断地将输入信息送入BUF1中,PRO进程负责从BUF1中取出信息进行处理,并将处理结果送到BUF2中,PUT进程负责从BUF2中读取结果并输出。试写出正确实现GET、P
13、RO、PUT的同步与互斥的算法(要求:(1)用类C语言描述,条理清楚,注释恰当;(2)信号量原语统一使用wait和signal。)PUT PRO GETBUF2BUF1 图2 进程合作答:5semaphore empty1=9;/空buf1的数目 full1=2; /有数据的buf1的数目empty2=5; /空buf2的数目 full1=0; /有数据的buf2的数目 mutex1=mutex2=1; /互斥信号量int main()Cobegin /并发开始 GET(); PRO(); PUT();Coend /并发结束return 0; (3分)/GET进程void GET() whil
14、e(1)wait(empty1);wait(mutex1);将信息送入buf1;signal(mutex1);signal(full1); (3分)/PRO进程void PRO() while(1)wait(full1);wait(mutex1);从buf1中取出信息;signal(mutex1);signal (empty1);wait(empty2);wait(mutex2);将信息送入buf2;signal(mutex2);signal(full2); (3分)/PUT进程void PUT() while(1)wait(full2);wait(mutex2);从buf2中取出信息;signal(mutex2);signal (empty2); (3分)