调度算法FCFSpython实现 调度算法总结_时间片

 

 

1.进程调度算法

1.先到先服务

2.最短作业优先调度

3.高响应比优先调度

调度算法FCFSpython实现 调度算法总结_优先级_02

 

要求服务时间相同,等待时间短的时间先服务,等待时间相同,要求服务时间长的先服务,兼顾了长作业和短作业。

4.时间片轮转

调度算法FCFSpython实现 调度算法总结_时间片_03

 

每个进程运行一定的时间,然后放到队尾,运行下一个队列。

5.最高优先级调度

为每个进程设置一个优先级。

6.多级反馈队列调度

调度算法FCFSpython实现 调度算法总结_物理内存_04

 

 

  1. 按照先来先服务原则排序,设置N个就绪队列为Q1,Q2...QN,每个队列中都可以放很多作业;
  2. 为这N个就绪队列赋予不同的优先级,第一个队列的优先级最高,第二个队列次之,其余各队列的优先权逐个降低;
  3. 设置每个就绪队列的时间片,优先权越高,算法赋予队列的时间片越小。时间片大小的设定按照实际作业(进程)的需要调整;
  4. 进程在进入待调度的队列等待时,首先进入优先级最高的Q1等待。
  5. 首先调度优先级高的队列中的进程。若高优先级中队列中已没有调度的进程,则调度次优先级队列中的进程。例如:Q1,Q2,Q3三个队列,只有在Q1中没有进程等待时才去调度Q2,同理,只有Q1,Q2都为空时才会去调度Q3。
  6. 对于同一个队列中的各个进程,按照时间片轮转法调度。比如Q1队列的时间片为N,那么Q1中的作业在经历了时间片为N的时间后,若还没有完成,则进入Q2队列等待,若Q2的时间片用完后作业还不能完成,一直进入下一级队列,直至完成。
  7. 在低优先级的队列中的进程在运行时,又有新到达的作业,那么在运行完这个时间片后,CPU马上分配给新到达的作业即抢占式调度CPU。

二,页面置换算法

缺页中断

  1. 在 CPU 里访问一条 Load M 指令,然后 CPU 会去找 M 所对应的页表项。
  2. 如果该页表项的状态位是「有效的」,那 CPU 就可以直接去访问物理内存了,如果状态位是「无效的」,则 CPU 则会发送缺页中断请求。
  3. 操作系统收到了缺页中断,则会执行缺页中断处理函数,先会查找该页面在磁盘中的页面的位置。
  4. 找到磁盘中对应的页面后,需要把该页面换入到物理内存中,但是在换入前,需要在物理内存中找空闲页,如果找到空闲页,就把页面换入到物理内存中。
  5. 页面从磁盘换入到物理内存完成后,则把页表项中的状态位修改为「有效的」。
  6. 最后,CPU 重新执行导致缺页异常的指令。

调度算法FCFSpython实现 调度算法总结_物理内存_05

 

 1.opt 

已经在使用的页面中最长时间没有被访问的先被置换掉。

调度算法FCFSpython实现 调度算法总结_调度算法FCFSpython实现_06

 

2.先进先出

3.lru

调度算法FCFSpython实现 调度算法总结_时间片_07

 

根据未来即将使用的页面中淘汰已经使用的页面中最久不会被访问的页面。

4.clock 页面置换算法

调度算法FCFSpython实现 调度算法总结_调度算法FCFSpython实现_08

 

调度算法FCFSpython实现 调度算法总结_优先级_09

 

 5.最少使用置换

为每个在使用的页面设置一个计数器,每次发生页面置换的时候淘汰使用次数最少的。

三、磁盘调度算法

1.先来先扫描

2.最短左右优先

3.扫描算法,

从先访问的开始,从一个方向扫描到底,然后掉头扫描另一个方向,注意会扫到0。

4.循环扫描

先从一个方向开始扫,扫到底然后掉头到开始端,再从同一个方向开始扫。

5.look和c-look 分别是对扫描和循环扫描的优化,优化的具体是指一旦扫到具体的请求就不再扫了,可能不会扫到0.