自由尋覓快樂別人從沒法感受

0%

操作系统习题一

第一章

一、设计现代OS的主要目标是什么?
现代OS的主要目标有4个:方便性、有效性、可扩充性、开放性
方便性:系统将用户采用高级语言编写的程序翻译成机器码,或直接通过OS所提供的各种命令操纵计算机系统,方便了用户,使计算机变得易学易用
有效性:提高了系统资源的利用率,提高系统的吞吐量,缩短程序运行周期
可扩充性:能够方便地添加新功能和模块,以及对原有的功能和模块进行修改
开放性:能够遵循国际标准开发硬件和软件,都能彼此兼容,方便地实现互联

二、为什么说操作系统实现了对计算机资源的抽象?
操作系统在裸机上覆盖了一层设备管理软件,隐藏了物理接口的实现细节。用户无需关心或了解某些功能具体是如何实现的,但也能够很好地利用计算机的资源,操作系统在这里就是实现了对计算机资源的抽象

三、OS有哪几大特征,其最基本的特征是什么?
OS有并发、共享、虚拟、异步,这4大特征
并发:指两个或多个事件在同一时间间隔内发生,在微观上就是多个程序交替执行
共享:系统中的资源可供内存中多个并发执行的进程共同使用
虚拟:通过某种技术将一个物理实体变为若干个逻辑上的对应物
异步:异步使得处理器不需要等待进程IO,继续执行下一个程序,在程序IO中断完成后通过回调函数继续执行

四、是什么原因使操作系统具有异步性特征?
为了提高CPU资源的利用率,在程序IO阻塞的过程中,如果没有异步执行的概念,CPU将会一直等待进程IO完成,这浪费了大量的CPU资源

五、处理机管理有哪些主要功能?其主要任务是什么?
进程控制:为作业创建进程、撤销已结束的进程,控制进程在运行过程中的转换
进程同步:保证多个进程运行时的协调,确保系统资源的合理分配
进程通信:实现相互合作的进程之间的信息互换
调度:包括作业调度和进程调度。作业调度的基本任务是从后背队列中按照一定的算法选择出若干个作业,为他们分配运行时所需的资源。进程调度的任务是从进程的就绪队列中按照一定的算法选出一个进程,将处理机分配给该进程

六、内存管理有哪些主要功能?其主要任务是什么?
内存分配:为每道程序动态或静态地分配内存空间,提高储存器的利用率
内存保护:确保每道程序仅在自己的内存空间内运行,互不干扰。不允许用户程序访问操作系统的程序和数据,也不允许用户程序转移到非共享的其他用户程序中去执行
地址映射:将地址空间中的逻辑地址转换为内存空间中与之对应的物理地址
内存扩充:借助虚拟储存技术,从逻辑上扩大内存,其中包括了请求调入功能和置换功能

七、设备管理有哪些主要功能?其主要任务是什么?
缓冲管理:在IO设备和CPU之间引入缓冲,缓解了CPU和IO设备速度不匹配的矛盾
设备分配:根据用户的请求、系统现有资源情况以及按照某种预设分配策略,为之分配所需的设备
设备处理:实现CPU和设备控制器之间的通信,又称为驱动程序

八、文件管理有哪些主要功能?其主要任务是什么?
文件储存空间的管理:对文件以及文件的储存空间进行统一的管理
目录管理:为每个文件建立一个目录项,提高检索文件的速度
文件的读/写保护:防止系统中的文件被非法盗取和破坏,对读/写中的文件提供保护

九、什么是微内核OS?
微内核OS是将系统服务的实现与系统的基本操作规则区分开来,让服务之间互相独立,减少了系统的耦合度,系统也可以根据功能的需要添加或更换模块使系统功能更具有弹性

第二章

一、为什么程序并发执行会产生间断性特征?
程序在并发执行时,由于他们共享系统资源,以及为完成同一项任务而相互合作,致使在这些并发执行的程序之间形成了相互制约的关系。这种相互制约的关系导致并发程序具有“执行——暂停——执行”这种间断性规律

二、程序并发执行时为什么会失去封闭性和可再现性?
系统中的资源被多个程序共享使用时,其中任一程序改变资源的状态时,其他程序也会受到影响,因此而失去了封闭性。程序失去封闭性后,并发执行的过程中会发生许多意想不到的状态值修改,也就是失去了可再现性

三、PCB提供了进程管理和进程调度所需要的哪些信息?
进程管理:通用寄存器、指令计数器、程序状态字、用户栈指针
进程调度:进程状态、进程优先级、事件、其他信息

