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

操作系统中对进程的调度算法大体上可以分为三类:

1、先来先服务算法

2、优先级法

3、时间片轮法

接下来简要介绍一下这三类算法。

一、先来先服务算法

(FCFS:    First Come First Service)

原理:

这是最简单的一种调度算法,用到了队列的思想。每次调度都从进程就绪队列中选择队首的进程(也就是最先进入队列的进程)进行调度。

直到进程的执行被阻塞,或进程结束,再调用下一个进程,依然是从队列中选择队首的进程的。

这里要注意,上文我说的队列中的进程实际上是进程的PCB,因为队列中存放的是PCB而不是进程本身。

一种优化:

短进程优先调度算法:

在进程PCB队列中选择一个估计运算时间最短的进程,优先对该PCB对应的进程进行调用,直到进程调用结束或阻塞。

二、优先级法

原理:

调度算法用到了优先级队列的思想。每次调度时,对于高优先级的进程优先进行调度,对于相同优先级的进程,才按照“先来后到”的原则进行调用。

进一步划分:

1、非抢占式优先权算法

进程的调用只会因为【调用结束或阻塞】这两种情况中断,而不会因为队列中出现了比当前进程优先级高的进程而中断。

2、抢占式优先权算法

这种算法跟上述的 非抢占式算法 相反:当进程调用时,进程队列中出现了比当前进程优先级更高的进程时,就会停止当前的进程而执行队列中优先级更高的进程。

3、高响应比优先权算法

在前文的【一、先来先服务法】中提到了【短进程优先调度算法】,这种算法的缺点是,每次都选短进程进行调用,而入队的都是短一些的进程,那么队列中已经存在的一些长进程有可能永远都运行不了。而这种方法可以理解成是对【短进程优先调度算法】的一种优化。

这种调度算法依然是选择队列中短进程进行调用,在每次调用时,对队列中剩余的进程进行优先级加权,这样就可以保证,即使入队的进程一直是短一点的进程,队列中的长进程也依然能够被调用。

、时间片轮法

 原理:

依然是将所有被调用的进程的PCB存入队列中,每次对队首的进程进行调用【一段时间】后,将该进程的PCB存入队尾,再调用当前队首的进程,依次往复的进行调用。

这个【一段时间】叫做【时间片】。

 一种优化:

多级反馈队列调度算法:

(这是目前被公认的一种较好的进程调度算法)

原理:

采用多个就绪队列,分别具有不同的优先级,待调用进程的PCB先存入优先级最高的队列中,然后开始用时间片轮法进行调用。

在这个优先级最高的队列中,时间片是很短的,也就是说,一次调用,队列中短一点的进程会调用结束,而剩下的进程则是较长的进程,把这些剩下的进程存入优先级比当前队列低一级的队列,循环往复。

这里,时间片随着队列优先级的降低而增长,也就是说,优先级最高的队列,时间片是最短的,然后越来越长。而只有当高优先级队列空闲时,才考虑调用低优先级队列中的进程。

可以看出,这种调用结构会优先调用完毕短进程,同时会筛选出长进程并降低它们的优先级,但能保证这些长进程都有被调用的机会,是一种比较合理的调度算法。

时间: 2024-10-11 18:26:00

操作系统中常用的进程调度算法的相关文章

操作系统中常见的进程调度算法

1.      先来先服务(FCFS)调度算法 FCFS调度算法是一种最简单的调度算法,该调度算法既可以用于作业调度也可以用于进程调度.在作业调度中,算法每次从后备作业队列中选择最先进入该队列的一个或几个作业,将它们调入内存,分配必要的资源,创建进程并放入就绪队列. 在进程调度中,FCFS调度算法每次从就绪队列中选择最先进入该队列的进程,将处理机分配给它,使之投入运行,直到完成或因某种原因而阻塞时才释放处理机. FCFS调度算法属于不可剥夺算法.从表面上看,它对所有作业都是公平的,但若一个长作业

计算机操作系统中常用的调度算法总结

