【操作系统学习】(一)进程调度
来源:互联网 发布:编程语言c 怎么用 编辑:程序博客网 时间:2024/06/07 23:44
进程调度的概念
进程切换:CPU资源的当前占用者的切换
- 保存当前使用者的执行上下文
- 回复下一个进程的执行上下文
处理机调度策略
- 从就绪队列中挑选下一个占用CPU运行的进程
- 从多个可用CPU中挑选就绪进程可使用的CPU资源
调度程序:挑选就绪进程的内核函数
调度策略
- 依据什么原则挑选进程和线程?
调度时机
- 什么时候进行调度?
调度时机
进程的状态
- 创建
- 就绪
- 等待
- 运行
- 退出
内核运行调度程序的条件
- 进程从运行状态切换到等待状态
- 进程被终结了
对于不同的系统来说,这种条件都是不同的
抢占时系统
- 中断请求被服务历程响应完成时
- 当前进程被抢占
- 进程时间片用完
- 进程从等待切换到就绪
调度策略
进程在执行时,一般都处于在两种状态下进行转换:
- CPU计算
- I/O操作
每次调度决定在下一个CPU计算的时候将哪个工作交给CPU
调度的策略一般取决于下面的几个进程的指标
CPU使用率
- CPU处于忙状态的时间百分比
吞吐量
- 单位时间内完成的进程数量
周转时间
- 进程从初始化到结束(包括等待)的总时间
等待时间
- 进程在就绪队列中的总时间
响应时间
- 从提交请求到发生响应所花费的总时间
对于不同的需求,就需要不同的调度算法,因为不同的需求对不同的指标的要求不同
处理机调度策略的目标
1、响应时间目标
- 减少响应时间
- 减少平均响应时间的波动
总结
所以需要使用低延迟的调度去改善用户的交互体验
2、吞吐量目标
增加吞吐量
- 减少开销(操作系统开销,上下文切换)
- 系统资源的高效利用(CPU,I/O设备)
减少等待时间
减少每个进程的等待时间
总结
操作系统需要保证吞吐量不受用户交互的影响
3、公平性目标
公平性定义
- 保证每个进程占用相同的CPU时间
- 保证每个进程的等待时间相同
公平一般会增加平均响应时间
调度算法
先来先服务算法(FCFS : First Come First Served)
描述
按照进程进入就绪状态的先后顺序进行排列
- 进程进入等待或结束状态时,就绪队列的下一个进程就占用CPU
优点
- 简单
缺点
- 平均等待时间波动较大
- 短进程可能排在长进程后面
- I/O资源和CPU资源利用率较低
- CPU密集型进程会导致I/O设备闲置时,I/O密集型进程也会等待
改进
短进程优先算法
短进程优先算法(SPN,SJF,SRT)
描述
- 选择就绪队列中执行时间最短进程占用CPU进入运行状态
- 就绪队列按照预期的执行时间进行排序
- 短剩余时间优先算法(SRT)
- 可作为SPN算法的改进算法
优点
具有最优的平均周转时间
缺点
- 可能会导致饥饿
- 连续的短继承会使长进程无法获得CPU时间
- 需要预知未来
- 如何预估?
- 简单的解决方法:询问用户
- 用户欺骗就杀死相应进程
- 用户不知道就还是只能导致饥饿
执行时间预估
用历史的执行时间去预估未来的执行时间
最高响应比优先算法(HRRN : Highest Response Ratio Next)
描述
选择就绪队列中响应比R最高的进程:(w:等待时间 s:执行时间)
R=(w+s)/s
优点和其改进
- 在短进程优先算法的基础上的改进
- 不可抢占
- 关注进程的等待时间
- 防止无限期的推迟导致的饥饿
时间片轮转算法(RR : Round Robin)
时间片
- 处理机分配资源的基本时间单位
描述
- 时间片结束时,按先来先服务算法(FCFS)切换到下一个就绪进程
- 每隔 n-1(n个进程的队列)个时间片进程执行一个时间片的时间
RB算法的优缺点和解决方案
- 额外的上下文切换导致的开销
- 时间片太大
- 等待时间过长
- 极限情况退化成先来先服务算法(FCFS)
- 等待时间过小
- 反应迅速,但上下文切换过于频繁
- 大量的上下文切换影响到系统吞吐量
- 时间片选择的目标
- 选择一个何时的时间片长度
- 经验规则:维持上下文开销处于1%以内
多级队列算法(MQ : Multilevel Queue)
描述
- 就绪队列被划分成多个独立的子队列
- 如:前台(交互)、后台(批处理)
- 每个队列拥有自己的调度策略
- 如:前台(RR)、后台(FCFS)
- 队列间的调度
- 固定优先级
- 先处理前台,后处理后台
- 可能导致饥饿
- 时间片轮转
- 每个队列都得到一个确定的能够调度其进程的CPU总时间
- 如:80%CPU时间用于前台调度,20%CPU时间用于后台调度
- 固定优先级
多级反馈队列算法(MLFQ : Multilevel Feedback Queue)
描述
进程可在不同队列之间移动的多级队列算法
- 时间片大小随着优先级别的增加而增加
- 如进程在当前的时间片没有完成,就降一个优先级
特征
- CPU密集型进程的优先级下降很快
- I/O密集型进程停留在高优先级
公平共享调度算法(FSS : Fair Share Scheduling)
描述
- FSS控制用户对系统资源的访问
- 一些用户组比其他用户组更重要
- 保证不重要的组无法垄断资源
- 未使用的资源按比例分配
- 没有达到资源使用率目标的组获得更高的优先级
总结
- 先来先服务算法(FCFS : First Come First Served)
- 不公平,平均等待时间较差
- 短进程优先算法(SPN,SJF,SRT)
- 不公平,平均周转时间最小
- 需要精确预测等待进程的计算时间
- 可能导致饥饿
- 最高响应比算法(HRRN : Highest Response Ratio Next)
- 基于SPN调度
- 不可抢占
- 时间片轮转算法(RR : Round Robin)
- 公平,但平均等待时间较差(但是具备很好的交互性)
- 多级反馈队列算法(MLFQ : Multilevel Feedback Queue)
- 多种算法的集成
- 公平共享调度(FSS : Fair Share Scheduling)
- 公平作为第一指标
阅读全文
0 0
- 【操作系统学习】(一)进程调度
- 操作系统学习(一) 进程
- 《现代操作系统》读书笔记之——进程调度(一)
- 《现代操作系统》读书笔记之——进程调度(一)
- 【操作系统】进程调度(低级调度)
- 操作系统-进程调度(CPU调度算法)
- 操作系统学习笔记(6) 进程调度算法
- 操作系统学习笔记(28)--初始化进程调度
- 进程调度(一)
- 操作系统 进程调度之轮换调度(RR调度)
- 操作系统学习(一)进程管理
- 操作系统算法 之 进程调度(FCFS)
- 操作系统概论(4)--进程调度
- 操作系统之进程调度
- 操作系统进程调度算法
- 【操作系统】进程调度算法
- 操作系统--进程调度算法
- 【操作系统】进程调度策略
- binder解析
- 【Scikit-Learn 中文文档】模型选择:选择估计量及其参数
- ros环境下华硕xtion深度图和彩色图的配准问题
- PAT1013 并查集
- 设置文件(夹)用Sublime 右键打开
- 【操作系统学习】(一)进程调度
- BZOJ 2243: [SDOI2011]染色
- STM32串口一键下载电路
- ubuntu 16.04+Caffe:build_release/lib/libcaffe.so:对‘google::protobuf:
- 剑指offer第34题(丑数)
- Servlet的实现类-GenericServlet
- 统计一个数字在排序数组中出现的次数
- 剑指offer---对称的二叉树
- Effective JavaScript.pdf 英文原版 免费下载