操作系统6:处理机的任务调度和进程调度

本文详细介绍了处理机调度的三个层次——高级调度、低级调度和中级调度,以及它们在多道批处理系统中的作用。讨论了各种调度算法,如FCFS、SJF、优先级调度和多级反馈队列调度算法,强调了调度的目标,包括资源利用率、公平性和系统吞吐量等。此外,还探讨了作业调度和进程调度的区别和重要性,以及各种调度策略的优缺点。

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

目录

1、处理机调度的层次

(1)高级调度(High Level Scheduling)

(2)低级调度(Low Level Scheduling)

(3)中级调度(Intermediate Scheduling)

2、处理机调度算法的目标

批处理系统的目标

3、作业与作业调度

(1)批处理系统中作业

(2)先来先服务(first-comefirst-served,FCFS)调度算法

(3)短作业优先(shortjob first,SJF)的调度算法

(4)优先级调度算法(priority-scheduling algorithm,PSA)

(5)高响应比优先调度算法(Highest Response Ratio Next,HRRN)

4、进程调度

(1)进程调度的任务和机制

(2)进程调度的方式

(3)轮转调度算法

(4)优先级调度算法

(5)多队列调度算法

(6)多级反馈队列(multileved feedback queue)调度算法

(7)基于公平原则的调度算法


       在多道程序系统中,调度的实质是一种资源分配,处理机调度是对处理机资源进行分配。处理机调度算法是指根据处理机分配策略所规定的处理机分配算法。// 资源分配

1、处理机调度的层次

(1)高级调度(High Level Scheduling)

        高级调度又称长程调度或作业调度,它的调度对象是作业。其主要功能是根据某种算法,决定将外存上处于后备队列中的哪几个作业调入内存,为它们创建进程、分配必要的资源,并将它们放入就绪队列。高级调度主要用于多道批处理系统中,而在分时和实时系统中不设置高级调度。// 将作业调入内存

(2)低级调度(Low Level Scheduling)

        低级调度又称为进程调度或短程调度,其所调度的对象是进程(或内核级线程)。其主要功能是,根据某种算法,决定就绪队列中的哪个进程应获得处理机,并由分派程序将处理机分配给被选中的进程。进程调度是最基本的一种调度,在多道批处理、分时和实时三种类型的OS中,都必须配置这级调度。// 决定哪个进程获得 CPU

(3)中级调度(Intermediate Scheduling)

        中级调度又称为内存调度。引入中级调度的主要目的是,提高内存利用率和系统吞吐量。为此,应把那些暂时不能运行的进程,调至外存等待,此时进程的状态称为就绪驻外存状态(或挂起状态)。当它们已具备运行条件且内存又稍有空闲时,由中级调度来决定把外存上的那些已具备运行条件的就绪进程再重新调入内存,并修改其状态为就绪状态挂在就绪队列上等待。// 中级调度实际上就是存储器管理中的对换功能

        上述三种调度中,进程调度的运行频率最高,在分时系统中通常仅 10~100ms 便进行一次进程调度,因此把它称为短程调度。为避免调度本身占用太多的 CPU 时间,不宜使进程调度算法太复杂。作业调度往往是发生在一批作业已运行完毕并退出系统,又需要重新调入一批作业进入内存时,作业调度的周期较长,大约几分钟一次,因此把它称为长程调度。由于其运行频率较低,故允许作业调度算法花费较多的时间。中级调度的运行频率基本上介于上述两种调度之间,因此把它称为中程调度。// 根据调度频率划为短、中、长调度。

