此书在最后的附录B中,有给出部分重难点部分的参考答案。会在最后放上图片。如果想要此书习题答案,可点以下链接:为一个压缩包,以图片形式,习题图片按章节排序,答案图片按书页排序。
《操作系统原理》孟庆昌等编著之课后部分习题+答案(图片版)-其它文档类资源-CSDN文库
但是其余习题,需此书读者在书中找到相应章节处得到答案。
所以,博主此系列文章,只是像做题一般,把未给出答案的部分题目(博主认为有需要写的)做出来,以当作复习,加深理解。
尽量保证正确(可能会把不是题目要求的但觉得重点的会考的也写上去),如果不同意见,可留言讨论。
补充各章节链接:
【考研复习】《操作系统原理》孟庆昌等编著课后习题+答案——第一章_住在阳光的心里的博客-CSDN博客
【考研复习】《操作系统原理》孟庆昌等编著课后习题+答案——第二章_住在阳光的心里的博客-CSDN博客
待补充
1. 解释以下术语:作业调度、进程调度、周转时间、平均周转时间、响应时间。
答:(1)作业调度:宏观调度,它所选择的作业只是具有获得处理机的资格,但尚未占有处理机,不能立即在其上实际运行。
(2)进程调度:微观调度,根据一定的算法,动态地把处理机实际分配给所选择的进程,使之真正活动起来。
(3)周转时间:从作业提交到作业完成的时间间隔。
(4)平均周转时间:作业周转总时间 / 作业个数
(5)响应时间:从提交第一个请求到产生第一个响应所用的时间。
2. 处理机调度的主要目的是什么?
答:主要目的是分配处理机。(处理机分配由调度和分派两个功能组成。)
3. 高级调度与低级调度的主要功能是什么? 为什么要引入中级调度?
答:(1)高级调度:(又称作业调度)其主要功能是根据一定的算法,从输入的一批作业中选出若干个作业,分配必要的资源,如内存、外设等,为它建立相应的用户作业进程和为其服务的系统进程(如输入、输出进程),最后把它们的程序和数据调入内存,等待进程调度程序对其执行调度,并在作业完成后作善后处理工作。
(2)低级调度:(又称进程调度)其主要功能是根据一定的算法将CPU分派给就绪队列中的一个进程。(是最基本的一种调度)
(3)引入中级调度的原因:为了使内存中同时存放的进程数目不至于太多,有时就需要把某些进程从内存中移到外存上上,以减少多道程序的数目。其主要目的是提高内存的利用率和系统吞吐量。
4. 作业在其存在过程中分为哪四种状态?
答:通常,作业状态分为4种:提交、后备、执行和完成。
5. 在OS中,引起进程调度的主要因素有哪些?
答:(1)现运行进程任务完成或出现异常情况;(2)现运行进程在运行中又提出了新的资源申请;(3)现运行进程由于执行某些原语,使进程由运行态变为阻塞态;(4)在分时系统中,如果现运行进程给定的时间片用完了;(5)在采用可剥夺式的调度方式时,当有更高优先级的进程进入就绪队列时,要引起重新调度。
8. 简述FCFS、 RR和优先级调度算法的实现思想。
答:实现思想:
(1)FCFS(先来先服务):“排队买票”的办法。
作业调度:每次调度从后备作业队列(按进入时间先后顺序)中选择一个或几个作业,将它们调入内存,分配相应的资源,创建进程,然后把进程放入就绪队列;
进程调度:每次调度从就绪队列中选择一个最先进入该队列的进程,为之分配处理机(CPU),使之投入运行,该进程一直运行到完成或发生某事件而阻塞后才放弃处理机。
(2)RR(时间片轮转法):系统把所有就绪进程按先入先出的原则排成一个队列,新来的进程加到就绪队列末尾。每当执行进程调度时,进程调度程序总是选出就绪队列的队首进程,让它在CPU上运行一个时间片的时间。
(3)优先级调度算法:每次从就绪队列中选择优先级最髙的一个或几个作业,将它们调入内存,分配必要的资源,创建进程并放入就绪队列;
(可参考:CPU调度算法——FCFS算法/SJF算法/优先级调度算法/RR算法_露馅的豆包的博客-CSDN博客_sjf算法)
9. Linux系统中, 进程调度的方式和策略是什么? 对用户进程和核心进程如何调度?
答:Linux系统中, 进程调度的方式是基本上采用“抢占式优先级”方式。
其调度策略有三种,分别为SCHED_FIFO(适合短实时进程)、SCHED_RR(适合较长时间的实时进程)、SCHED_OTHER(适合交互式的分时进程)。
10. 简述一条shell命令在Linux系统中的实现过程。
答:系统初启后,核心为每个终端用户建立一个进程去执行shel解释程序,它的执行过程基本上按照如下步骤:
① 读取用户由键盘输入的命令行。
② 分析命令,以命令名作为文件名,其他参数改造为系统调用 execve( ) 内部处理所要求的形式。
③ 终端进程调用 fork( ) 建立一个子进程。
④ 终端进程本身用系统调用 wai4( ) 来等待子进程完成(如果是后台命令,则不等待)。当子进程运行时调用execve(),子进程根据文件名(即命令名)到目录中查找有关文件(这是命令解释程序构成的文件),调入内存,执行这个程序(即执行这条命令)。
⑤ 如果命令末尾有“&”号(后台命令符号),则终端进程不用执行系统调用wait4(),而是立即发出提示符,让用户输入下一个命令,转向步骤①。如果命令末尾没有“&”号,则终端进程要一直等待, 当子进程(即运行命令的进程)完成工作后要终止,向父进程(终端进程)报告,此时终端进程醒来,在做必要的判别等工作后,终端进程发提示符,让用户输入新的命令,重复上述处理过程。

