操作系统之处理机调度与死锁

1.高级调度与低级调度的主要任务是什么?为什么要引入中级调度?
a.高级调度又称长程调度或作业调度,它的调度对象是作业。其主要功能是根据某种算法,决定将外存上处于后备队列中的哪几个作业调入内存,为它们创建进程、分配必要的资源,并将它们放入就绪队列。
b.低级调度又称为进程调度或短程调度,其所调度的对象是进程(或内核级线程)。其主要功能是,根据某种算法,决定就绪队列中的哪个进程应获得处理机,并由分派程序将处理机分配给被选中的进程。
c.中级调度又称为内存调度。引入中级调度的主要目的是,提高内存利用率和系统吞吐量。

2.处理机调度算法的公共目标是什么?批处理系统的调度目标又是什么?
(1)处理机调度算法的公共目标是:
a.资源利用率:
CPU的利用率=CPU有效工作时间/(CPU有效工作时间+CPU空闲等待时间)
b.公平性
公平性是指应使诸进程都获得合理的CPU时间,不会发生进程饥饿现象。
c.平衡性
为使系统中的CPU和各种外部设备都能经常处于忙碌状态,调度算法应尽可能保持系统资源使用的平衡性。
d.策略强制执行

(2)批处理系统的目标:
a.平均周转时间短:周转时间是指从作业被提交给系统开始,到作业完成为止的这段时间间隔。
b.系统吞吐量高:吞吐量是指在单位时间内系统所完成的作业数。
c.处理机利用率高:

3.分时系统目标:
a.响应时间快:响应时间是指用户通过键盘提交一个请求开始,直到屏幕上显示出处理结果为止的一段时间间隔。
b.均衡性:均衡性是指系统响应时间的快慢应与用户所请求服务的复杂性相适应。

4.实时系统的目标:
a.截止时间的保证:截止时间是指某任务必须开始执行的最迟时间,或必须完成的最迟时间。
b.可预测性。

5.何谓作业、作业步和作业流?
a.作业:包含了通常的程序和数据,而且还配有一份作业说明书,系统根据该说明书来对程序的运行进行控制。在批处理系统中,是以作业为基本单位从外存调入内存的。
b.作业步:在作业运行期间,每个作业都必须经过若干个相对独立,又相互关联的顺序加工步骤才能得到结果。把其中的每一个加工步骤称为作业步,各作业步之间存在着相互联系,往往是上一个作业步的输出作为下一个作业步的输入。

6.在什么情况下需要使用作业控制块JCB,其中包含了哪些内容?
a.为了管理和调度作业,在多道批处理系统中,为每个作业设置一个作业控制块JCB,它是作业在系统中存在的标志,其中保存了系统对作业进行管理和调度的全部信息。
b.在JCB中包含的内容有:作业标识、用户名称、用户账号、作业类型(CPU繁忙型、I/O繁忙型、批量型、终端型)、作业状态、调度信息(优先级、作业运行时间)、资源需求(预计运行时间、要求内存大小等)、资源使用情况等。

7.作业运行的三个阶段和三种状态。
a.收容阶段:操作员把用户提交的作业通过某种输入方式或SPOOLing系统输入到硬盘上,再为该作业建立JCB,并把它放入后备队伍中。此时作业的状态为“后备状态”;
b.运行阶段:当作业被作业调度选中后,便为他分配必要的资源和建立进程,并将它放入就绪队列。一个作业从第一次进入就绪状态开始。相应地,此时作业的状态为”后备状态”;
c.完成阶段:当作业运行完成,或发生异常情况而提前结束时,作业便进入完成阶段,相应的作业状态为“完成状态”。此时系统中的“终止作业”程序将会回收已分配给给作业的作业控制块和所有资源,并将作业运行结果信息形成输出文件后输出。