四、进程控制块的组织方式有哪几种?
线性方式、链接方式、索引方式

五、何谓操作系统的内核?内核的主要功能是什么?
操作系统内核是一些与硬件紧密相关的模块(中断处理程序)、各种常用设备的驱动程序以及运行频率较高的模块(时钟管理、进程调度和许多公用模块),它们都常驻内存,主要提供以下功能:
支撑功能:中断处理、时钟管理、原语操作
资源管理功能:进程管理、储存器管理、设备管理

六、试说明进程在三个基本状态之间转换的典型原因。
就绪 -> 执行:进程获得分配的CPU时间片,开始执行
执行 -> 阻塞:执行中的进程发生IO中断,因而无法继续执行,此时进程又执行状态变为阻塞状态
阻塞 -> 就绪:进程IO完成,但还未分配到CPU时间片,因此转为就绪状态

七、试从调度性、并发性、拥有资源及系统开销方面对进程和线程进行比较。
调度性:进程的调度包括了上下文的切换,开销较大。而线程的调度仅需保存和设置少量寄存器内容,切换的代价小于进程。在同一进程中的线程切换不会引起上下文的切换,但不同进程中的线程切换会引起上下文的切换
并发性:同一进程不能并发,而同一进程中的不同线程可以并发。不同进程之间可以并发,不同进程的不同线程可以并发
拥有资源:进程可以拥有资源,而线程本身不拥有系统资源,仅有保证独立运行的资源。线程的资源可以共享该进程拥有的资源
系统开销:线程的创建、切换和撤销的花销都比进程要小得多

第三章

一、高级调度与低级调度的主要任务是什么?为什么要引入中级调度?
高级调度:调度对象是作业,根据某种算法,决定将外存上处于后备队列中的哪几个作业调入内存,为他们创建进程、分配必要的资源,并将他们放入就绪队列
低级调度:调度对象是进程,根据某种算法,决定就绪队列中的哪个进程应获得处理机,并由分派程序将处理机分配给被选中的进程
引入中级调度的目的:提高内存的利用率和系统的吞吐量。将暂时不能运行的进程调至外存等待,当具备运行条件时重新调入内存

二、处理机调度算法的共同目标是什么?批处理系统的调度目标又是什么?

处理机调度算法的共同目标:

  • 提高系统资源利用率
  • 提高公平性,使进程都获得合理CPU时间
  • 保持系统资源使用的平衡
  • 制订的策略强制执行

    批处理系统的调度目标:

  • 缩短平均周转时间
  • 提高系统的吞吐量
  • 提高处理机利用率

三、在作业调度中应如何确定接纳多少个作业和接纳哪些作业?
接纳作业的数量根据系统规模、运行速度、作业大小、以及能否获得较好的系统性能等情况作出适当的抉择
接纳哪些作业根据不同的调度算法来判断,最简单的是先来先服务调度算法,较常用的是短作业优先调度算法和基于作业优先级的调度算法

四、试说明低级调度的主要功能。
根据某种算法,决定就绪队列中的哪个进程应获得处理机,并由分派程序将处理机分配给被选中的进程

五、在选择调度方式和调度算法时,应遵循的准则是什么?
应尽量保证公平,每个进程分得的CPU时间片应尽量平衡。保持系统资源使用的平衡性

六、试比较FCFS和SJF两种进程调度算法。
先来先服务(FCFS)算法:每次从就绪队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行,该进程一直运行到完成或发生某时间而阻塞后,进程调度程序才将处理机分配给其他进程
短作业优先(SJF)算法:按照作业的长短来计算优先级,作业越短,优先级越高
与FCFS比,SJF需要预知作业的运行时间,而且对长作业非常不利,两种算法都不能实现人机交互,SJF没有考虑作业的紧迫程度,不能保证紧迫性作业能够得到及时的处理

七、在时间片轮转法中,应如何确定时间片的大小?
一个较为可取的时间片大小是略大于一次典型的交互所需要的时间,时间片过长会导致算法退化为FCFS,过短会增加系统执行进程调度的开销

八、为什么说多级反馈队列调度算法能较好地满足各个方面用户的需要?
多级反馈队列调度算法不必事先知道各种进程所需的执行时间,不同类型的进程放在不同优先级的就绪队列中,每个队列采用FCFS算法,这种算法能够较好地满足各种类型进程的需要,因此能够很好地满足各个方面用户的需要