一.常见的批处理作业调度算法 1.先来先服务调度算法(FCFS):就是按照各个作业进入系统的自然次序来调度作业.这种调度算法的优点是实现简单,公平.其缺点是没有考虑到系统中各种资源的综合使用情况,往往使短作业的用户不满意,因为短作业等待处理的时间可能比实际运行时间长得多. 2.短作业优先调度算法(SPF): 就是优先调度并处理短作业,所谓短是指作业的运行时间短.而在作业未投入运行时,并不能知道它实际的运行时间的长短,因此需要用户在提交作业时同时提交作业运行时间的估计值. 3.最高响应比优先算法(

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

一.调度与调度算法 操作系统管理了系统的有限资源,当有多个进程(或多个进程发出的请求)要使用这些资源时,因为资源的有限性,必须按照一定的原则选择进程(请求)来占用资源.这就是调度. 目的是控制资源使用者的数量,选取资源使用者许可占用资源或占用资源. 在操作系统中调度是指一种资源分配,因而调度算法是指:根据系统的资源分配策略所规定的资源分配算法.对于不同的的系统和系统目标,通常采用不同的调度算法. 调度算法要求:高资源利用率.高吞吐量.用户满意等原则. 进程调度所采用的算法是与整个系统的设计目标相

《操作系统_时间片轮转RR进程调度算法》

转自:https://blog.csdn.net/houchaoqun_xmu/article/details/55540250 时间片轮转RR进程调度算法 一.概念介绍和案例解析时间片轮转法 - 基本原理:  在早期的时间片轮转法中,系统将所有的就绪进程按先来先服务的原则排成一个队列,每次调度时,把CPU分配给队首进程,并令其执行一个时间片.时间片的大小从几ms到几百ms.当执行的时间片用完时,由一个计时器发出时钟中断请求,调度程序便据此信号来停止该进程的执行,并将它送往就绪队列的末尾:然后,

操作系统中的几种调度算法(JAVA版)

1 import java.text.DecimalFormat; 2 import java.util.Arrays; 3 import java.util.Scanner; 4 5 /* 6 * 作者:Chensx1020 7 * 时间:2016-12-11 8 * 功能:CPU调度算法 9 * 1)先到先服务调度算法(FCFS) 10 * 2)最短作业优先调度算法,非抢占式(SJF) 11 * 3)优先级调度算法(PSA) 12 * 4)轮转法调度算法(RR) 13 * 5)最高响应比调度

操作系统中的进程与线程

操作系统中的进程与线程 转自:http://www.cnblogs.com/CareySon/archive/2012/05/04/ProcessAndThread.html 简介 在传统的操作系统中,进程拥有独立的内存地址空间和一个用于控制的线程.但是,现在的情况更多的情况下要求在同一地址空间下拥有多个线程并发执行.因此线程被引入操作系统. 为什么需要线程? 如果非要说是为什么需要线程,还不如说为什么需要进程中还有其它进程.这些进程中包含的其它迷你进程就是线程. 线程之所以说是迷你进程,是因为

(转)进程调度算法

转自:http://blog.csdn.net/luyafei_89430/article/details/12971171 常用的进程调度算法 一.先来先服务和短作业(进程)优先调度算法 1.先来先服务调度算法 先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度.当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源.创建进程,然后放入就绪队列.在进程调度中采用FCFS算法时,则每次

操作系统中线程的实现模型

转自https://blog.csdn.net/fuzhongmin05/article/details/55802984 1.为什么需要线程? 首先需要回答一个问题,为什么操作系统需要线程.如果非要说是为什么需要线程,还不如说为什么需要进程中还有其它进程.这些进程中包含的其它迷你进程就是线程.进程有以下缺陷: 1.进程只能在一个时间内干一件事(执行一个程序执行流),而如果想同时干两件或多件事情,进程就不够用了.2.进程在执行过程中如果阻塞,例如等待输入,整个进程就将挂起,而无法继续执行.这样,

操作系统概念学习笔记 8 进程

操作系统概念学习笔记 8 进程 概念 进程 进程是执行中的程序,这只是非正式的说法.进程不只是程序代码,程序代码称为文本段(代码段),还包括当前活动,通过程序计数器的值和处理器寄存器的内容来表示.此外,进程还包括进程堆栈段(临时数据.函数参数.局部变量.地址)和数据段(包括全全局变量.还可能包括堆(leap),是在进程运行期间动态分配内存. 程序是被动实体,如存储在磁盘上包含一系列指令的文件内容(可执行文件),而进程是一个活动实体,他有一个程序计数器来表示下一个要执行的命令和相关资源集合. 虽然