8.作业调度的主要任务。
作业调度的主要任务是,根据JCB中的信息,检查系统中的资源能否满足作业时资源的需求,以及按照一定的调度算法,从外存的后备队列中选取某些作业调入内存,并为它们创建进程、分配必要的资源、然后再将新创建的进程排在就绪队列上等待调度。因此,也把作业调度称为接纳调度。每次执行作业调度,需要考虑两个问题:
a.接纳多少个作业。b.接纳哪些作业。

9.为什么要引入高响应比优先调度算法?它有何优点?
对于先来先服务调度算法,作业的等待时间就是作业的优先级,等待时间越长,其优先级越高。对于短作业优先调度算法,作业的长短就是作业的优先级,作业所需运行时间越短,其优先级越高。高响应比优先调度算法则是考虑了作业的等待时间,又考虑作业运行时间的调度算法,因此既照顾了短作业,又不致使长作业的等待时间过长,从而改善处理机调度的性能。

10.在抢占调度方式中,抢占的原因会什么?
在现代OS中广泛采用抢占方式,这是因为:对于批处理系统,可以防止一个长进程长时间占用处理机,以确保处理机能为所有进程提供更为公平的服务。在分时系统中,只有采用抢占方式才能实现人-机交互。在实时系统中,抢占方式能满足实时任务的需求。“抢占”不是一种任意的行为,需要遵循:优先权原则,短进程优先原则和时间片原则。

11.试比较FCFS和SJF两种进程调度算法。
a.FCFS(First-come first served)先来先服务
最简单的调度算法,该算法可用于作业调度,也可用于进程调度。优先考虑在系统中等待时间最长的作业,而不管该作业所需执行时间的长短。
b.SJF(short job first)短作业优先
以作业的长短来计算优先级,作业越短,其优先级越高。作业的长短是以其要求运行时间决定的。可用于作业调度和进程调度。

12.优先级调度算法和高响应比优先调度算法。
a.优先级调度算法是基于作业的紧迫程度,由外部赋予作业相应的优先级,调度算法是根据该优先级进行调度的。
b.高相应比优先调度算法室既考虑作业的等待时间,又考虑作业运行时间的调度算法。为每个作用引入一个动态优先级,即优先级是可以改变的,令它随等待时间延长而增加,这将使长作业的优先级在等待期间不断增加而能够提高优先级。优先权=(等待时间+要求服务时间)/要求服务时间

13.进程调度的任务
(1)保存处理机的现场信息。
(2)按某种算法选取进程。
(3)把处理机分配给进程。

14.进程调度机制
(1)排队器
(2)分派器
(3)上下文切换器

15.进程调度方式
(1)非抢占式
(2)抢占式

16.轮转调度算法
(1)轮转调度算法:最简单最常用的是基于时间片的轮转调度算法。轮转法的基本原理是根据FCFS策略,将所有就绪进程排成一个就绪队列,并可设置每隔一定时间间隔即产生一次中断,激活系统中的进程调度程序,完成一次调度,将CPU分配给队首进程,令其执行。
(2)当进程在一个时间片内运行完成,则立即激活调度程序,将它从就绪队列中删除,同时调度就绪队列中的队首程序,并启动一个新的时间片。
(3)时间片大小应选择略大于一次典型的交互所需要的时间,使大多数交互式进程可以在一个时间片内完成,从而获得很小的响应时间。

17.优先级调度算法:把处理机分配给就绪队列中优先级最高的进程。
(1)优先级调度算法的类型:非抢占式优先级调度算法和抢占式优先级调度算法。
(2)优先级类型:
a.静态优先级:在线程创建时确定,在进程的整个运行期间保持不变。
b.动态优先级:指在创建线程之初,先赋予其一个优先级,然后其值随进程的推进或等待时间的增加而改变,以便获得更好的调度性能。

18.多队列调度算法
将系统中的进程就绪队列从一个拆分成多个,将不同类型或性质的进程固定分配在不同的就绪队列。不同的就绪队列采用不同的算法,一个就绪队列中的进程可以设置不同的优先级,不同的就绪队列本身也可以设置不同的优先级。

