OS中处理机调度模型和调度算法

  1. 调度层次

    1.1. 高级调度(长程调度,作业调度)

    功能:依据某种算法。把在外存队列上处于后备队列的那些作业调入内存。以作业为操做对象。

    作业:比程序更为广泛的概念,不仅包括通常的程序和数据。还包括一份作业说明书,系统依据作业说明书对程序的运行进行控制。

    作业步:每一个作业都要经过若干个相对独立而又相互关联的顺序加工步骤才干得到结果,我们把每一个步骤称为一个作业步。

    作业流:若干个作业进入系统后被依次存放在外存上,这样便形成了输入的作业流。

    作业控制块(JCB):JCB是作业在系统中存在的标志。保存着系统对作业进行管理和调度所需的所有信息。详细包括的内容依据系统而异。

    作业调度 的作用

    1. 决定接纳多少个作业
    2. 决定接纳那些

    1.2. 中级调度(中程调度,对换)

    功能:将临时不能运行的进程调到外存上,使其处于外存就绪状态或者外存挂起状态,提高系统的利用率和吞吐量。

    3. 低级调度 (短程调度,进程调度)

    功能:最主要的一种调度 ,主要用来保存处理机的现场信息(进行进程调度时首先保存当前进程的现场信息,将现场信息保存到该进程PCB的对应位置),按某种算法选取进程(依据算法选进程),把处理机分配给进程(由进程分配程序将处理机分配给进程)。

    基本机制:排队器,分派器,上下文切换机制。

    1. 排队器: 事先将系统的就绪队列中所有的就绪进程依照一定的方式排成一个或者是多个队列。

    2. 分派器:将进程调度程序所选定的的进程从就绪队列中取出。

    3. 上下文切换机制: 对处理机进行切换时,会出现两次的上下文切换。系统首先保存当前进程的上下文。装入分派程序的上下文;最后移除分派程序。把选中的进程的CPU现场信息装入各个对应的寄存器。

    调度方式:抢占式 || 非抢占式

    1. 非抢占式:一旦将处理机分配个某进程,无论运行多长时间,决不同意由于时钟中断而抢占处理机,也不同意其它进程抢占已经分配给他的处理机。除非进程运行结束或者是其自身由于某种原因而发生了堵塞时。才会把处理机交个其它的进程。

    2. 抢占式:同意调度程序基于某种原则而暂停当前正在占用处理机的进程,而将处理机分配给其它的进程。

      (原则:优先权原则,短作业(进程)优先原则,时间片原则)

  2. 调度队列模型及准则

    2.1 调度队列模型

    2.1.1 仅有进程调度的调度队列模型:

    每一个进程在运行时都可能出现下面三种情况:

    (1) 任务在给定的时间片内已经完毕。该进程便在释放处理机后进入完毕状态

    (2) 任务在本次分得的时间片内尚未完毕,OS便将该任务再放入就绪队列的末尾;

    (3) 在运行期间,进程由于某事件而被堵塞后,被OS放入堵塞队列。

     

    2.1.2 具有低级和高级调度的队列模型:

    由作业调度按一定的作业调度算法,从外存的后备队列中选择一批作业调入内存,并为它们建立进程,送入就绪队列,然后才由进程调度依照一定的进程调度算法选择一个进程,把处理机分配给该进程。

    2.1.3 三级调度队列模型:

    在引入中级调度之后。将进程的就绪状态分为内存就绪和外存就绪。相似的也能够将堵塞状态进行划分。分为内存堵塞和外存堵塞,在调度操作下,进程能够由内存堵塞转换为外存堵塞。

2.2 调度准则

2.2.1 面向用户:

(1)周转时间短:所谓周转时间。是指从作业被提交给系统開始,到作业完毕为止这段时间间隔。

其包括四部分时间:1>作业在外存后备队列等待调度时间,2>进程在就绪队列上等待调度时间。3>进程在cpu上运行的时间,4>进程等待I/O操作完毕时间。

平均周转时间:所有作业的周转时间总和与作业数量的比值。

T=1n[∑ni=1Ti]

带权周转时间:作业的周转时间T和系统为它提供服务的时间Ts之比W=TTs

平均带权周转时间:W=1n[∑ni=1TiTs]

(2)响应时间快:所谓的响应时间。是指从用户提交一个请求開始。到系统首次产生响应为止的时间。是选择分时系统中进程调度的重要准则之中的一个。

(3)截止时间的保证:所谓截止时间。是指某任务必须開始运行的最迟时间,挥着必须完毕的最迟时间。

是评价实时系统的重要指标。

(4)优先权原则: 在选择调度算法时,均可遵循优先权原则,让紧急的任务得到及时的处理。必要时要採用抢占式的调度方式,才干保证紧急作业及时处理。

2.2.2 面向系统:

