操作系统之旅--04(处理机调度)

版权声明:Mr.Wang 汪先生版权所有,谢绝任何转载 https://blog.csdn.net/weixin_37650458/article/details/87205572

1.处理机调度的层次:

  1. 高级调度,又叫长程/作业/宏观调度,他的调度对象是作业,不涉及CPU,外存后备队列中选择作业进入内存就绪队列。为他们创建进程分配资源。
  2. 低级调度又称为进程调度或者短程调度,其送调度的对象是进程或者内核线程,他主要是分配CPU,从就绪队列中选择一个进程来执行并由分派程序(Dispatcher)分配处理机。
  3. 中级调度又称为内存调度,目的是提高内存利用率和系统吞吐量。他会把暂时不能运行的进程调至外存等待,此时进程的状态称为挂起状态。当他具备运行的条件且内存又有空闲的时候,就会把他重新调入内存变为就绪状态。

  图示:

                    

   

处理机调度算法的共同目标

    1.努力提高CPU的利用率,尽可能使处理机和资源都保持忙碌的状态

        

    

     2公平性:使诸进程都获得合理的CPU时间,不会发生进程饥饿现象

     3.平衡性:因为系统可能有具有多种类型的进程,调度算法要尽可能保持系统资源的平衡性。

     4.策略强制执行(抢占):比如制定的一些安全策略,只要需要求必须强制执行

 批处理系统的目标:

  1. 平均周转时间短(所谓周转时间就是从作业被提交给系统开始,到作业完成为止的这段时间间隔)

       周转时间= 结束时间 -到达时间

      平均周转时间:

                         

     2.系统吞吐量高

     3.处理机利用率高

   

作业与作业调度:

  作业:程序+作业说明书,系统是根据说明书来对程序的运行进行控制,在批处理系统中是以作业为基本单位从外存调入内存的。

作业调度的主要任务,根据JCB(作业控制块)中的信息,检查系统中的资源能否满足作业对资源的需求,以及按照一定的调度算法,从外存的后被队列中选取某些作业调入内存,并为他们创建进程,分配资源,然后将新创建的进程排在就绪队列上等待调度。

 

调度算法:

  1. 先来先服务(FCFS)

按照作业到达的先后顺序来进行调度,或者说他是优先考虑在系统中等待时间最长的作业。

  2. 短作业优先算法(SJF)

         作业越短优先级越高,可提高系统的吞吐量,但是对长作业不利

     3.高相应比优先调度算法

       既考虑作业的等待时间,又考虑作业运行时间的调度算法。

       优先权=(等待时间+要求服务时间)/要求服务时间

       响应比R=1+(等待时间/服务时间)

     看个例子:

     

作业

到达时间

处理时间

完成时间

A

0

3

 

B

2

6

 

C

4

4

 

D

6

5

 

E

8

2

 

 先来第一种FCFS算法:

作业的次序就是:A=>B=>C=>D=>E  完成时间就是3,9,13,18,20

  第二种SJF算法:  A=>B=>E=>C=>D

        完成时间: 3,4,8,10,15,20

  第三种:高响应比优先:根据到达的时间分析A先执行,A执行完了以后只有B到达,所以执行B,B执行完了以后C,D,E都到达了。此时就需要计算一波响应比了  

RC=1+5/4,RD=1+3/5,RE=1+1/2 所以RC最大,在B后执行的就为C,之后继续计算响应比,RD=1+7/5,RE=1+5/2,所以C执行完了就执行E,然后执行D

接下来可能计算平均周转时间和带权周转时间:

  以FCFS算法为例子周转的时间(提交任务到完成该任务的时间)为

 A,     B,            C,        D,            E

3, 9-2=7,13-4=9,18-6=12  20-8=12

平均周转时间=(3+7+9+12+12)/5

带权周转时间=周转时间/系统为他提供服务的时间

所以FCFS算法的带权周转时间为:3/3,7/6,9/4,12/5,12/2 

参考博客

      https://blog.csdn.net/qq_28602957/article/details/53365757

猜你喜欢

转载自blog.csdn.net/weixin_37650458/article/details/87205572
今日推荐