2、处理机调度算法的目标

        (1)资源利用率:为提高系统的资源利用率,应使系统中的处理机和其它所有资源都尽可能地保持忙碌状态,其中最重要的处理机利用率可用以下方法计算:

        (2)公平性:公平性是指应使诸进程都获得合理的 CPU 时间,不会发生进程饥饿现象。公平性是相对的,对相同类型的进程应获得相同的服务;但对于不同类型的进程,由于其紧急程度或重要性的不同,则应提供不同的服务。

        (3)平衡性。由于在系统中可能具有多种类型的进程,有的属于计算型作业,有的属于 I/O 型。为使系统中的 CPU 和各种外部设备都能经常处于忙碌状态,调度算法应尽可能保持系统资源使用的平衡性。// 平衡 CPU 和 外部设备的使用

        (4)策略强制执行。对所制订的策略其中包括安全策略,只要需要,就必须予以准确地执行,即使会造成某些工作的延迟也要执行。

批处理系统的目标

  1. 平均周转时间短。所谓周转时间,是指从作业被提交给系统开始,到作业完成为止的这段时间间隔(作业周转时间)。它包括四部分时间:作业在外存后备队列上等待作业调度的时间,进程在就绪队列上等待进程调度的时间,进程在 CPU 上执行的时间以及进程等待 I/O 操作完成的时间。其中的后三项在一个作业的整个处理过程中,可能发生多次。
  2. 系统吞吐量高。由于吞吐量是指在单位时间内系统所完成的作业数,因而它与批处理作业的平均长度有关。事实上,如果单纯是为了获得高的系统吞吐量,就应尽量多地选择短作业运行。
  3. 处理机利用率高。对于大、中型计算机,CPU 价格十分昂贵,致使处理机的利用率成为衡量系统性能的十分重要的指标;而调度方式和算法又对处理机的利用率起着十分重要的作用。如果单纯是为使处理机利用率高,应尽量多地选择计算量大的作业运行。

        由上所述可以看出,这些要求之间是存在着一定矛盾的。

3、作业与作业调度

        在多道批处理系统中,作业是用户提交给系统的一项相对独立的工作。操作员把用户提交的作业通过相应的输入设备输入到磁盘存储器,并保存在一个后备作业队列中。再由作业调度程序将其从外存调入内存。// 将程序从外存调入内存

(1)批处理系统中作业

        1 - 作业和作业步

        作业(Job):作业不仅包含了通常的程序和数据而且还应配有一份作业说明书,系统根据该说明书来对程序的运行进行控制。在批处理系统中,是以作业为基本单位从外存调入内存的。// 作业是一个比程序更为广泛的概念

        作业步(Job Step):通常,在作业运行期间,每个作业都必须经过若干个相对独立又相互关联的顺序加工步骤才能得到结果。我们把其中的每一个加工步骤称为一个作业步,各作业步之间存在着相互联系,往往是上一个作业步的输出作为下一个作业步的输入。例如,一个典型的作业可分成:“编译” 作业步,“链接装配” 作业步和 “运行” 作业步。// 编译 -> 装配 -> 运行

        2 - 作业控制块(Job Control Block,JCB)

        为了管理和调度作业,在多道批处理系统中,为每个作业设置了一个作业控制块 JCB,它是作业在系统中存在的标志,其中保存了系统对作业进行管理和调度所需的全部信息。

        通常在 JCB 中包含的内容有:作业标识、用户名称、用户账号、作业类型(CPU 繁忙型、I/O 繁忙型、批量型、终端型)、作业状态、调度信息(优先级、作业运行时间)、资源需求(预计运行时间、要求内存大小等)、资源使用情况等。

        每当一个作业进入系统时,便由 “作业注册” 程序为该作业建立一个作业控制块 JCB 。再根据作业类型,将它放到相应的作业后备队列中等待调度。调度程序依据一定的调度算法来调度它们,被调度到的作业将被装入内存。在作业运行期间,系统就按照 JCB 中的信息和作业说明书对作业进行控制。当一个作业执行结束进入完成状态时,系统负责回收已分配给它的资源,撤销该作业控制块。// JCB 的调度过程,类似于进程

        3 - 作业运行的三个阶段和三种状态

        作业从进入系统到运行结束,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

swadian2008

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值