19.多级反馈队列
设置多个就绪队列,每个队列都采用FCFS算法,按队列优先级调度。

20.基于公平原则的调度算法。
(1)保证调度算法:保证调度算法是另外一种类型的调度算法,它向用户所作出的保证并不是优先运行,而是明确的性能保证,该算法可以做到调度的公平性。一种比较容易实现的性能保证是处理机分配的公平性。
(2)公平分享调度算法:分配给每个进程相同的处理机时间。对进程来说,体现了一定程度的公平性,如果每个用户拥有的进程数不一致,就会发生对用户的不公平问题。

21.实现实时调度的基本条件
(1)提供必要的信息。
(2)系统处理能力强。
(3)采用抢占式调度机制。
(4)具有快速切换机制。

22.实时调度算法的分类
按不同方式对实时调度算法加以分类:
(1)根据实时任务性质,可将实时调度的算法分为硬实时调度算法和软实时调度算法。
(2)按调度方式,分为非抢占调度算法和抢占调度算法。

23.最早截止时间优先EDF算法和最低松弛度优先LLF算法。
(1)最早截止时间优先EDF(Earliest Deadline First)算法:该算法是根据任务的截止时间确定任务的优先级,任务的截止时间越早,其优先级越高。具有最早截止时间的任务排在队列的队首。
(2)最低松弛度优先LLF(Least Laxity First)算法:该算法在确定任务的优先级时,根据的是任务的紧急(或松弛)程度。任务紧急程度越高,赋予该任务的优先级就越高,以使之优先执行。

24.优先级倒置
指的是高优先级进程(或线程)被低优先级进程(或线程)延迟或阻塞。
解决办法:(存在三个进程,按优先级P1>P2>P3)
进程P3进入临界区之后,P3占用的处理机就不允许被抢占了。P1此时处于堵塞状态,而P3也将继承P1的优先级,这时,P3的优先级就比P2的优先级高,避免了P2的插入。

25.死锁
死锁的起因,通常是源于多个进程对资源的争夺,不仅对不可抢占资源进行争夺时会引起死锁,对可消耗资源进行争夺时也会引起死锁。
产生死锁的必要条件:
(1)互斥条件(2)请求和保持条件(3)不可抢占条件(4)循环等待条件
处理死锁方法:
(1)预防死锁(2)避免死锁(3)检测死锁(4)解除死锁

26.预防死锁
预防死锁的方法是通过破坏产生死锁条件中的一个或几个,以避免发生死锁。
(1)破坏“请求和保持”条件
a.第一种协议:在所有进程进行之前,必须一次性申请其在整个进程运行过程中所需的全部资源。优点是简单,易行且安全,缺点是资源被严重浪费,严重恶化了资源的利用率,使进程经常会处于饥饿现象。
b.第二种协议:对第一种协议的改进,允许一个进程只获得运行初期所需的资源便开始运行。
(2)破坏“不可抢占”条件
为了破坏“不可抢占”条件,协议中规定,当一个已经保持了某种不可被抢占资源的进程,提出新的资源请求而不能得到满足的时候,必须释放已经保持的所有资源,待以后需要时再重新申请。意味着进程已占用的资源会被暂时释放,或是说被抢占了,从而破坏了“不可抢占”条件。
(3)破坏“循环等待”条件
一个能保证“循环等待”条件不成立的方法是,对系统所有资源类型进行线性排序,并赋予不同的序号。

27.避免死锁
避免死锁的基本思想,确保系统始终处于安全状态。一个系统开始是处于安全状态的。当有进程请求一个可用资源时,系统需对该进程的请求进行计算,若将资源分配给进程后仍处于安全状态,才将该资源分配给进程。

28.死锁的检测与解除
(1)死锁检测算法:该方法用于检测系统状态,以确定系统是否发生了死锁。
(2)死锁解除算法:当认定系统已发生了死锁,利用该算法可将系统从死锁状态中解脱出来。

你可能感兴趣的:(操作系统)