浅谈处理机调度

本文深入探讨了处理机调度的层次,包括作业调度、进程调度和实时调度算法。作业调度中,FCFS和SJF算法各有特点;进程调度中,轮转调度算法确保了响应时间的公平性;实时调度则分为抢占式和非抢占式,EDF和LLF算法用于优化实时任务的执行。了解这些调度策略对于理解和优化系统性能至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在多道程序环境下,内存往往存在多个进程,影响资源分配。此时就需要处理机调度程序完成。在多道程序系统中,调度的实质是对资源的一种分配,处理机调度则是对处理机资源进行分配。在多道批处理系统中,一个作业从提交到获得处理机执行,直到作业执行完成,这中间可能会经历多级处理机调度。

1.处理机调度的层次

      1.高级调度 :又叫做作业调度或长程调度,调度对象是作业。它的主要功能是可以根据某种算法,将外存上处于后备队列中哪几个作业调入内存,为它们创建进程、分配必要的资源,并将它们放入就绪队列。

      2.低级调度 :又叫进程调度或短程调度,调度对象是进程。主要功能是可以依据某种算法决定就绪队列中哪个进程应获得处理机,并由分派程序将处理机分配给被选中的进程。

      3.中级调度 :又叫内存调度。主要目的是提高内存利用率和系统吞吐量。

2.作业调度

       在多道批处理系统中,操作员把用户提交的作业通过相应的输入设备输入到磁盘存储器,保存在后备作业队列中,然后由作业调度程序将其从外存调入内存。常见的算法有先来先服务(FCFS)和短作业优先(SJF)调度算法。

      2.1 FCFS是最基础的调度算法之一,该算法即可用于作业调度还可以用于进程调度。在作业调度中,按照作业到达的先后次序来进行调度,不受作业执行时间的长短限制。在进程调度中,每次从就绪的进程队列选择最先进入该队列的进程,为它分配处理机,进行运行,直到阻塞后,进程调度程序才会将处理机分配给其它进程。

      2.2 SJF算法以作业的长短来计算优先级,作业越短,优先级越高。

3.进程调度

常见的算法有轮转调度算法、优先级调度算法、多队列调度算法、多级反馈队列调度算法等。下面主要介绍轮转调度算法。

在分时系统中,最常用的是基于时间片的轮转(round robin, RR)调度算法。该算法采取了合理的处理机分配方式,即让就绪队列上的每个进程每次仅运行一个时间片。如果就绪队列上有n个进程,则每个进程每次大约都可获得1/n的处理机时间。
3.1 在轮转(RR)法中,系统根据FCFS策略,将所有的就绪进程排成一个就绪队列,并可设置每隔定时间间隔(如 30 ms)即产生一次中断, 激活系统中的进程调度程序,完成一次调度将CPU分配给队首进程,令其执行。 当该进程的时间片耗尽或运行完毕时,系统再次将CPU分配给新的队首进程(或新到达的紧迫进程)。由此,可保证就绪队列中的所有进程在一个确定的时间段内,都能够获得次CPU 执行。
3.2在RR调度算法中,应在何时进行进程的切换,可分为两种情况:

(1)若一个时间片尚未用完,正在运行的进程便已经完成,就立即激活调度程序,将它从就络队列中删除,再调度就绪队列中队首的进程运行,并启动一个新的时间片。

(2)在一个时间片用完时,计时器中断处理程序被激活。如果进程尚未运行完毕,调度程序将把它送往就绪队列的末尾。  

3.3时间片大小确定

    在轮转算法中,时间片的大小对系统性能有很大的影响。若选择很小的时间片,将有利于短作业,因为它能在该时间片内完成。但时间片小,意味着会频繁地执行进程调度和进程上下文的切换,这无疑会增加系统的开销。反之,若时间片选择得太长,且为使每个进程都能在一个时间片内完成,RR算法便退化为FCFS算法,无法满足短作业和交互式用户的需求。一个较为可取的时间片大小是略大于一次典 型的交互所需要的时间,使大多数交互式进程能在一个时间片内完成,从而可以获得很小的响应时间。

