浅谈操作系统——作业调度

195 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第3天,点击查看活动详情

今天学点算法,话不多说,先打地基

处理机调度

处理机调度的三个层次

1. 高级调度

  • 决定把外存上哪些作业调入内存、创建进程、分配资源
  • 作业调度、长程调度或宏观调度

只有批处理系统中才有高级调度哦

2.中极调度

  • 完成过程的部分或全部在内、外存间的交换
  • 中程调度

3.低级调度

  • 决定就绪队列中哪个进程应获得处理机
  • 进程调度、短程调度或微观调度

以上三个层次也有共同的目标:

  • 资源利用率高

CPU的利用率=CPU有效工作时间/(CPU有效工作时间+CPU空闲等待时间)

  • 公平性
  • 资源的平衡利用
  • 策略的强制执行

批处理系统的目标

  • 周转时间短
  • CPU利用率高
  • 系统吞吐量高 (这里的吞吐量是指在单位时间内系统所完成的作业数)

分时系统的目标

  • 响应时间快
  • 均衡性

实时系统的目标

  • 截止时间的保证
  • 可预测性准则

作业调度及算法

作业调度的主要决策

接纳多少作业取决于系统多道程序度

接纳那些作业取决于系统的调度算法

1.先来先服务调度算法(FCFS)

思想

完成选择一个或多个最先进入后备队列的作业,将它们放入内存,为他们分配资源、创建进程,并放入就绪队列

也就是到达时间早的先开始,按这个大小顺序来

image.png

这里的周转时间=完成时间-服务时间

带权周转时间=周转时间/服务时间

特点

  • 利于长作业,不利于短作业
  • 利于CPU密集/繁忙型的作业(作业大部分时间用于计算),不利于I/O 密集/繁忙型作业(作业大部分时间用于等待I/O)
  • 几乎所有进程都交替出现计算和I/O请求

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

思想

完成在后备队列选择一个或多个估计运行时间最短的作业,将他们调入内存,为他们分配资源、创建进程,并放入就绪队列

这个意思就是服务时间短的先来,但要注意第一个到达的必须要第一,然后再按服务时间排

特点

作业A,B,C,D运行时间分别为a,b,c,d,平均周转时间为(4a+3b+2c+d)/4

这里a对平均周转时间影响最大,应是最短作业,其次是b,c,d

  • 优点: 有效降低作业的平均等待时间,提高系统吞吐量
  • 缺点:对长作业不利,没考虑作业紧迫程度,作业的估计运行时间不准确

优先级调度算法(PSA)

思想

完成在后备队列选择一个或多个优先级最高的作业,将他们调入内存,为他们分配资源、、创建进程,并放入就绪队列

高响应比优先调度算法(HRRN)

响应比Rp = 1 + (作业等待时间/作业要求服务时间)

  • 如果作业等待时间相同,则处理时间越短,响应比越高,利于短作业
  • 对于长作业,随着等待时间增加,响应比增高,最后同样可以获得处理机
  • 如果处理时间相同,等待时间越长,响应比越高,实现的是先来先服务

下面是一道题用三种算法得出的结果

image.png

image.png

image.png

image.png

我个人感觉这些算法还是比较简单的,就是简单做数学题,感觉比知识点好记好理解多了。那这篇文章就到这里啦,下篇见~