zoukankan      html  css  js  c++  java
  • 2020/7/30笔记——常用进程调度算法

    常用进程调度算法

    几个时间的计算: 平均等待时间、平均周转时间、平均带权周转时间

     平均等待时间: 等待时间(作业提交/进程就绪->开始执行)求和取平均
     平均周转时间: 周转时间(作业提交/进程就绪->执行完毕)求和取平均
     平均带权周转时间: 带权周转时间(周转时间/执行时间)求和取平均

    先到先服务(FCFS)(按到达先后排成队,总是取出队首执行)

     一种最简单的调度算法,既可以用于作业调度、进程调度,算法每次从后备作业队列 / 进程就绪队列中选择最先进入该队列的一个或几个作业 / 一个进程,将它们调入内存、分配资源、加入进程就绪队列 / 分配CPU开始执行
    优点在于算法简单; 缺点在于对长作业有利、短作业不利,效率低,有利于CPU繁忙型作业,不利于I/O繁忙型作业。
    不能作为分时、实时系统的主要调度策略

    时间片轮转调度(FCFS + 每次队首执行时间不超过一个时间片)

    主要适用于分时系统将所有就绪进程按到达时间的先后次序排成一个队列,进程调度程序总是选择就绪队列中第一个进程执行,即先来先服务的原则,但仅能运行一个时间片,如100ms。在使用完一个时间片后,即使进程并未完成其运行,它也必须释放出(被剥夺)处理机给下一个就绪的进程,而被剥夺的进程返回到就绪队列的末尾重新排队,等候再次运行
    时间片大小与系统响应时间、处理能力有关,当时间片很大足够进程执行完毕时退化为FCFS,时间片很小时进程切换频繁将增大系统开销

    短作业/进程优先(SJF/SPF)

     SJF每次从后备作业队列中选择估计运行时间最短的一个/几个作业调入内存; SPF每次从进程就绪队列中选择估计运行时间最短的进程分配处理机开始执行。
     对于短作业/进程有利,对于长作业/进程不利,容易导致出现“饥饿”现象。
    平均等待时间,平均周转时间最短

    最短剩余时间优先

    针对最短进程优先增加了抢占机制的版本,进程调度总是选择预期剩余时间最短(比当前正在执行的进程更短)的就绪进程,抢占当前正在运行的进程。像最短进程优先一样,调度程序正在执行选择函数是必须有关于处理时间的估计,并且存在长进程饥饿的危险

    高响应比优先调度算法

     响应比R = (W+S)/S,W为等待时间,S为执行时间(系统提供的服务时间),R>=1(只有第一个进程能够取等)
     当前进程完成或被阻塞时,选择R值最大的就绪进程,它说明了进程的年龄。当偏向短作业时,长进程由于得不到服务,等待时间不断增加,从而增加比值,最终在竞争中赢了短进程。和最短进程优先、最短剩余时间优先一样,使用最高响应比策略需要估计预计服务时间
    可以同时保证短作业、长作业的及时执行,克服了FCFS、SJF中可能出现的“饥饿”现象

    优先级调度算法

     在作业调度中,优先级调度算法每次从后备作业队列中选择优先级最髙的一个或几个作业,将它们调入内存,分配必要的资源,创建进程并放入就绪队列。在进程调度中,优先级调度算法每次从就绪队列中选择优先级最高的进程,将处理机分配给它,使之投入运行。
     又可分为剥夺式/非剥夺式,静态优先/动态优先方式

    多级反馈队列调度算法

     多级反馈队列调度算法的实现思想如下:

    1. 应设置多个就绪队列,并为各个队列赋予不同的优先级,第1级队列的优先级最高,第2级队列次之,其余队列的优先级逐次降低。
    2. 赋予各个队列中进程执行时间片的大小也各不相同,在优先级越高的队列中,每个进程的运行时间片就越小。例如,第2级队列的时间片要比第1级队列的时间片长一倍, ……第i+1级队列的时间片要比第i级队列的时间片长一倍。
    3. 当一个新进程进入内存后,首先将它放入第1级队列的末尾,按FCFS原则排队等待调度。当轮到该进程执行时,如它能在该时间片内完成,便可准备撤离系统;如果它在一个时间片结束时尚未完成,调度程序便将该进程转入第2级队列的末尾,再同样地按FCFS 原则等待调度执行;如果它在第2级队列中运行一个时间片后仍未完成,再以同样的方法放入第3级队列……如此下去,当一个长进程从第1级队列依次降到第 n 级队列后,在第 n 级队列中便釆用时间片轮转的方式运行。
    4. 仅当第1级队列为空时,调度程序才调度第2级队列中的进程运行;仅当第1 ~ (i-1)级队列均为空时,才会调度第i级队列中的进程运行。如果处理机正在执行第i级队列中的某进程时,又有新进程进入优先级较高的队列(第 1 ~ (i-1)中的任何一个队列),则此时新进程将抢占正在运行进程的处理机,即由调度程序把正在运行的进程放回到第i级队列的末尾,把处理机分配给新到的更高优先级的进程。

    调度算法评价指标

      CPU利用率 = 工作时间/总时间
      系统吞吐量 = 总共完成作业/总时间
      等待时间 = 进入后备作业队列/就绪队列 到 开始调入内存/开始执行
      周转时间 = 进入后备作业队列/就绪队列 到 调入内存(转为进程)/执行完毕
    响应时间 = 用户提交作业 到 首次产生响应

    程序、作业、进程

      用户将要进行的所有工作打包成作业提交给计算机,系统将用户提交的作业放到外存的作业等待队列。操作系统通过调度算法从作业等待队列中选择部分作业加载到内存,同时为其分配需要的资源,成为进程并加入到内存的就绪进程等待队列。一个作业包含至少一个进程。

  • 相关阅读:
    JPA总结——实体关系映射(一对多@OneToMany)
    JPA——映射持久化对象(Entity)
    jackson annotations注解详解
    Spring Data JPA
    Spring Data JPA初使用
    Spring注解Annotion详解
    JPA概要
    The requested resource is not available错误
    Servlet 工程 web.xml 中的 servlet 和 servlet-mapping 标签
    Spring——Eclipse上安装springsource-tool-suite与jar包详解
  • 原文地址:https://www.cnblogs.com/CodeSPA/p/13404033.html
Copyright © 2011-2022 走看看