11. 中断响应主要做哪些工作? 由谁来做?
答:中断响应由硬件实施,对中断请求的整个处理过程是由硬件和软件结合起来而形成的一套中断机构实施的。发生中断时,CPU暂停执行当前的程序,而转去处理中断。这个由硬件对中断请求做出反应的过程,称为中断响应。一般来说,中断响应顺序执行下述三步动作:
① 中止当前程序的执行。
② 保存原程序的断点信息 ( 主要是程序计数器PC和程序状态寄存器PS的内容 )。
③ 转到相应的处理程序。
通常CPU在执行完一条指令后,立即检查有无中断请求。如果有中断请求,而且“中断允许”触发器为1 (表示CPU可以响应中断请求),则立即做出响应。
12. 一般中断处理的主要步骤是什么?
答:一般分为中断响应和中断处理两个步骤,中断响应由硬件实施、中断处理主要由软件实施。
13. UNIX/Linux系统中系统调用的一般处理过程是怎样的?
答:请参考如下:
Linux系统调用详解(实现机制分析) - 知乎 (zhihu.com)
Linux系统调用之系统调用过程_HDong99的博客-CSDN博客_linux系统调用过程
15. 处理机调度一般可分为哪三级?其中哪一级调度必不可少?为什么?
答:(1)处理机调度一般可分为高级调度(作业调度)、中级调度和低级调度(进程调度)。
(2)其中进程调度必不可少。
(3)进程只有在得到CPU之后才能真正活动起来,所有就绪进程经由进程调度才能获得CPU的控制权,实际上,进程调度完成一台物理的CPU转变成多台虚拟(或逻辑)的CPU的工作,进程调度的实现策略往往决定了操作系统的类型,其算法优劣直接影响整个系统的性能。
习题:
6. 作业调度与进程调度两者间如何协调工作?
答:“作业调度从外存的后备队列中选择一批作业调入内存,为它们创建进程,这些进程被送入就绪队列。进程调度从就绪队列中选出一个进程来,并把它的状态改为运行态,把CPU分配给它。当运行进程要等待某一事件时,就让出CPU,进人相应的阻塞队列,并进行进程调度。运行进程完成后,由作业调度进行善后处理工作。
7. 在确定调度方式和调度算法时,常用的评价准则有哪些?
答:在确定调度方式和调度算法时,常用的评价准则有: CPU利用率、吞吐量、周转时间、就
绪等待时间和响应时间。
14. “系统调用是操作系统和用户程序之间的接口,库函数也是操作系统和用户程序间的接口",这句话正确吗?为什么?
答:不正确。系统调用和库函数的区别如下:
① 层次不同。系统调用是操作系统提供的、与用户程序之间的接口,它一般位于操作系统核心的最高层,属于操作系统的部分;而库函数位于用户层,属于用户程序而非系统程序。
②功能不同。当CPU执行到用户程序中的系统调用时,处理机的状态就从用户态变为核心态,进入操作系统内部,执行它的有关代码,从而实现系统中各种资源的统一管理,提供对外的服务;而库函数是程序设计语言中为方便用户编程,将一些常用的功能模块整合、编写成的函数,它本身不能实现处理机状态转换,不能直接调用操作系统内部的代码,所以其功能的实现不是由操作系统完成的。
③作用不同。所有核外的程序(包括库函数)都必须经由系统调用才能进人操作系统。
其他题目答案:
