操作系统的进程调度算法

原创 2016年04月22日 10:13:18

调度性能的衡量

面向用户

周转时间短

周转时间,指作业从提交系统开始,直到作业完成为止的时间间隔。周转时间细分包括:

  1. 作业在外存后备队列中的等待时间
  2. 作业调入内存后创建的相应进程在就绪队列中的等待时间
  3. 进程在CPU上执行的时间
  4. 进程等待某些操作完成后的时间

其中2、3、4在一个作业的整个处理过程中可能会发生多次。

带权周转时间是指作业周转时间与作业实际运行服务时间的比值。平均周转时间和平均带权周转时间是衡量批处理系统调度算法的重要准则。

响应时间快

响应时间,从用户提交请求开始,直达系统首次产生响应为止的时间间隔。是衡量分时系统调度算法的重要准则。

截止时间的保证

开始截止时间,指某任务必须开始执行的最迟时间。完成截止时间,指某任务必须完成的最迟时间。对于比较严格的实时系统,调度算法必须做到这一点,否则后果严重。

优先权

批处理系统、分时系统、实时系统都可以优先执行优先级别更高的作业。

面向系统

系统吞吐量高

系统吞吐量,系统在单位时间内所能完成的总的工作量,它与批处理系统中的作业长短有关。短作业执行时间短,吞吐量高,长作业相反。

CPU利用率

资源的平衡利用

调度的相关时间

  • 服务时间:作业需要运行的时间
  • 完成时间 = 开始时间 + 服务时间
  • 等待时间 = 开始时间 - 提交时间
  • 周转时间 = 完成时间 - 提交时间
  • 带权周转时间 = 周转时间 / 服务时间
  • 响应比 = (等待时间 + 服务时间) / 服务时间 = 等待时间/服务时间 + 1

调度算法

先来先服务

先来先服务调度算法(First Come First Served, FCFS)是最简单的调度算法,可以用于作业调度和进程调度。按照作业进入系统后备作业队列的先后次序来挑选作业,加入就绪队列,等待执行。

算例:假设系统中有4个作业,到达时间分别为8、8.5、9、9.5,服务时间分别为2、0.5、0.1、0.2,FCFS的调度为:

FCFS调度算法算例

FCFS是非抢占式的,易于实现,效率不高,性能不好,有利于长作业(CPU繁忙性)而不利于短作业(I/O繁忙性)。

短作业优先

短作业优先调度算法(Short Job First)用于进程调度时又被称为短进程优先调度算法(Short Process First),该算法既可以用于作业调度,又可以用于进程调度。

在作业调度中,该算法每次从后备作业队列中挑选估计服务时间最短的一个或几个作业,将他们调入内存,分配必要的资源,创建进程并放入就绪队列。在进程调度中的原理类似。

算例:假设系统中有4个作业,到达时间分别为8、8.5、9、9.5,服务时间分别为2、0.5、0.1、0.2,SJF的调度为:

SJF调度算法算例

SJF是非抢占式的,优先照顾短作业,具有很好的性能,降低平均等待时间,提高吞吐量。但是不利于长作业,长作业可能一直处于等待状态,出现饥饿现象;完全未考虑作业的优先紧迫程度,不能用于实时系统

最短剩余时间优先

SJF本身是非抢占式的,用于抢占式调度系统时,对应的算法陈伟最短剩余时间优先调度算法。

该算法首先按照作业的服务时间挑选最短的作业运行,在该作业运行期间,一旦有新作业到达系统,并且该新作业的服务时间比当前运行作业的剩余服务时间短,则发生抢占;否则,当前作业继续运行。该算法确保一旦新的短作业或短进程进入系统,能够很快得到处理。

算例:假设系统中有4个作业,到达时间分别为8、8.5、9、9.5,服务时间分别为2、0.5、0.1、0.2,SJF的调度为:

最短剩余时间优先调度算法算例

由于频繁的抢占和进程切换,系统开销大,该算法实现代价高,一般用于实时系统。

高响应比优先

高响应比优先调度算法(Highest Reponse Ratio First, HRRF)是非抢占式的,主要用于作业调度。

基本思想:每次进行作业调度时,先计算后备作业队列中每个作业的响应比,挑选最高的作业投入系统运行。

响应比 = (等待时间 + 服务时间) / 服务时间 = 等待时间 / 服务时间 + 1

算例:假设系统中有4个作业,到达时间分别为8、8.5、9、9.5,服务时间分别为2、0.5、0.1、0.2,SJF的调度为:

HRRF调度算法算例

由响应比分析可知,该算法介于FCFS和SJF之间,但是每次需要计算每个作业的响应比,增加系统开销。

优先级

每次挑选优先级最高的一个或几个调入,可以用于作业调度和进程调度。分为非抢占式和抢占式。

时间片轮转

用于分时系统的进程调度。

基本思想:系统将CPU处理时间划分为若干个时间片(q),进程按照到达先后顺序排列。每次调度选择队首的进程,执行完1个时间片q后,计时器发出时钟中断请求,该进程移至队尾。以后每次调度都是如此。该算法能在给定的时间内响应所有用户的而请求,达到分时系统的目的。

其性能主要取决于时间片q的大小,q太大,则所有的进程在1个时间片完成,退外围FCFS;太小则进程频繁切换,系统开销大。

时间片轮转调度算法1

时间片轮转调度算法2

时间片轮转调度算法3

时间片轮转调度算法4

该算法简单有效,常用于分时系统,但不利于I/O频繁的而紧凑,由于这种进程用不完一个时间片,就因为等待I/O操作而被阻塞,当I/O操作结束后,只能插入到就绪队列的末尾,等待下一轮调度。

参考

  1. 温静,计算机操作系统原理,武汉大学出版社

目录

版权声明:本文为博主原创文章,转载请注明作者和出处。

相关文章推荐

Linux进程调度机制

原帖:http://blog.csdn.net/zhaqiwen/article/details/7763678 1.1. Linux调度时机 Linux进程调度分...

操作系统调度算法简介

这几次课操作系统S老师讲了不少算法,感觉自己好混乱,自己总结一下理理思绪,也算是为期末做准备了。 低级调度算法的基本类型在理解调度算法之前要先理解两个很重要的概念,有助于对算法的理解。

缓存淘汰算法系列之3——FIFO类

缓存淘汰算法系列之3——FIFO类 1 FIFO 1.1. 原理 按照“先进先出(First In,First Out)”的原理淘汰数据。 1.2. 实现 FIFO队列,具体实现如下: 1....

Java内存溢出与栈溢出

一、背景知识 1、JVM体系结构 2、JVM运行时数据区 3、JVM内存模型 JVM运行时内存 = 共享内存区 + 线程内存区 3-1、共享内存区 共享内存区 = 持久...

操作系统调度算法

5.3.1基本原理 从前面我们可以看到,进程运行需要各种各样的系统资源,如内存、文件、打印机和最宝贵的CPU等等,所以说呢,调度的实质就是资源的分配。系统通过不同的调度算法(Scheduling A...

操作系统进程调度算法图解(FCFS、轮转、SPN、SRT、HRRN、反馈)

FCFS: 先来先服务,也可以称为先进先出 轮转: 以一个周期性间隔产生时钟中断,此时当前正在运行的进程被置于就绪队列,基于FCFS选择下一个就绪进程             运行。 SPN:最短进程...

缓存淘汰算法系列之2——LFU类

1. LFU类 1.1. LFU 1.1.1. 原理 LFU(Least Frequently Used)算法根据数据的历史访问频率来淘汰数据,其核心思想是“如果数据过去被访问多次,那么将来被访问的频...

操作系统中磁盘调度算法(FIFO,SSTF,SCAN,C-SCAN)

磁盘调度算法的数据比较                                      ...

几个常用的操作系统进程调度算法

一、先来先服务和短作业(进程)优先调度算法 1.先来先服务调度算法 先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,每次...

缓存淘汰算法系列之1——LRU类

缓存淘汰算法系列之1——LRU类 1. LRU 1.1. 原理 LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)