一、页面置换算法

1. 先进先出置换算法(FIFO):
  每次选择淘汰的页面是最早进入内存的页面。
  实现方法:把调入内存的页面根据调入的先后顺序排成一个队列,需要换出页面时选择队头,页面队列的最大长度取决于系统为进程分配了多少个内存块。
  FIFO算法虽然实现简单,但是该算法与进程实际运行时的规律不适应,因为先进入的页面也有可能最经常被访问。

2. 最近最久未使用置换算法(LRU):
  每次淘汰的页面是最近最久未使用的页面。
  当需要置换一页时,选择在最近一段时间里没有使用过的页面予以置换。

二、进程调度算法

1. 先来先服务 first-come first-serverd(FCFS)
  非抢占式的调度算法,按照请求的顺序进行调度。
  有利于长作业,但不利于短作业,因为短作业必须一直等待前面的长作业执行完毕才能执行,而长作业又需要执行很长时间,造成了短作业等待时间过长。
2. 短作业优先 shortest job first(SJF)
  非抢占式的调度算法,按估计运行时间最短的顺序进行调度。
  长作业有可能会饿死,处于一直等待短作业执行完毕的状态。因为如果一直有短作业到来,那么长作业永远得不到调度。
3. 时间片轮转
  将所有就绪进程按 FCFS 的原则排成一个队列,每次调度时,把 CPU 时间分配给队首进程,该进程可以执行一个时间片。当时间片用完时,由计时器发出时钟中断,调度程序便停止该进程的执行,并将它送往就绪队列的末尾,同时继续把 CPU 时间分配给队首的进程。
4. 优先级调度
  为每个进程分配一个优先级,按优先级进行调度;为了防止低优先级的进程永远等不到调度,可以随着时间的推移增加等待进程的优先级。

三、磁盘调度算法

读写一个磁盘块的时间的影响因素有:
  旋转时间(主轴转动盘面,使得磁头移动到适当的扇区上);
  寻道时间(制动手臂移动,使得磁头移动到适当的磁道上);
  实际的数据传输时间。

其中,寻道时间最长,因此磁盘调度的主要目标是使磁盘的平均寻道时间最短。

1. 先来先服务算法:
  按照磁盘请求的顺序进行调度。
  优点是公平和简单。
  缺点也很明显,因为未对寻道做任何优化,使平均寻道时间可能较长。

2. 最短寻道时间优先算法:
  优先调度与当前磁头所在磁道距离最近的磁道。
  虽然平均寻道时间比较低,但是不够公平。如果新到达的磁道请求总是比一个在等待的磁道请求近,那么在等待的磁道请求会一直等待下去,也就是出现饥饿现象。具体来说,两端的磁道请求更容易出现饥饿现象。

3.电梯扫描算法:
  电梯总是保持一个方向运行,直到该方向没有请求为止,然后改变运行方向。
  电梯算法(扫描算法)和电梯的运行过程类似,总是按一个方向来进行磁盘调度,直到该方向上没有未完成的磁盘请求,然后改变方向。因为考虑了移动方向,因此所有的磁盘请求都会被满足,解决了最短寻道时间优先算法的饥饿问题。