2022年操作系统练习题及答案.docx
一、填空P15 填空题1. 设计现代 OS 的主要目的是 提高资源利用率 和便利用户 ;2. 单道批处理系统是在解决人机冲突 和 CPU 与 I/O设备速度不匹配 的冲突中进展起来的;3. 在单处理机环境下的多道程序设计具有多道、宏观上同时运行 和微观上交替运行 的特点;4. 现在操作系统的两个最基本的特点是并发和资源共享 ,除此之外,它仍具有 虚拟性 和异步性 的特点;5. 从资源治理的角度看,操作系统具有四大功能:处理机治理 、储备器治理 、设备治理 和文件治理 ;为了便利用户,操作系统仍必需供应 友好的用户接口 ;6. 操作系统的基本类型主要有批处理系统 、分时系统 和实时系统 ;7. 批处理系统的主要优点是资源利用率高 和系统吞吐量大 ;主要缺点是 无交互作用才能 和作业平均周转时间长 ;8. 实现分时系统的关键问题他是人机交互 ,为此必需引入 时间片 的概念,并采纳 时间片轮转 调度算法;9. 分时系统的基本特点是 多路性 、独立性 、交互性 和准时性 ;10. 假设干大事在同一时间间隔内发生称为并发;假设干大事在同一时刻发生称为并行;11. 实时系统可分为 实时信息处理系统 和实时掌握系统 两种类型;民航销售系统属于实时信息处理系统 ;而导弹飞行掌握系统就属于实时掌握系统 ;12. 为了使实时系统高度牢靠和安全,通常不强求资源利用率 ;13. 当前比较流行的微内核的操作系统结构,是建立在层次化结构的基础上的,而且仍采纳了客户机 / 服务器 模式和 面对对象程序设计 技术;P56 填空题1. 在单用户单任务环境下,用户独占全机,此时机内资源的状态,只能由运行程序的操作加以转变,此时的程序执行具有封闭性和可再现性 特点;2. 并发程序之间的相互制约,是由于它们的共享资源 和相互合作 而产生的,因而导致程序在并发执行时具有间断性或异步性 特点;3. 程序并发执行与次序执行时相比产生了一些新特点,分别是间断性 、失去封闭性 和不行再现性 ;4. 引入进程的目的是 使程序能正确地并发执行,以提高资源利用率和系统吞吐量,而引入线程的目的是 削减并发执行的开销, 提高程序执行的并发程度;5. 进程是由 进程掌握块 、程序段 和数据段 组成,其中 进程掌握块 是进程存在的唯独标志6. 进程的最基本特点是 动态性 和并发性 ,除此之外,它仍有 独立特点 、异步性 和结构特点;7. 由于进程的实现是程序的一次执行,所以进程有动态性 的基本特点,该特点仍表现在进程由创建而产生,由 调度而执行,由撤销终止 而消亡,即进程具有肯定的生命期;8. 引入进程带来的好处是 提高资源利用率 和增加系统吞吐量 ;9. 当前正在执行的进程由于时间片用完而暂停执行时,该进程应转变为就绪状态;假设因发生某种大事而不能连续执行时,应转为堵塞状态;假设终端用户的恳求而暂停执行时,它应转变为静止就绪 状态;10. 用户为阻挡进程连续运行,应利用挂起原语;假设进程正在执行,应转变为静止就绪 状态;以后,假设用户要复原其运行,应利用 激活原语,此时进程应转变为 活动就绪 状态;11. 系统中共有 5 个用户进程,且当前CPU 在用户态下执行,就最多可有4 个用户进程处于就绪状态,最多可有4 个用户处于堵塞状态;12. 同步机制应遵循的准就有闲暇让进 、忙就等待 、有限等待 和让权等待 ;13. 在记录型信号量机制中,S.value>0时的值表示 可用的临界资源数量;每次 wait 操作意味着 申请一个临界资源 ,因此应将S.value 减 1 ,当 S.value 小于 0 时,进程应堵塞;14. 在记录型信号量机制中,每次signal操作意味着 释放一个临界资源 ,因此应将 S.value 加 1,当 S.value 0 时,表示 仍有恳求该资源的进程被堵塞 ,此时应 唤醒相应堵塞队列中的首进程;15. 在利用信号量实现进程互斥时,应将临界区 置于 wait操作和 signal操作之间;16. 在每个进程中拜访 临界资源 的那段代码称为临界区;为实现对它的共享,应保证进程互斥进入自己的临界区,为此,在每个进程的临界区前应设置 进入区 ,临界区后应设置 退出区 ;17. 进程通信的类型有 共享储备器 、消息系统 、管道通信 三类,其中 管道通信 利用共享文件进行通信;18. 为实现消息缓冲队列通信,应在PCB 中增加 消息队列首指针 mq 、消息队列互斥信号量mutex、消息队列资源信号量 Sm三个数据项;19. 在采纳用户级线程的系统中,OS 进行 CPU 调度的对象是 进程;在采纳内核支持线程的系统中,CPU 调度的对象是 线程;20. 线程之所以能削减并发执行的开销是由于线程基本不拥有资源 ;P76 填空题1. 高级调度又称作 作业调度 ,其主要功能是 依据肯定的算法从外存的后备队列中选假设干作业进入内存;低级调度又称作 进程调度,其主要功能是 按肯定算法从就绪队列中选一个进程投入执行;2. 进程调度有 抢占调度 和非抢占调度 两种方式;3. 在抢占调度方式中,抢占的原就有时间片原就 、短作业有限 和优先权优先 ;4. 在设计进程调度程序时,应考虑引起调度的因素 、调度算法的挑选 和就绪队列的组织 三个问题;5. 为了使作业的平均周转时间最短,应当挑选短作业进程优先调度算法;为了使当前执行的进程总是优先权最高的进程,就应挑选 立刻抢占的高优先权优先 调度算法;而分时系统就常采纳时间片轮转 调度算法;6. 高响应比优先调度算法综合考虑了作业的运行时间 和等待时间 ;7. 死锁产生的主要缘由是 竞争资源 和进程推动次序非法 ;8. 死锁产生的必要条件是 互斥条件 、恳求与保持条件 、不剥夺条件 和环路等待条件 ;9. 通过破坏死锁产生的四个必要条件可进行死锁的预防,其中互斥条件一般是不答应破坏的,一次性安排全部资源破坏的是其中的恳求与保持 条件,资源的有序安排破坏的是其中的环路等待 条件;10. 在防止死锁的方法中, 答应进程动态地申请资源, 但系统在进行安排运算时应先运算资源安排的安全性 ;假设此次安排不会导致系统进入 担心全状态 ,便将资源安排给它,否就进程等待;11. 解决死锁的方法有预防、 防止、检测并解除等, 一次性安排全部的资源采纳的是其中的预防死锁 方法, 银行家算法采纳的是其中的防止死锁 方法;12. 撤销进程 和剥夺资源 是解除死锁的两种常用的方法;二、简答题P11 例 16操作系统具有哪几大特点?它们之间有何关系?操作系统的特点有并发、资源共享、虚拟和异步性;它们的关系如下 并发和共享式操作系统最基本的特点;为了提高电脑资源的利用率;OS 必定要采纳多道程序设计技术,使多个程序共享系统的资源,并发地执行; 并发和共享互为存在的条件;一方面,资源的共享是以程序进程的并发执行为条件,假设系统不答应程序并发执行,自然不存在资源共享问题;另一方面,假设系统不能对资源共享实施有效的治理,和谐好各个进程对共享资源的拜访,也必将影 响到程序的并发执行,甚至根本无法并发执行; 虚拟技术以并发和资源共享为前提;为了使并发进程能更便利、更有效地共享资源,操作系统常采纳多种虚拟技术来规律上增加 CPU 和设备的数量以及储备器的容量,从而解决众多并发进程对有限的系统资源的争用问题; 异步性是并发和共享的必定结果;操作系统答应多个并发进程共享资源、相互合作,使得每个进程的运行过程受到其他进程的制约,不再“一气呵成” ,这必定导致异步性特点的产生;P12 例 18微内核结构具有哪些优点?为什么? 微内核系统的优点如下: 提高了系统的可扩展性; 在微内核结构中, OS 的大部分功能都是由相对独立的服务器来实现的,用户可以依据需要,选配其中的部分或全部服务器;仍可以随着电脑硬件和OS 技术的进展,相应地更新假设干服务器或增加一些新的服务器; 增强了操作系统的牢靠性;由于全部的服务器都是运行在用户态,它们不能直接拜访硬件,因此,当某个服务器显现错误时,通常只会影响到它自己,而不会引起内核和其他服务器的损坏和崩溃; 可移植性更好; 在微内核的 OS 中,全部与特定 CPU 和 I/O 设备硬件相关的代码均放在内核和内核下面的硬件隐匿层中,而操作系统其他绝大部分即各种服务器均与硬件平台无关,因而,把操作系统移植到另一硬件平台上所需做的改动比较小; 适用于分布式系统;对用户进程即客户而言,假如他通过消息传递与服务器通信,那么他只需发送一个恳求,然后等待服务器发来的响应,而根本无需知道这条消息在本地机就地处理仍是通过网络送给远地机上的服务器;P18 进程的状态1. 进程的三种基本状态就绪状态;进程已获得除CPU 以外的全部必要资源,只要得到CPU ,便可立刻执行;执行状态;进程已得到CPU ,其程序正在 CPU 上执行;堵塞状态;正在执行的进程因某种时间如I/O 恳求的发生而临时无法连续执行,只有相应大事完成后,才能去竞争CPU ;2. 进程的挂起状态“挂起”的实质是使进程不能连续执行,即使挂起后的进程处于就绪状态,它也不能参加CPU 的竞争;因此,称被挂起的进程处于静止状态;没被挂起的进程就处于活动状态;处于静止状态的进程,只有通过“激活”动作,才能转换成活动状态P34 例 1在操作系统中为什么要引入进程的概念?它会产生什么样的影响?在操作系统中引入进程的概念,是为了实现多个程序的并发执行;传统的程序不能与其他程序并发执行,只有在为其创建进程后,才能与其他程序进程并发执行;这是由于并发执行的程序即进程是“停停走走”地执行,只有在为它创建进程后,在它停下时,方能将其现场信息储存在它的PCB 中,待下次被调度执行时,再从PCB 中复原 CPU 现场并连续执行,而传统的程序却无法满意上述要求;建立进程所带来的好处是使多个进程能并发执行,这极大地提高了资源利用率和系统吞吐量;但治理进程也需付出肯定的代 价,包括进程掌握块及和谐各个运行机构所占用的内存空间开销,以及为进行进程间的切换、同步及通信所付出的时间开销;P36 例 4PCB 的作用是什么?进程掌握块的作用,是使一个在多道程序环境下不能独立运行的程序,成为一个能独立运行的基本单位,即一个能与其他进程并发执行的进程;P58 处理机调度的三个级别1. 高级调度2. 低级调度分两种方式:非抢占方式抢占方式抢占的原就有:优先权原就、短作业优先原就、时间片原就3. 中级调度P59 调度算法1. 先来先服务算法 FCFS2. 短作业进程有限 SJF/SPF 3. 高优先权有限 HPF 进程优先权的设置通常分成静态和动态两种:静态优先权动态优先权4. 高响应比优先调度算法HRRN 5. 时间片轮转法 RR6. 多级反馈队列调度算法FBP66 例 2试说明低级调度的主要功能低级调度用于打算就绪队列中的哪个进程应获得处理机,并由分派程序把处理机安排给该进程;其主要功能有:储存当前进程的处理机现场信息按某种算法挑选投入执行的新进程复原新进程的现场,从而将处理机安排给新进程P69 例 5为什么说多级反馈队列调度算法能较好地满意各方面用户的需要?对终端型作业用户而言,他们提交的作业大多属于交换型作业,作业通常较小,系统只要能使这些作业在第一个队列所规定的时间片内完成,便可使他们都感到中意;对于短批作业作业用户而言,开头时他们的作业像终端型作业一样,假如仅在第一个队列中执行一个时间片即可完成,便可获得与终端型作业一样的响应时间;对于稍长的作业,通常也只需在其次队列和第三队列各执行一个时间片即可完成,其周转时间仍旧很短;对于长批处理作业用户而言,他们的作业将依次在第1 ,2,n 个队列中运行,然后再按轮转方式运行,用户不必担忧其作业长期得不处处理,而且每往下降一个队列,其得到的时间片将随着增加,故可进一步缩短长作业的等待时间;P70 例 7对下面五个非周期性实时任务,按最早开头截止时间优先调度算法应如何进行进程到达时间CPU 调度? 执行时间开头截止时间A1020110B202020C402050D502090E602070P70 例 8假设有三个周期性任务,任务A 要求每 20ms 执行一次,执行时间为10ms ;任务 B 要求每 50ms 执行一次,执行时间为10ms ;任务 C 要求每 50ms 执行一次,执行时间为15ms ,应如何按最低放松度优先算法对它们进行CPU 调度?P72 例 12在银行家算法中,假设显现下面的资源安排情形:ProcessAllocationNeedAvailable P0003200121622P110001650P213542356P300320652P400140656试问:1. 该状态是否安全?2. 当进程 P2 提出恳求 Request1,2,2,2后,系统能否将资源安排给它?3. 假如系统立刻满意 P2 的上述恳求,就系统是否立刻进入死锁状态?三、编程题P39 例 11试写出相应的程序来描述图所示的前趋关系;S1S2S3S4S5S6gS7前趋图中存在着如下的前趋关系:S1 S2 、 S1 S3 、 S2 S4 、 S2 S5 、 S3 S6 、 S4 S7 、 S5 S7 、 S6 S7因此可分别为它们设置初始值为0 的信号量 a、b 、c、d 、e、f、g 、h ,详细的程序可描述如下: var a,b,c,d,e,f,g,h:semaphore:=0,0,0,0,0,0,0,0;beginparbeginbeginS1;signala;signalb;end;beginwaita;S2;signalc;signald;end; beginwaitb;S3;signale;end;beginwaitc;S4;signalf;end;beginwaitd;S5;signalg;end; beginwaite:S6;signalh;end; beginwaitf;waitg;waith;S7;end;parendendP42 例 13用信号量实现共享单位中的置换进程与打印进程运算进程不断地运算出结果并将它放入单缓冲区中,打印进程就负责从单缓冲区中取出每一个结果进行打印;从临界资源的角度考虑:var full,empty:semaphore:=0,1 beginparbegincp:beginrepeatcompute next number; waitempty;add the number to buffer; signalfull;until falseend9 pp:beginrepeatwaitfull;endtake a number from buffer; signalempty;print the number; until falseparendend从同步的角度考虑:var S A,SB:semaphore:=0,0; beginparbegin cp:begincompute the first number; add the number to buffer; signalS A;repeatcompute next number; waitS B ;add the number to buffer; signalS A ;until falseend pp:beginrepeatwaitS A ;take a number from buffer; signalS B;print the number;until falseendend parend