进程调度:介绍

进程调度:介绍

1. 工作负载假设

完全可操作的调度准则(a fully-operational scheduling discipline)
对操作系统中运行的进程(有时也叫工作任务)做出如下的假设:

  1. 每一个进程运行相同的时间。
  2. 所有的进程同时到达。
  3. 一旦开始,每个进程保持运行直到完成。
  4. 所有的进程只是用 CPU(即它们不执行 IO 操作)。
  5. 每个工作的运行时间是已知的。

2. 调度指标

周转时间(turnaround time): 任务的周转时间定义为任务完成时间减去任务到达系统的时间。
T周转时间 = T完成时间T到达时间

3. 先进先出(FIFO)

先进先出(First In First Out 或 FIFO)调度

  • 优点:很简单,易于实现。
  • 缺点:平均周转时间长。

护航效应(convoy effect):一些耗时较少的潜在资源消费 者被排在重量级的资源消费者之后。

4. 最短任务优先(SJF)

最短任务优先(Shortest Job First,SJF): 先运行最短的任务,然后是次短的任务,如此下去。 如果所有工作同时到达,可以证明 SJF 确实是一个最优(optimal)调度算法。

5. 最短完成时间优先(STCF)

最短完成时间优先(Shortest Time-to-Completion First,STCF)
抢占式最短作业优先(Preemptive Shortest Job First ,PSJF) 调度程序: 每当新工作进入系统时,它就会确定剩余工作和新工作中,谁的剩余时间最少,然后调度该工作。 STCF 可证明是最优的。

6. 新度量指标:响应时间

响应时间(response time): 响应时间定义为从任务到达系统到首次运行的时间。
T响应时间 = T首次运行T到达时间

STCF 和相关方法虽然有很好的周转时间,但对于响应时间和交互性是相当糟糕的。

7. 轮转

轮转(Round-Robin,RR) 调度:
RR 在一个时间片(time slice,有时称为调度量子,scheduling quantum)内运行一个工作,然后切换到运行队列中的下一个任务,而不是运行一个任务直到结束。它反复执行,直到所有任务完成。

时间片越短,RR 在响应时间上表现越好。但时间片太短,突然上下文切换的成本将影响整体性能。

PR的周转时间指标最差。更一般地说,任何公平(fair)的政策(如 RR),即在小规模的时间内将 CPU 均匀分配到活动进程之间,在周转时间这类指标上表现不佳。

两种调度程序,第一种类型(SJF、STCF)优化周转时间,但对响应时间不利。第二种类型(RR)优化响应时间,但对周转时间不利。

8. 结合I/O

调度程序结合 I/O
将每个 CPU 突发作为一项工作,调度程序确保“交互”的进程经常运行。当这些交互式作业正在执行 I/O 时,其他 CPU 密集型作业将运行,从而更好地利用处理器。

9. 无法预知

调度程序不知道每个工作的长度。

猜你喜欢

转载自blog.csdn.net/qq_39389123/article/details/112971361