linux--几种常见的进程调度算法

原创 2016年06月14日 17:46:52

进程调度:在操作系统中调度是指一种资源分配,因而调度算法是指:根据系统的资源分配策略所规定的资源分配算法。操作系统管理了系统的有限资源,当有多个进程(或多个进程发出的请求)要使用这些资源时,因为资源的有限性,必须按照一定的原则选择进程(请求)来占用资源。这就是调度。目的是控制资源使用者的数量,选取资源使用者许可占用资源或占用资源。

1 先来先服务(队列)

    先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。在进程调度中采用FCFS算法时,则每次调度是从就绪队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。该进程一直运行到完成或发生某事件而阻塞后才放弃处理机。算法总是把处理机分配给最先进入就绪队列的进程,一个进程一旦分得处理机,便一直执行下去,直到该进程完成或阻塞时,才释放处理机。
缺点:比较有利于长作业,而不利于短作业。 有利于CPU繁忙的作业,而不利于I/O繁忙的作业。

2 最短优先(优先队列)

    最短优先调度算法是指对短作业或短进程优先调度的算法。它们可以分别用于作业调度和进程调度。短作业优先(SJF)的调度算法是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。而短进程优先(SPF)调度算法则是从就绪队列中选出一个估计运行时间最短的进程,将处理机分配给它,使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机时再重新调度。

缺点:长作业的运行得不到保证。


3 轮转法(RoundRobin)

将系统中所有的就绪进程按照FCFS原则,排成一个队列。每次调度时将CPU分派给队首进程,让其执行一个时间片。时间片的长度从几个ms到几百ms。在一个时间片结束时,发生时钟中断调度程序据此暂停当前进程的执行,将其送到就绪队列的末尾,并通过上下文切换执行当前的队首进程。 进程可以未使用完一个时间片,就出让CPU(如阻塞)。

4 多级反馈队列算法

设置多个就绪队列,分别赋予不同的优先级,如逐级降低,队列1的优先级最高。每个队列执行时间片的长度也不同,规定优先级越低则时间片越长,如逐级加倍。2 新进程进入内存后,先投入队列1的末尾,按FCFS算法调度;若按队列1一个时间片未能执行完,则降低投入到队列2的末尾,同样按FCFS算法调度;如此下去,降低到最后的队列,则"时间片轮转"算法调度直到完成。仅当较高优先级的队列为空,才调度较低优先级的队列中的进程执行。如果进程执行时有新进程进入较高优先级的队列,则抢先执行新进程,并把被抢先的进程投入原队列的末尾。


进程调度的性能评价:

进程调度虽然是在系统内部的低级调度,但进程调度的优劣直接影响作业调度的性能。那么,怎样评价进程调度的优劣呢?反映作业调度优劣的周转时间和平均周转时间只在某种程度上反映了进程调度的性能,例如,其执行时间部分中实际上包含有进程等待(包括就绪状态时的等待)时间,而进程等待时间的多少是要依靠进程调度策略和等待事件何时发生等来决定的。因此,进程调度性能的商量是操作系统设计的一个重要指标。我们说进程调度性能的衡量方法可分为定形和定量两种。在定形衡量方面,首先是调度的可靠住。包括一次进程调度是否可能引起数据结构的破坏等。这要求我们对调度时机的选择和保存CPU现场十分谨慎。另外,简洁性也是衡量进程调度的一个重要指标,由于调度程序的执行涉及到多个进程和必须进行上下文切换,如果调度程序过于繁琐和复杂,将会耗去较大的系统开销。这在用户进程调用系统调用较多的情况下,将会造成响应时间大幅度增加。进程调度的定量评价包括CPU的利用率评价、进程在就绪队列中的等待时间与执行时间之比等。实际上由于进程进入就绪队列的随机模型很难确定,而且进程上下文切换等也将影响进程的执行效率,LL而对进程调度进行解析是很困难的。一般情况下,大多利用模拟或测试系统响应时间的方法来评价进程调度的性能。


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Linux 下常见的进程调度算法

进程调度:在操作系统中调度是指一种资源分配。 调度算法是指: 根据系统的资源分配策略所规定的资源分配算法。 操作系统管理了系统的有限资源,当有多个进程(或多个进程发出的请求)要使用这些资源时,因为资源...

Linux环境之进程调度算法

基础学习篇之--------《操作系统中的进程调度算法归总以及Linux中的进程调度》...

centOS常见的进程调度算法

无论是在批处理系统还是分时系统中,用户进程数一般都多于处理机数、这将导致它们互相争夺处理机。另外,系统进程也同样需要使用处理机。这就要求进程调度程序按一定的策略,动态地把处理机分配给处于就绪队列中的某...

linux内核使用的一些算法和思想(个人总结)

这里只罗列一些算法,其中有些在我之前的博文中有所涉及,有些没有,后续有时间再详细分析每一个算法。排名不分先后 1、trie算法,linux网络子系统中取代了之前哈希算法的新路由算法,适合有大...

linux下的shell运算(加、减、乘、除)

((i=$j+$k))    等价于 i=`expr $j + $k` ((i=$j-$k))     等价于   i=`expr $j -$k` ((i=$j*$k))     等价于   i=`e...

linux内存管理算法 :伙伴算法和slab

伙伴分配器的一个极简实现 原文地址:http://coolshell.cn/articles/10427.html 提起buddy system相信很多人不会陌生,它是一种经典的内存分配算法,...

详解Linux内核红黑树算法的实现

开发平台:Ubuntu11.04     内核源码:linux-2.6.38.8.tar.bz2       关于二叉查找树的概念请参考博文《详解二叉查找树算法的实现》。     平衡二叉树(...
  • npy_lp
  • npy_lp
  • 2012年04月11日 17:02
  • 24681

Linux C 算法分析初步

提到算法,必须提到数据结构,我们要知道一个著名公式:   数据结构 + 算法 = 程序 我们先看看下面这张图:        算法是什么?算法是一个有穷规则(或语句、指令)的有续集和。他确定了解决某一...

Linux编程:模拟进程调度算法

稍稍有点操作系统基础的朋友应该知道进程的调度算法,在这里Koala还是给大家略微介绍一下接下来将要用到的几种算法: 先来先服务(FCFS) 采用FCFS调度,先请求CPU的进程会先分配到CPU。 ...
  • KoalaZB
  • KoalaZB
  • 2016年12月10日 23:28
  • 1688

给定入栈序列判断给定出栈序列是否合法

题目:输入两个整数序列。其中一个序列表示栈的入栈顺序,判断另一个序列有没有可能是对应的出栈顺序。思路:用一个辅助栈,将入栈序列按照某种顺序入栈,看是否可以产生出栈序列即可。 1)如果当前栈为空,且入...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux--几种常见的进程调度算法
举报原因:
原因补充:

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