持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第3天,点击查看活动详情
今天学点算法,话不多说,先打地基
处理机调度
处理机调度的三个层次
1. 高级调度
- 决定把外存上哪些作业调入内存、创建进程、分配资源
- 作业调度、长程调度或宏观调度
只有批处理系统中才有高级调度哦
2.中极调度
- 完成过程的部分或全部在内、外存间的交换
- 中程调度
3.低级调度
- 决定就绪队列中哪个进程应获得处理机
- 进程调度、短程调度或微观调度
以上三个层次也有共同的目标:
- 资源利用率高
CPU的利用率=CPU有效工作时间/(CPU有效工作时间+CPU空闲等待时间)
- 公平性
- 资源的平衡利用
- 策略的强制执行
批处理系统的目标
- 周转时间短
- CPU利用率高
- 系统吞吐量高 (这里的吞吐量是指在单位时间内系统所完成的作业数)
分时系统的目标
- 响应时间快
- 均衡性
实时系统的目标
- 截止时间的保证
- 可预测性准则
作业调度及算法
作业调度的主要决策
接纳多少作业取决于系统多道程序度
接纳那些作业取决于系统的调度算法
1.先来先服务调度算法(FCFS)
思想
完成选择一个或多个最先进入后备队列的作业,将它们放入内存,为他们分配资源、创建进程,并放入就绪队列
也就是到达时间早的先开始,按这个大小顺序来
这里的周转时间=完成时间-服务时间
带权周转时间=周转时间/服务时间
特点
- 利于长作业,不利于短作业
- 利于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 + (作业等待时间/作业要求服务时间)
- 如果作业等待时间相同,则处理时间越短,响应比越高,利于短作业
- 对于长作业,随着等待时间增加,响应比增高,最后同样可以获得处理机
- 如果处理时间相同,等待时间越长,响应比越高,实现的是先来先服务
下面是一道题用三种算法得出的结果
我个人感觉这些算法还是比较简单的,就是简单做数学题,感觉比知识点好记好理解多了。那这篇文章就到这里啦,下篇见~