系统吞吐量高,处理机利用率好,各类资源平衡利用。

2.3 调度算法

(1)先来先服务算法(FCFS):最简单的调度算法,既可用于作业调度,也能用于进程调度。

应用在作业调度时,每次都是从后备作业队列中选择一个或者多个最早进入该队列的作业,将其调入内存,为其分配须要的资源,创建进程,加入入就绪队列尾部。应用在进程调度时。每次调度都是从就绪队列中选择一个最早进入对列中的进程,为其分配处理机。直到该进程放弃处理机。

优缺点:有利于长作业(进程)。不利于短作业(进程)

(2)短作业(进程)优先算法(SJF/SPF):从后备队列中选择一个或者多个预计运行时间短的作业或者进程,将他们调入内存或者是为其分配处理机。

优缺点:能明显的改善平均带权周转时间,尤其是对短作业而言。可是该算法对长作业不利,并且未考虑作业的紧迫程度,在实际运行过程中。评判依据仅仅是用户提供的预计运行时间,而用户有可能无意或者有意的缩短预计运行时间,导致不一定能真正的做到短作业优先。

(3)高优先权优先调度算法(FPF):可用于作业调度和进程调度。当进行调度时,选择若干个优先权高的作业或者是进程调入内存或者是为其分配处理机。

优先权的确定分为两类:

(3.1)静态优先权:在创建进程时优先权便已经确定,并且在整个运行期间保持不变。确定依据有:1>进程类型(通常系统进程的优先权高于一般用户的优先权)2>进程对资源的需求(对资源要求少的应该赋予较高的优先权)3>用户要求(由用户进程的紧迫程度以及用户所付费用来确定优先权)

(3.2)动态优先权:动态优先权是指在创建进程时所赋予的优先权,是能够随进程的推进或随其等待时间的添加而改变的,以便获得更好的调度性能。

优缺点:能非常好的体现作业(进程)紧急程度。并依据优先级来进行调度,可是要调度前要比較或者计算作业的优先级,添加了系统的开销。

(4)高响应比优先算法:为每一个作业引入动态的优先权。使得作业的优先权随着等待时间的添加而以速率a提高。

优先权=等待时间+要求服务时间要求服务时间=响应时间要求服务时间

优缺点:该算法既照应了短作业,又考虑了作业到达的先后次序,不会使得长作业长时间得不到服务。

可是该算法每次调度前都要进行响应比的计算,添加系统的开销。

(5)基于时间片的轮转调度算法:

基本原理:系统将所有的就绪进程按先来先服务的原则排成一个队列。每次调度都将cpu交给队首的进程,令其运行一个时间片的时间。运行的时间片用完就令该进程放弃时间片,并将其挂入队尾进行下一次的等待。

时间片大小的确定(核心):在时间片轮转法中,最核心的就是时间片大小的额确定,时间片大小对系统的性能有非常大的影响。时间片太短,有利于短作业,但会频繁的发生中断,。进程上下文的切换,添加系统开销;时间片太长,使得每一个进程在一个时间片单位内都能完毕任务。算法便退化成了FCFS算法,无法满足交互式需求。最为合理的是,时间片略大于一次典型的交互所需的时间。

优缺点:基于时间片轮转,能让每一个任务都有时间得到运行,有较好的交互性,缺点是时间片的确定比較复杂。

(6)多级反馈队列调度算法:

原理:

(1)设置多个就绪队列,并为各个队列赋予不同的优先级。 第一个队列的优先级最高。第二个队列次之,其余各队列的优先权逐个减少。该算法赋予各个队列中进程运行时间片的大小也各不同样,在优先权愈高的队列中,为每一个进程所规定的运行时间片就愈小。

(2)当一个进程进入内存时,首先将其放入第一队列,按FCFS原则排队等候调度。

当调度到该进程时,若能在时间片内完毕,便撤离系统。若在一个时间片内未完毕,将其挂入第二队列队尾,再依照FCFS原则进行排队等候。之后依照第一队列的方式进行运行。

(3)仅当第一队列空暇时,才会调度第二队列中的进程,仅当第1~(i-1)队列均空暇时。才会调度第i队列中的进程。

优缺点:有较好的性能,能非常好的满足各类型用户的需求,缺点是有非常多的排队队列,要消耗系统资源。