4.实时调度算法

       按照不同方式对实时调度算法加以分类,如根据实时任务性质的不同,可将实时调度的算法分为硬实时调度算法和软实时调度算法;而按调度方式的不同,又可分为非抢占调度算法和抢占调度算法;可因调度程序调度时间的不同而分成静态调度算法和动态调度算法;在多处理机环境下,还可将调度算法分为集中式调度和分布式调度两种算法。下面我将按照调度方式的不同对实时调度进行分类:

4.1非抢占式调度算法

4.1.1非抢占式轮转调度算法

        该算法常用于工业生产的群控系统中,由一台计算机控制若干个相同的(或类似的)对象,为每一个被控对象建立一个实时任务,并将它们排成一个轮转队列。调度程序每次选择队列中的第一个任务投入运行。当该任务完成后,便把它挂在轮转队列的末尾,等待下次调度运行,而调度程序再选择下一个(队首)任务运行。这种调度算法可获得数秒至数十秒的响应时间,可用于要求不太严格的实时控制系统中。

4.1.2非抢占式优先调度算法

       如果在实时系统中存在着要求较为严格(响应时间为数百毫秒)的任务,则可采用非抢占式优先调度算法为这些任务赋予较高的优先级。当这些实时任务到达时,把它们安排在就绪队列的队首,等待当前任务自我终止或运行完成后才能被调度执行。这种调度算法在做了精心的处理后,有可能获得仅为数秒至数百毫秒级的响应时间,因而可用于有一定要求的实时控制系统中。

非抢占式调度方式用于非周期实时任务。

4.2抢占式调度算法 

4.2.1基于时钟中断的抢占式优先权调度算法

        在某实时任务到达后,如果该任务的优先级高于当前任务的优先级,这时并不立即抢占当前任务的处理机,而是等到时钟中断到来时,调度程序才剥夺当前任务的执行,将处理机分配给新到的高优先权任务。这种调度算法能获得较好的响应效果,其调度延迟可降为几十毫秒至几毫秒。因此,此算法可用于大多数的实时系统中。

4.2.2立即抢占(Immediate Preemption)的优先权调度算法

       在这种调度策略中,要求操作系统具有快速响应外部事件中断的能力。一旦出现外部中断,只要当前任务未处于临界区,便立即剥夺当前任务的执行,把处理机分配给请求中断的紧迫任务。这种算法能获得非常快的响应,可把调度延迟降低到几毫秒至 100 微秒,甚至更低。

抢占式调度方式用于周期实时任务。

4.3最早截止时间优先即 EDF(Earliest Deadline First)算法

       该算法是根据任务的开始截止时间来确定任务的优先级。截止时间愈早,其优先级愈高。该算法要求在系统中保持一个实时任务就绪队列,该队列按各任务截止时间的早晚排序;当然,具有最早截止时间的任务排在队列的最前面。调度程序在选择任务时,总是选择就绪队列中的第一个任务,为之分配处理机,使之投入运行。最早截止时间优先算法既可用于抢占式调度,也可用于非抢占式调度方式中。

4.4最低松弛度优先即 LLF(Least Laxity First)算法

      该算法是根据任务紧急(或松弛)的程度,来确定任务的优先级。任务的紧急程度愈高,为该任务所赋予的优先级就愈高,以使之优先执行。例如,一个任务在 200 ms 时必须完成,而它本身所需的运行时间就有 100 ms,因此,调度程序必须在 100 ms 之前调度执行,该任务的紧急程度(松弛程度)为 100 ms。在实现该算法时要求系统中有一个按松弛度排序的实时任务就绪队列,松弛度最低的任务排在队列最前面,调度程序总是选择就绪队列中的队首任务执行。该算法主要用于可抢占调度方式中。

最后,这部分的内容主要是处理机调度的基本内容,以记忆理解为主即可。希望对大家能够有所帮助。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值