精华内容
参与话题
问答
  • 进程调度算法

    2020-11-15 17:24:17
    进程调度算法 1 优先调度算法 1.1先来先服务调度算法 先来先服务调度算法指的是每次调度都从任务待队列中选择一个或者多个最早进入队列中的任务,然后为其分配资源、创建进程、放入就绪队列中。当调度算法获取到CPU...

    1 优先调度算法

    1.1先来先服务调度算法

    先来先服务调度算法指的是每次调度都从任务待队列中选择一个或者多个最早进入队列中的任务,然后为其分配资源、创建进程、放入就绪队列中。当调度算法获取到CPU资源时,会从就绪队列中拿到队首(先进入就绪队列)的进程分配给CPU运行。
    总结:该算法优先进行最早进入队列的任务,算法实现比较简单。

    在这里插入图片描述

    1.2 短作业优先调度算法

    短作业优先调度算法是指每次调度会预先对任务队列中的任务执行时间进行估计,执行时间短的一个或者多个任务会为其分配资源、创建进程、放入就绪队列中。调度算法获取到CPU资源时,从就绪队列中选取一个时间最短的任务为其分配CPU资源。
    总结:该算法优先运行时间短的任务,以提高CPU的整体利用率和运行效率,但是会导致某些运行时间长的任务长时间得不到调度的情况。
    在这里插入图片描述

    2 高优先权优先调度算法

    高优先权优先调度算法在定义任务的时候会为每个任务设置不同的优先级,在进行任务调度时优先级最高的任务会被首先执行,使得资源分配更加灵活。主要包括非抢占式优先调度算法、抢占式优先调度算法和高响应比优先调度算法。

    2.1 非抢占式优先调度算法

    非抢占式优先调度算法每次从任务队列中选取优先级最高的一个或者几个任务为其分配资源、创建进程、放入到就绪队列中。调度算法在获取到CPU资源时会从就绪队列中选择优先级最高的任务运行,进程在运行过程当中一直占有CPU资源,直到进程运行完毕或者因为异常才放弃CPU资源。该算法一旦将CPU资源分配给某个进程,就不会对其进行回收,直到任务主动放弃资源。

    2.2 抢占式优先调度算法

    抢占式优先调度算法与2.1非抢占式优先调度算法相比,最大的不同就是一个进程可以被其他进程抢占CPU资源。通俗地讲,当一个A进程在运行过程当中,如果此时出现了一个比A进程优先级更高的B进程,那么调度算法就会暂停A进程,并回收A进程的CPU资源,让B进程获得CPU资源运行。这样可以保障CPU在整个运行周期中,可以按照任务的优先级优先分配资源,如果有紧急任务需要执行,可以保障其在第一时间执行。

    2.3 高响应比优先调度算法

    高响应比优先调度算法采用了动态优先权的概念,即任务的执行时间越短,任务的优先级就越高;任务在队列中等待时间越长,任务的优先级就越高。这样既保证了快速、高并发地执行短时间任务,又可以保证低优先级但是长时间等待的任务也有被调度的可能性。
    该算法在保障效率(短作业优先在很大程度上能够提高CPU的使用率和系统性能)的基础上尽可能提高了调度的公平性(在一定程度上遵循了先来先到的原则,即长时间等待的任务,优先级会随着等待时间的增加而提高)。

    3 时间片的轮转调度算法

    3.1 时间片轮转法

    时间片轮转法按照先来先服务的原则在就绪队列中取出一个任务,为该任务分配CPU时间片运行,当该任务的CPU时间片使用完毕后,由一个时间计时器发出时钟中断请求,调度器收到请求后会中断该进程的执行,将该进程放到就绪队列的队尾,然后从队首取出下一个进程分配CPU时间片运行。这样就绪队列中的任务会被轮流获取一定的CPU时间片运行。
    在这里插入图片描述

    3.2 多级反馈队列调度算法

    多级反馈队列调度算法在时间片轮询算法的基础上,设置了多个就绪队列,并为每个就绪队列都设置不同的优先级。队列的优先级越高,队列中任务被分配时间片的机会就越大。默认第一个队列优先级最高,其他次之。
    多级反馈队列调度算法的调度流程为:

    • 在系统收到新的任务后,首先将其放入第一个就绪队列的队尾,按照先来先服务调度算法排队等待调度。
    • 若该进程在规定的CPU时间片内运行完成或者运行中出现错误,则退出进程并从系统中移除该任务;如果该进程在规定的CPU时间片内没有完成任务,那么将该进程转入第2就绪队列的队尾调度执行;如果该任务在第2就绪队列中被调度时,在一个CPU时间片中没有完成任务,那么该进程就会被转入第3就绪队列,以此类推,在一个长时间任务从第1队列降到第n队列后,在第n队列中将通过时间片轮转的方式运行。

    多级反馈队列调度算法遵循以下原则:

    • 仅在第一个队列为空的情况下,调度器才调度第2队列中的任务。
    • 仅在第1~(n-1)队列为空的情况下,调度器才调度第n队列中的任务。
    • 如果处理器在处理第n队列中的某个进程任务,如果此时在第1~(n-1)任何一个队列中有新的进程进入,那么此时新进程会抢占正在运行的进程的CPU资源,即调度器会停止当前正在运行的进程将其放回第n队列的队尾,把处理器的资源分配给新来的高优先级的进程使用。

    多级反馈调度算法相对来说比较复杂,它充分考虑了先来先服务调度算法和时间片轮询算法的优势,使得对进程的调度更加合理。

    展开全文

空空如也

1 2 3 4 5 ... 20
收藏数 5,327
精华内容 2,130
关键字:

进程调度算法