CPU调度 操作系统笔记整理系列
Posted 雨宙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CPU调度 操作系统笔记整理系列相关的知识,希望对你有一定的参考价值。
CPU调度
调度算法
多级队列调度
- 多级队列调度算法将ready队列分成多个单独队列
- 根据进程属性,如内存大小、进程优先级、进程类型等,一个进程永久分到一个队列
- 每个队列有自己的调度算法,如FCFS、RR等
- 队列之间应有调度,通常采用固定优先级抢占调度,系统进程、交互进程、交互编辑进程、批处理进程、学生进程,五个队列优先级由高到低,每个队列与更低层队列相比具有绝对的领先,例如,只有系统进程、交互进程和交互编辑进程队列都为空,批处理队列内的进程才可运行
- 另一种队列之间的调度方法是,在队列之间划分时间片,每个队列都有一定比例的CPU时间,可用于调度队列内的进程,例如,前台队列可以有80%的CPU时间,而后台队列可以有20%的CPU时间
多级反馈队列调度
- 使用多级队列调度算法时,进程被永久地分配到某个队列
- 与多级队列调度算法相反,多级反馈队列调度算法允许进程在队列之间迁移
- 根据不同CPU执行的特点来区分进程,如果进程使用过多的CPU时间,那么它会被移到更低的优先级队列,在较低优先级队列中等待过长的进程会被移到更高优先级队列,阻止饥饿的发生
- 举个栗子,如图,每个进程在进入ready队列后,就被添加到队列0内,队列0内的每个进程都有8ms的时间片,如果一个进程不能在这一时间片内完成,那么它就被移到队列1的尾部,如果队列0为空,队列1头部的进程会得到一个16ms的时间片,如果不能完成那么将被抢占,并添加到队列2,只有当队列0和1为空时,队列2内的进程才可根据FCFS来运行
- 通常,多级反馈队列调度程序可由下列参数来定义:
(1)队列数量
(2)每个队列的调度算法
(3)用以确定何时升级到更高优先级队列的方法
(4)用以确定何时降级到更低优先级队列的方法
(5)用以确定进程在需要服务时将会进入哪个队列的方法(进程刚进入ready队列)
多处理器调度
- 当有多个CPU可用时,CPU调度更加复杂
- 负载分配
- 非对称多处理:只有一个处理器访问系统数据结构
- 对称多处理:每个处理器自我调度
- 处理器亲和性:避免将进程从一个处理器移到另一个处理器,而是试图让一个进程运行在同一个处理器上
实时调度
- 硬实时系统:要求在保证的时间内完成关键任务
- 软实时系统:不保证会调度关键实时进程,只保证这类进程会优先于非关键进程
算法评估
确定性模型
- 分析评估法:使用给定的算法和系统负荷,生成一个公式或数字,以便评估在该负荷下的算法性能
- 确定性模型:使用预先给定的算法和系统工作负载,计算在给定负载下每个算法的性能
- 优点:确定性模型简单快速,给出精确的数值,允许比较算法
- 缺点:确定性模型要求输入精确数字,而且它的答案只适用于这个情况
排队模型
- 两种分布:CPU和I/O的执行分布 进程到达系统的时间分布
- 计算机系统可描述成服务器网络,每个服务器都有一个等待进程队列,CPU是具有ready队列的服务器,I/O系统是具有设备队列的服务器
- 排队网络分析:已知到达率和服务率,可以计算使用率、平均队列长度、平均等待时间等
- Little公式:n= w×λ,n为平均队列长度,w为队列平均等待时间,λ为新进程到达队列的平均达到率
- 优点:比较调度算法
- 缺点:能够处理的算法和分布相当有限
仿真
- 为了获得更为精确的调度算法评价,可以使用仿真,代价昂贵
实现
- 用于评估一个调度算法唯一完全精确方式是:对它进行编程,放在操作系统内,并且观测它如何工作
- 困难:代价高 使用算法的环境改变
以上是关于CPU调度 操作系统笔记整理系列的主要内容,如果未能解决你的问题,请参考以下文章