【操作系统】进程调度(低级调度)

进程调度的任务和机制

进程调度任务

  • 保存处理机的现场信息
  • 按某种算法选取进程
  • 把处理器分配给进程

进程调度机制

图解

进程调度方式

非抢占方式

一旦把处理机分配给某进程,就让它一直运行下去,直至该进程完成或阻塞时,才把处理机分配给其它进程。

  • 优点:是实现简单、系统开销小。
  • 缺点:但它不能用于分时系统和大多数实时系统。

抢占方式

允许调度程序根据某种原则,将已分配给该进程的处理机,重新分配给另一进程。

“抢占”必须遵循的原则:

  • 优先权原则
  • 短进程优先原则
  • 时间片原则

最短剩余时间调度算法(SRT)

最短剩余时间调度算法(Shortest Remaining Time First,SRT) 是针对SPF 增加了抢占机制的一种调度算法。

它总是选择预期剩余时间最短的进程。只要新进程就绪,且有更短的剩余时间,调度程序就可能抢占当前正在运行的进程。

注

示例

SRT 不像 FCFS 偏向长进程,也不像轮转法(下个算法)产生额外的中断,从而减少了开销。

就此例而言,平均周转时间和带权平均周转时间说明了SRT 好于前面的任何一个算法(因为它具有抢占的特点) 。

图解

缺点:必须记录过去的服务时间,从而增加了开销。

例题

有如下四个进程,它们的到达时间和服务时间如下表所示,请分别计算在采用 FCFS、SPF 非抢占、SRT三种调度算法时的平均周转时间和平均等待时间。

图解

例题

图解

图解

SPF、SRT 与 FCFS 的比较

图解

时间片轮转调度算法 (Round Robin, RR)

时间片轮转调度算法:系统将所有就绪进程按FCFS的原则,排成一个队列依次调度,把 CPU 分配给队首进程,并令其执行一个时间片,通常为 10-100ms。时间片用完后,系统的计时器发出时钟中断,该进程将被剥
夺 CPU并插入就绪队列末尾。

RR 是一种非常公平的算法。

进程切换时机

  • 若一个时间片尚未用完进程便已经完成,就立即再调度就绪队列中队首进程运行,并启动一个新的时间片。

  • 如果在一个时间片用完时进程尚未运行完毕,则剥夺CPU,调度程序把它送往就绪队列的末尾。

    响应时间T = 时间片q × 就绪队列进程数n

例:一个分时 OS,10 个终端,时间片 100ms,每个用户的请求进程要 300ms 的时间处理,问终端用户提出二次请求的时间间隔最少是多少?

解:响应时间= 100ms×10 = 1s,每个用户的请求要获得 3 个时间片才能处理完,要轮转 3 次,才能都处理完,所以终端用户的二次请求时间间隔最少应为 2.1∼3s。

时间片轮转调度算法保证了就绪队列中的所有进程在给定的时间内,均能获得一个时间片来执行,即系统在给定的时间内,可以响应所有用户的请求。

时间片的长短对系统性能有很大影响:

  • 调度算法(时间片应该使大多数进程可以在一个时间片内完成。但是如果太长,则退化为 FCFS。 )
  • 系统开销(太短,中断、上下文切换频繁)
  • 平均周转时间

时间片轮转调度算法的平均周转时间比 SPF 长,但响应时间要短一些。

一个较为可取的时间片大小是,略大于一次典型的交互所需要的时间,使大多数交互式进程能在一个时间片内完成,从而可以获得很小的响应时间。

例如

图解

图解

优先级调度算法

优先级调度算法的类型

非抢占式优先级调度算法

一旦把处理机分配给就绪队列中优先级最高的进程后,该进程便一直执行下去直至完成,或者因该进程发生某事件而放弃处理机时,系统
方可将处理机重新分配给另一优先级最高的进程。

非抢占优先级调度算法 (设优先数越小优先级越高)

图解

抢占式优先级调度算法

只要出现了另一个其优先级更高的进程,调度程序就将处理机分配给新到的优先级最高的进程。

抢占式优先级调度算法 (设优先数越小优先级越高)

图解

各种调度算法的比较

图解

多级队列调度算法

SJF、SRT 都需要知道进程的运行时间,有局限性。

如果没有关于各个进程相对长度的任何信息,则可以用已经执行的时间进行衡量。

多级队列调度算法(MQ-Multilevel Queue)

根据作业的性质或类型,把就绪队列划分成若干个独立的队列,每个作业固定地分属一个队列。不同的队列可以采用不同的调度算法。

多级反馈队列调度算法 MFQ

多级反馈队列调度算法

  • 是时间片轮转算法和优先级调度算法的综合和发展,通过动态调整进程优先级和时间片大小,不必事先估计进程的执行时间。
  • FCFS + 优先级 + RR + 抢占
  • 多级反馈队列可兼顾多方面的系统目标,是目前公认的一种较好的进程调度算法。

