zoukankan      html  css  js  c++  java
  • 进程调度

    进程调度方式

         进程调度使操作系统的一种低级调度。进程调度的方式分为抢占式和非抢占式。

           非抢占方式:进程一旦被选中运行,它将一直运行下去,直至完成工作,自愿放弃CPU,或因某个事件阻塞,让出CPU。

           抢占方式:抢占方式允许进程调度程序根据某种策略终止当前运行的进程,将其移入就绪队列,并根据某种调度算法选择另一个进程投入运行。抢占的情况:新进程到达、发生中断且将阻塞进程变为就绪进程以及用完时间片等。


    进程调度策略

    (1)先来先服务(FCFS、不可抢占)

           对于作业调度(高级调度)来说:从后备作业队列中选择队首的一个作业或者几个作业,将其调入内存,分配相应的资源,创建进程,然后将其放入就绪队列。

           进程调度来说:先来先服务从就绪队列中选择最先进入队列的进程,将CPU分配给它。该进程会一直运行下去,直到完成或者由于某事件被阻塞放弃CPU

           优缺点:利于长进程,因为进程获得CPU可以一直运行,如果短进程在长进程后面就悲剧了。造成处理机和I/O设备得不到充分利用。

    (2)短作业/进程优先(SJF、不可抢占)

          进程调度:进程获得CPU一直运行直到完成或者由于某事件被阻塞放弃CPU,运行结束从当前就绪队列选择最短的进程投入运行。

          优缺点:利用短进程,长进程可能由于得不到处理器“饿死”。(有最短的平均周转时间

    (3)最高响应比优先(HRP、不可抢占)

          进程调度:进程获得CPU一直运行直到完成或者由于某事件被阻塞放弃CPU,运行结束从当前就绪队列选择最高响应比的进程投入运行。

                  响应比 = (响应时间+运行时间)/运行时间

          在响应时间固定的情况下,利于短进程。长进程随着等待时间变长,响应比会提高,因此长进程也能在足够长的时间被调度。

           优缺点:利用短进程、长进程不会被饿死。

    4)最短剩余时间(SRT、抢占) 

           SRT提供了一种抢占机制的调度算法,只要有进程的剩余时间比当前正在运行的进程小,就可以抢占CPU。但是这种调度策略必须记录进程过去被服务的时间,增加了开销。

          优缺点:开销大、不利于长进程。

    (5)轮转(RR、抢占)

          轮转法基于时钟的抢占策略,以一个周期性间隔产生的时钟中断一次进程调度。当进程跑完分配的时间片,就要进行调度,调度的策略基于FCFS策略。时间片不能太大,太大响应时间长,太小切换发生太频繁增加系统开销。

         优缺点:公平对待各种进程。

    (6)多级队列(MQ、混合)

         多级队列调度算法把就绪队列分成几个单独的队列根据进程的优先级、类型等固定的把进程加入不同的队列,每个队列有各自的调度算法。例如前台队列利用时间片轮转进程调度、后台进程利用FCFS调度。此外,各队列之间也要进行调度,通常采用固定优先级的抢占式调度。例如,前台进程优先级高于后台优先级,或者各队列分配不同的时间比例,前台80%(RR),后台20%(FCFS)。

    (7)多级反馈队列(MFQ、混合)

         在多级队列调度算法时,进程被固定放入一个队列中,他们不能从一个队列移到另一个队列。多级反馈队列在多级队列上加入反馈措施:系统设置多个就绪队列,每个队列对应一个优先级,各优先级的时间片不同,第一个优先级最高新进程进入系统后,进入第一个队列,如果时间片完后没有完成进入第二个队列,依次往下系统先运行第一个队列的进程,第一个队列完后,运行第二个队列。。。

    (8)优先级(HPF、抢占)

          每个进程都一个优先级,需要进程调度的时候,总选择优先级最高的进程。进程优先级与进程的紧迫程度有关。关于优先级有静态优先级和动态优先级


    实时调度策略

        实时系统对时间有严格的要求。一个特定的任务都有一个截止时间相关联。实时任务有软实时和硬实时之分。硬实时任务执行的截止时间绝对不能被超过,超过了可能就出现致命的错误。软实时的截止时间可以被超过(相当于在这个时间段内完成最好),超过了还可以继续调度它。

          两类调度算法:(1)非抢占式:轮转算法和优先级调度算法。

                                   (2)抢占式:基于时钟中断的抢占式算方法和立即抢占调度算法。

         几种实时调度算法:最早截止时间有先(即可用于抢占式也可用于非枪占式)和最低松弛度优先(根据任务紧急程度来调度)。


    多处理机调度策略

        多处理器存在的问题:不能多个处理机选择相同的进程,也不能在并发访问调度队列时丢失进程

          自调度:系统存在唯一的一个就绪队列,新来的进程进入这个就绪队列,某个CPU空下来,由这个队列选择要执行的进程。

           组调度:将一组相关的进程同时分派到多台处理器上运行。

  • 相关阅读:
    disconf使用小结
    关于spring aop Advisor排序问题
    关于tomcat WEB-INF/lib下类加载顺序
    Netty5客户端源码解析
    巧用命令行工具 redis-cli
    redis学习总结
    聊聊Redis的持久化
    Git管理代码
    RabbitMQ连接池、生产者、消费者实例
    java处理节假日和工作时间的工具类
  • 原文地址:https://www.cnblogs.com/riskyer/p/3249337.html
Copyright © 2011-2022 走看看