范文无忧网范文学习范文大全

linux环境下的进程调度算法有哪些

01月01日 编辑 fanwen51.com

[百度关键词排名算法]对百度关键词排名算法你的了解有多少呢?百度关键词排名算法的规则有哪些,对于一个专业的SEOER需要掌握哪些专业知识呢?下面FANWEN51小编一一为您解答。 解密百度排名规则及算...+阅读

第一部分: 实时调度算法介绍 对于什么是实时系统,POSIX 1003.b作了这样的定义:指系统能够在限定的响应时间内提供所需水平的服务。而一个由Donald Gillies提出的更加为大家接受的定义是:一个实时系统是指计算的正确性不仅取决于程序的逻辑正确性,也取决于结果产生的时间,如果系统的时间约束条件得不到满足,将会发生系统出错。 实时系统根据其对于实时性要求的不同,可以分为软实时和硬实时两种类型。

硬实时系统指系统要有确保的最坏情况下的服务时间,即对于事件的响应时间的截止期限是无论如何都必须得到满足。比如航天中的宇宙飞船的控制等就是现实中这样的系统。其他的所有有实时特性的系统都可以称之为软实时系统。如果明确地来说,软实时系统就是那些从统计的角度来说,一个任务(在下面的论述中,我们将对任务和进程不作区分)能够得到有确保的处理时间,到达系统的事件也能够在截止期限到来之前得到处理,但违反截止期限并不会带来致命的错误,像实时多媒体系统就是一种软实时系统。

一个计算机系统为了提供对于实时性的支持,它的操作系统必须对于CPU和其他资源进行有效的调度和管理。在多任务实时系统中,资源的调度和管理更加复杂。本文下面将先从分类的角度对各种实时任务调度算法进行讨论,然后研究普通的 Linux操作系统的进程调度以及各种实时Linux系统为了支持实时特性对普通Linux系统所做的改进。最后分析了将Linux操作系统应用于实时领域中时所出现的一些问题,并总结了各种实时Linux是如何解决这些问题的。

1. 实时CPU调度算法分类 各种实时操作系统的实时调度算法可以分为如下三种类别[Wang99][Gopalan01]:基于优先级的调度算法(Priority-driven scheduling-PD)、基于CPU使用比例的共享式的调度算法(Share-driven scheduling-SD)、以及基于时间的进程调度算法(Time-driven scheduling-TD),下面对这三种调度算法逐一进行介绍。 1.1. 基于优先级的调度算法 基于优先级的调度算法给每个进程分配一个优先级,在每次进程调度时,调度器总是调度那个具有最高优先级的任务来执行。

根据不同的优先级分配方法,基于优先级的调度算法可以分为如下两种类型[Krishna01][Wang99]: 静态优先级调度算法: 这种调度算法给那些系统中得到运行的所有进程都静态地分配一个优先级。静态优先级的分配可以根据应用的属性来进行,比如任务的周期,用户优先级,或者其它的预先确定的策略。RM(Rate-Monotonic)调度算法是一种典型的静态优先级调度算法,它根据任务的执行周期的长短来决定调度优先级,那些具有小的执行周期的任务具有较高的优先级。

动态优先级调度算法: 这种调度算法根据任务的资源需求来动态地分配任务的优先级,其目的就是在资源分配和调度时有更大的灵活性。非实时系统中就有很多这种调度算法,比如短作业优先的调度算法。在实时调度算法中, EDF算法是使用最多的一种动态优先级调度算法,该算法给就绪队列中的各个任务根据它们的截止期限(Deadline)来分配优先级,具有最近的截止期限的任务具有最高的优先级。

1.2. 基于比例共享调度算法 虽然基于优先级的调度算法简单而有效,但这种调度算法提供的是一种硬实时的调度,在很多情况下并不适合使用这种调度算法:比如象实时多媒体会议系统这样的软实时应用。对于这种软实时应用,使用一种比例共享式的资源调度算法(SD算法)更为适合。 比例共享调度算法指基于CPU使用比例的共享式的调度算法,其基本思想就是按照一定的权重(比例)对一组需要调度的任务进行调度,让它们的执行时间与它们的权重完全成正比。