OS中处理机调度模型和调度算法的更多相关文章

  1. 《Tsinghua os mooc》第15~16讲 处理机调度

    第十五讲 处理机调度 进程调度时机 非抢占系统中,当前进程主动放弃CPU时发生调度,分为两种情况: 进程从运行状态切换到等待状态 进程被终结了 可抢占系统中,中断请求被服务例程响应完成时发生调度,也分 ...

  2. 计算机操作系统处理机调度读后感—–关于进程概念的剖析。从RING3到RING0(32位操作系统)

    计算机操作系统处理机调度读后感: 笔者在看操作系统西安电子科技大学那本书的时候,初次感觉本科教的不会太难,所以没有认真的看,但是随后这本书讲的刷新了我的世界观.这本书居然是ring0级别的,这时不禁吐 ...

  3. Python中利用LSTM模型进行时间序列预测分析

    时间序列模型 时间序列预测分析就是利用过去一段时间内某事件时间的特征来预测未来一段时间内该事件的特征.这是一类相对比较复杂的预测建模问题,和回归分析模型的预测不同,时间序列模型是依赖于事件发生的先后顺 ...

  4. skynet源码阅读<5>--协程调度模型

    注:为方便理解,本文贴出的代码部分经过了缩减或展开,与实际skynet代码可能会有所出入.    作为一个skynet actor,在启动脚本被加载的过程中,总是要调用skynet.start和sky ...

  5. Spark源码分析之二:Job的调度模型与运行反馈

    在<Spark源码分析之Job提交运行总流程概述>一文中,我们提到了,Job提交与运行的第一阶段Stage划分与提交,可以分为三个阶段: 1.Job的调度模型与运行反馈: 2.Stage划 ...

  6. Java NIO学习系列六:Java中的IO模型

    前文中我们总结了linux系统中的5中IO模型,并且着重介绍了其中的4种IO模型: 阻塞I/O(blocking IO) 非阻塞I/O(nonblocking IO) I/O多路复用(IO multi ...

  7. [golang]Golang实现高并发的调度模型---MPG模式

    Golang实现高并发的调度模型---MPG模式 传统的并发形式:多线程共享内存,这也是Java.C#或者C++等语言中的多线程开发的常规方法,其实golang语言也支持这种传统模式,另外一种是Go语 ...

  8. 图解协程调度模型-GMP模型

    现在无论是客户端.服务端或web开发都会涉及到多线程的概念.那么大家也知道,线程是操作系统能够进行运算调度的最小单位,同一个进程中的多个线程都共享这个进程的全部系统资源. 线程 三个基本概念 内核线程 ...

  9. 重新梳理调度器——GMP 调度模型

    调度器--GMP 调度模型 Goroutine 调度器,它是负责在工作线程上分发准备运行的 goroutines. 首先在讲 GMP 调度模型之前,我们先了解为什么会有这个模型,之前的调度模型是什么样 ...

随机推荐

  1. Hadoop安装过程

    1.安装JDK apt-get install openjdk-7-jdk 2.配置环境变量 vim /etc/profile 编辑: export JAVA_HOME=/usr/lib/jvm/ja ...

  2. linux sun/awt/X11GraphicsEnvironment 找不到错误

    转载自:http://blog.csdn.net/bolg_hero/article/details/46594915 在Linux下,我们在用Java的图片包来处理图片时,经常遇到java.lang ...

  3. 【C++】this指针

    来自:黄邦勇帅 this 指针是所有成员函数的隐含指针,每次调用成员函数时,this 指针就指向调用此函数的对象.可以在成员函数类 部使用显使用this 指针. 友元函数不是类的成员函数,所以友元函数 ...

  4. 关于 svn: E155004 is already locked 出现原因和解决办法

    1.出错提示:  svn: E155004 is already locked,please clean up ......... 2.出错原因: SVN 本地更新时,由于一些操作中断更新,如磁盘空间 ...

  5. 《锋利的JQuery》读书要点笔记5——jQuery与Ajax的应用

    第6章 jQuery与Ajax的应用 Ajax的全称:Asynchronous JavaScript and XML (异步Javascript和XML) 传统模式中,数据提交通过表单方式实现,数据的 ...

  6. 《深入理解Java虚拟机》学习笔记

    <深入理解Java虚拟机>学习笔记 一.走近Java JDK(Java Development Kit):包含Java程序设计语言,Java虚拟机,JavaAPI,是用于支持 Java 程 ...

  7. HDU 1811 Rank of Tetris 【拓扑排序 + 并查集】

    自从Lele开发了Rating系统,他的Tetris事业更是如虎添翼,不久他遍把这个游戏推向了全球. 为了更好的符合那些爱好者的喜好,Lele又想了一个新点子:他将制作一个全球Tetris高手排行榜, ...

  8. Codeforces #428 Div2 D

    #428 Div2 D 题意 给出一些数,现在要求找出一些数满足 \(i_1 < i_2 < i_3 < ... < i_k\) 以及 \(gcd(a_{i_1}, a_{i_ ...

  9. oracle null 相关的另外2个方法

  10. jmeter bean shell断言加密的响应信息

    断言加密的响应信息 1.在http请求-->添加-->断言-->bean shell 断言 import com.changfu.EncryptAndDecryptInterface ...