多级反馈队列调度算法调度机制

  • 设置多个就绪队列,并为每个队列赋予不同的优先级。队列 1 的优先级最高,其余队列逐个降低。
  • 每个队列中进程执行时间片的大小各不相同,进程所在队列的优先级越高,其相应的时间片就越短。
  • 新进程进入系统时,先放入队列 1 的末尾,按FCFS等待调度。如能完成,便可准备撤离系统,反之由调度程序将其转入队列 2 的末尾,按 FCFS 再次等待调度,如此下去,最后进入队列 n 按RR算法调度执行。
  • 仅当队列 1 为空时,才调度队列 2 中的进程运行。若一个队列中的进程正执行,此时有新进程进入高级队列,则新进程抢占运行,原进程转移至本队列队尾。

图解

多级反馈队列调度算法的优点

  • 短作业优先处理。运行时间短的进程在经过前面几个队列之后便可以执行完毕。
  • 设备资源利用率高。I/O 繁忙类型的进程可能经常会由于所申请的资源被占用或启动了 I/O 传输的原因而进入等待状态。当进程得到所等待的资源或 I/O 传输完成时,它将进入第一级就绪队列,尽快获得处理机并使用
    资源。
  • 系统开销小。因为运行时间长的进程最后会进入低优先级的队列,这些队列的时间片较长,因而进程的调度频率较低。

基于公平原则的调度算法

以上介绍的调度算法只是保证一些进程(或作业)可以优先运行(如优先级算法) ,但是不能保证占用处理机的时间。另外也没有考虑调度的公平性。

保证调度算法

保证处理机分配的公平性。如果 n 个进程同时运行,公平的情况下每进程应该获得处理机时间的 1/n。

  • 计算每个进程自创建以来已经执行的处理机时间。
  • 计算每个进程应获得的处理机时间,即自创建以来的时间除以并发进程数 n。
  • 计算进程获得处理机时间的比率。即进程实际运行的时间(1)与应获得的处理机时间(2)之比。
  • 比较各进程获得处理机时间的比率。如进程 A 的比率为0.5,进程 B 的比率为 0.8,进程 C 的比率为 1.2。
  • 调度程序应选择比率最小的进程,将处理机分配给它,并让该进程一直运行,直到超过最接近它的进程比率为止。

公平分享调度算法

针对用户而不是进程,使得每用户获得相同的处理机时间。

  • 时间片轮转算法让每个进程轮流运行一个时间片,对进程很公平,但如果每个用户拥有的进程数不同,则可能对用户不公平。
  • 公平分享调度算法调度的公平性主要是针对用户而不是进程,目标是使所有用户能获得相同的处理机时间。
  • 调度是以进程为基本单位的,所以必须考虑到每一个用户所拥有的进程数目。
  • 例如,用户 1 有 4 个进程 A、B、C、D,用户 2 只有一个进程 X。为保证两个用户能获得相同的处理机时间,需要强制执行如下的调度顺序:
    A X B X C X D X A X ···
1. 实验目的 调度的实质是操作系统按照某种预定的策略来分配资源。进程调度的目的是分配CPU资源。由于进程调度程序执行的频率很高,因此调度算法的好坏直接影响到操作系统的性能。本实验的目的是编程模拟实现几种常用的进程调度算法,通过对几组进程分别使用不同的调度算法,计算进程的平均周转时间和平均带权周转时间,比较各种算法的性能优劣。 2. 实验原理 [1]. 进程调度算法描述 进程调度算法包括先来先服务调度算法、最短作业时间优先(抢占式和非抢占式)、最高响应比调度算法4种。(每个人必须做FCFS,然后在后面的三种中任选一种,即每个人必须做2种调度算法的模拟。) [2]. 衡量算法性能的参数 计算进程的平均周转时间和平均带权周转时间。 3. 实验内容 (1)编程实现本实验的程序,要求: [1]. 建立进程的进程控制块,进程控制块至少包括: a) 进程名称; b) 进程需要执行时间; c) 进入就绪队列时间; d) 进程执行开始时间 e) 进程执行结束时间 [2]. 编程实现调度算法。 [3]. 进程及相关信息的输入。这些信息可以直接从键盘上输入,也可以从文件读取。 [4]. 时间片与时间流逝的模拟。本实验需要对算法的执行计时,程序应该提供计算时间的方法。一种最简单的方法是使用键盘,比如每敲一次空格代表一个时间片的流逝。另一种方法是使用系统时钟。 [5]. 一组进程序列执行完毕,打印出结果信息。程序需要计算出每个进程的开始执行时间、结束时间、周转时间和带权周转时间,并为整个进程序列计算平均周转时间和平均带权周转时间。程序将计算结果按一定的格式显示在计算机屏幕上或输出到文件中。打印出进程调度顺序图。 [6]. 实现数据在磁盘文件上的存取功能。 (2)对下列就绪进程序列分别使用上面的几种算法进行调度,计算每种算法下的平均周转时间和平均带权周转时间。 进程号 到达时间 要求执行时间 0 0 1 1 1 35 2 2 10 3 3 5 4 6 9 5 7 21 6 9 35 7 11 23 8 12 42 9 13 1 10 14 7 11 20 5 12 23 3 13 24 22 14 25 31
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值