我们可以通过两种方法来实现比例共享调度算法[Nieh01]:第一种方法是调节各个就绪进程出现在调度队列队首的频率,并调度队首的进程执行;第二种做法就是逐次调度就绪队列中的各个进程投入运行,但根据分配的权重调节分配个每个进程的运行时间片。 比例共享调度算法可以分为以下几个类别:轮转法、公平共享、公平队列、彩票调度法(Lottery)等。

比例共享调度算法的一个问题就是它没有定义任何优先级的概念;所有的任务都根据它们申请的比例共享CPU资源,当系统处于过载状态时,所有的任务的执行都会按比例地变慢。所以为了保证系统中实时进程能够获得一定的CPU处理时间,一般采用一种动态调节进程权重的方法。 1.3. 基于时间的进程调度算法 对于那些具有稳定、已知输入的简单系统,可以使用时间驱动(Time-driven:TD)的调度算法,它能够为数据处理提供很好的预测性。

这种调度算法本质上是一种设计时就确定下来的离线的静态调度方法。在系统的设计阶段,在明确系统中所有的处理情况下,对于各个任务的开始、切换、以及结束时间等就事先做出明确的安排和设计。这种调度算法适合于那些很小的嵌入式系统、自控系统、传感器等应用环境。 这种调度算法的优点是任务的执行有很好的可预测性,但最大的缺点是缺乏灵活性,并且会出现有任务需要被执行而CPU却保持空闲的情况。

2. 通用Linux系统中的CPU调度 通用Linux系统支持实时和非实时...

延伸阅读:

求子网掩码的算法要有具体的演算过程!题目自己写个就好题目最很多人肯定对设定子网掩码这个不熟悉,很头疼,那么我现在就告诉大家一个很容易算子网 掩码的方法,帮助一下喜欢偷懒的人:) 大家都应该知道2的0次方到10次方是多少把?也给大家说一下...

关于法定假日工资的算法根据劳动法的规定: 1、用人单位在下列节日期间应当依法安排劳动者休假: (一)元旦; (二)春节; (三)国际劳动节; (四)国庆节; (五)法律、法规规定的其他休假节日。 2、有下列情形之一的,用人单...

图像的特征提取都有哪些算法图像的经典特征提取方法: 1 HOG(histogram of Oriented Gradient,方向梯度直方图) 2 SIFT(Scale-invariant features transform,尺度不变特征变换) 3 SURF(Speeded Up Robust F...

数字图像处理的基本算法及要解决的主要问题图像处理,是对图像进行分析、加工、和处理,使其满足视觉、心理以及其他要求的技术。图像处理是信号处理在图像域上的一个应用。目前大多数的图像是以数字形式存储,因而图像处理...

新预算法下财政预算执行审计的几个重点新《预算法》的施行,翻开了预算法律制度新的一页。如何更新观念、与时俱进地搞好财政预算执行审计工作,已经成为审计机关亟待解决的问题。结合近年来预算执行审计的实践,本人就...

常用进程调度算法有哪些先来先服务调度算法:当在作业(或进程)调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入队列的作业,将他们调入内存,为它们分配资源、创建进程,然后放入就绪...

进程调度算法是什么调度算法是指:根据系统的资源分配策略所规定的资源分配算法。 一、先来先服务和短作业(进程)优先调度算法 1. 先来先服务调度算法。先来先服务(FCFS)调度算法是一种最简单的调度...

几种进程调度算法分析前两天做操作系统作业的时候学习了一下几种进程调度算法,在思考和讨论后,有了一些自己的想法,现在就写出来,跟大家讨论下。,或者说只有有限的CPU资源,当系统中有多个进程处于就绪...

求进程调度算法进程调度源程序如下: jingchendiaodu.cpp #include "stdio.h" #include#include#define getpch(type) (type*)malloc(sizeof(type)) #define NULL 0 struct pcb { /* 定义进程...

推荐阅读
图文推荐
栏目列表