九、什么是最低松弛度优先调度算法?举例说明之。
根据任务的紧急程度确定任务的优先级,紧急程度越高,该任务的优先级就越高
例如:若一个任务A在200ms时必须完成,它本身运行所需的时间是100ms,因此调度程序必须在100ms之前调度执行,该任务的紧急程度为100ms。而另一个任务B在400ms时必须完成,它本身运行所需的时间是150ms,则松弛程度为250ms。根据算法可知,最低松弛度的任务是A,接下来应该执行A任务

十、何谓“优先级倒置”现象,可采取什么方法来解决?
优先级倒置:低优先级的任务占有了高优先级任务的资源,导致高优先级任务阻塞,可采取优先级继承的方法解决

十一、试分别说明可重用资源和可消耗资源的性质。
可重用资源:可供用户重复使用多次的资源,每一个可重用的资源只能分配给一个进程使用。进程在使用可重用资源时,必须参照:请求资源、使用资源、解放资源的顺序使用。系统中的可重用资源数量相对是固定的
可消耗资源:又称临时性资源,是在进程运行期间不断变化的。进程在运行期间可以不断创造可消耗性资源的单元,在进程结束后可消耗资源也跟着消失

十二、试举例说明竞争不可抢占资源引起的死锁。
假设A进程运行需要1号和2号资源,目前1号资源已经申请成功,由A进程占用。而B进程的运行也需要1号和2号资源,且B进程已经申请占用了2号资源。两个进程都在等待对方释放资源,从而引起了进程的死锁

十三、为了破坏“请求和保持”条件而提出了两种协议,试比较这两种协议。
第一种协议:进程在运行之前必须一次性申请在整个运行过程中所需的全部资源。其优点是简单、易行且安全,但资源被严重浪费,并且进程会经常发生饥饿现象
第二种协议:是第一种协议的改进,它允许一个进程只获得运行初期所需的资源后,便开始运行,运行过程中再逐步释放已分配给自己的、且已用毕的全部资源,然后再请求新的所需资源。第二种协议不仅能使进程更快地完成任务,提高设备的利用率,还可以减少进程发生饥饿的概率

十四、何谓死锁?产生死锁的原因和必要条件是什么?
如果一组进程中的每一个进程都在等待仅由该组进程中的其他进程才能引发的事件,那么该组进程是死锁的
产生死锁的原因有:竞争不可抢占性资源引起死锁,竞争可消耗资源引起死锁
产生死锁的必要条件:互斥条件->进程对所分配到的资源进行排他性使用;请求和保持条件->进程已经保持了至少一个资源,但又提出了新的资源请求;不可抢占条件->进程已获得的资源在未使用完之前不能被抢占;循环等待条件->在发生死锁时,必然存在一个进程——资源的循环链

十五、在解决死锁问题的几个方法中,哪种方法最易于实现?哪种方法使资源利用率最高?
解决死锁问题有预防和解除2种思路。预防死锁有:破坏“请求和保持”条件,破坏“循环等待”条件,保持系统处于安全状态,银行家算法等方法。解除死锁有:终止进程,抢占资源等方法
这几种方法中,破坏死锁产生的条件最容易实现,银行家算法和保持系统处于安全状态的资源利用率最高

十六、请详细说明可通过哪些途径预防死锁。
破坏“请求和保持”条件:进程逐步申请、释放资源
破坏“循环等待”条件:进程占有的资源可以被抢占
保持系统处于安全状态:在分配资源之前计算资源分配的安全性
银行家算法:在分配资源之前计算剩余资源的可用情况

十七、在银行家算法的例子中,如果P0发出的请求向量由Request(0,2,0)改为Request(0,1,0),问系统可否将资源分配给它?
假设资源分配给了P0,则剩余情况如下:Avalibale(2, 2, 0)。可以找到一个安全序列:{P1, P3, P2, P0, P4},因此系统能将资源分配给他

十八、在银行家算法中,若出现下述资源分配情况,试问:

Process Allocation Need Available
P0 0 0 3 2 0 0 1 2 1 6 2 2
P1 1 0 0 0 1 7 5 0
P2 1 3 5 4 2 3 5 6
P3 0 3 3 2 0 6 5 2
P4 0 0 1 4 0 6 5 6

(1)该状态是否安全?
​ 可以找到一个安全序列:{P0, P3, P1, P2, P4},因此该状态是安全的
(2)若进程P2提出请求Request(1,2,2,2)后,系统能否将资源分配给它?
​ 因为Need(2,3,5,6)<Request(1,2,2,2)且Request(1,2,2,2)<Avaliable(1,6,2,2)。暂且认为可以分配之后,可用资源为Avaliable(0,4,0,0),无法找到一个安全序列,因此系统不能将资源分配给它