《Tsinghua os mooc》第15~16讲 处理机调度
第十五讲 处理机调度
进程调度时机
- 非抢占系统中,当前进程主动放弃CPU时发生调度,分为两种情况:
- 进程从运行状态切换到等待状态
- 进程被终结了
- 可抢占系统中,中断请求被服务例程响应完成时发生调度,也分为两种情况:
- 进程时间片用完
- 有更高优先级的进程从等待切换到就绪
- 非抢占系统中,当前进程主动放弃CPU时发生调度,分为两种情况:
比较调度算法的准则
- CPU使用率:CPU处于忙状态的时间百分比
- 吞吐量:单位时间内完成的进程数量
- 周转时间:进程从初始化到结束(包括等待)的总时间
- 等待时间:进程在就绪队列中的总时间
- 响应时间:从提交请求到产生响应所花费的总时间
处理机调度策略的吞吐量目标
- 增加吞吐量:减少开销(操作系统开销,上下文切换)、系统资源的高效利用(CPU,I/O设备)
- 减少等待时间:减少每个进程的等待时间
- 操作系统需要保证吞吐量不受用户交互的影响:操作系统必须不时进行调度,即使存在许多交互任务
先来先服务算法(First Come First Served, FCFS)
- 策略:依据进程进入就绪状态的先后顺序排列,进程进入等待或结束状态时,就绪队列中的下一个进程占用CPU。
- 优点:简单
- 缺点:
- 平均等待时间波动较大,短进程可能排在长进程后面
- I/O资源和CPU资源的利用率较低,CPU密集型进程会导致I/O设备闲置时,I/O密集型进程也等待
短进程优先算法(SPN)
- 策略:选择就绪队列中执行时间最短进程占用CPU进入运行状态,就绪队列按预期的执行时间来排序
- 优点:短进程优先算法具有最优平均周转时间
- 缺点:
- 可能导致饥饿,连续的短进程流会使长进程无法获得CPU资源
- 需要预知未来,方法有询问用户、用历史的执行时间来预估未来的执行时间
最高响应比优先算法(HRRN)
- 策略:选择就绪队列中响应比R值最高的进程,R = (w + s)/s,w是等待时间,s是执行时间
- 优点:在短进程优先算法的基础上改进,不可抢占,关注进程的等待时间,防止无限期推迟
时间片轮转算法(RR, Round-Robin)
- 时间片:分配处理机资源的基本时间单元
- 策略:每隔(n – 1)个时间片进程执行一个时间片q,时间片结束时,按FCFS算法切换到下一个就绪进程
- RR算法开销:额外的上下文切换(时钟中断时强行把正在执行的进程结束掉,切换到另一个进程)
- 时间片太大:等待时间过长,极限情况退化成FCFS
- 时间片太小:反应迅速,但产生大量上下文切换,大量上下文切换开销影响到系统吞吐量
- 时间片长度选择目标:选择一个合适的时间片长度,经验规则是维持上下文切换开销处于1%以内,时间片经验值为10毫秒
- 优点:交互性较好
- 缺点:等待时间较长
多级队列调度算法(MQ)
- 策略:多种算法的集成。就绪队列被划分成多个独立的子队列,每个队列拥有自己的调度策略。比如将队列分为前台(交互)、后台(批处理),采取策略分别是前台–RR、后台–FCFS。
- 队列间的调度
- 固定优先级:先处理前台,然后处理后台,可能导致饥饿
- 时间片轮转:每个队列都得到一个确定的能够调度其进程的CPU总时间,如80%CPU时间用于前台,20%CPU时间用于后台
多级反馈队列算法(MLFQ)
- 策略:进程可在不同队列间移动的多级队列算法
- 特征
- 时间片大小随优先级级别增加而增加
- 如进程在当前的时间片没有完成,则降到下一个优先级
- CPU密集型进程的优先级下降很快
- I/O密集型进程停留在高优先级
公平共享调度(FSS, Fair Share Scheduling)
- 策略:FSS控制用户对系统资源的访问
- 一些用户组比其他用户组更重要
- 保证不重要的组无法垄断资源
- 未使用的资源按比例分配
- 没有达到资源使用率目标的组获得更高的优先级
优先级反置
- 现象描述:操作系统中出现高优先级进程长时间等待低优先级进程所占用资源的现象
- 出现场景:基于优先级的可抢占调度算法存在优先级反置
- 解决方案1:优先级继承。占用资源的低优先级进程继承申请资源的高优先级进程的优先级。注意,只在占有资源的低优先级进程被阻塞时,才提高占有资源进程的优先级。
- 解决方案2:优先级天花板协议(priority ceiling protocol)。占用资源进程的优先级和所有可能申请该资源的进程的最高优先级相同。不管是否发生等待,都提升占用资源进程的优先级。优先级高于系统中所有被锁定的资源的优先级上限,任务执行临界区时就不会被阻塞。
第十六讲 实验六 调度器
lab6重新设计调度框架
- 初始化:实现调度算法的调度类 -> 绑定调度类 -> 设定调度点
- 调度过程:触发调度事件 -> 调整调度参数、调用调度算法 -> 选择新进程(若没有就绪进程,则运行idle线程),进程切换
调度点:触发做调度相关的工作
- proc.c:do_exit:用户线程执行结束,主动放弃CPU
- proc.c:do_wait:用户线程等待子进程结束,主动放弃CPU
- proc.c:init_main:1.Initproc内核线程等待所有用户进程结束;2.所有用户进程结束后,回收系统资源
- proc.c::cpu_idle:idleproc内核线程等待处于就绪态的进程或线程,如果有选取一个并切换进程
- sync.h::lock:进程如果无法得到锁,则主动放弃CPU
- Trap.c::trap:修改当前进程时间片,若时间片用完,则设置need_resched为1,让当前进程放弃CPU(与调度算法相关)
问题:调度算法如何知道进程的事件使用情况?
答案:让调度算法能够感知到时钟中断的产生。进入/离开就绪队列:抽象数据结构,可以不是队列。可根据调度算法的需求采用各种具体数据结构。
调度算法支撑框架
- 触发:trigger scheduling -> proc_tick
- 入队:enqueue
- 选取:pick up -> proc_next
- 出队:dequeue
- 切换:process switch -> switch_to
struct sched_class {
const char *name;
void (*init)(struct run_queue *rq);
void (*enqueue)(struct run_queue *rq, struct proc_struct *proc);
void (*dequeue)(struct run_queue *rq, struct proc_struct *proc);
struct proc_struct *(*pick_next)(struct run_queue *rq);
void (*proc_tick)(struct run_queue *rq, struct proc_struct *proc);
};
步进值pass与优先级priority的关系:pass=BIG_VALUE/lab6_priority
如何避免stride溢出?
- STRIDE_MAX – STRIDE_MIN <=PASS_MAX
- stride, pass 是无符号整数
- 比较时用有符号整数表示(Proc.A.stride –Proc.B.stride)
《Tsinghua os mooc》第15~16讲 处理机调度的更多相关文章
- 《Tsinghua os mooc》第1~4讲 启动、中断、异常和系统调用
资源 OS2018Spring课程资料首页 uCore OS在线实验指导书 ucore实验基准源代码 MOOC OS习题集 OS课堂练习 Piazza问答平台 暂时无法注册 疑问 为什么用户态和内核态 ...
- 《Tsinghua os mooc》第17~20讲 同步互斥、信号量、管程、死锁
第十七讲 同步互斥 进程并发执行 好处1:共享资源.比如:多个用户使用同一台计算机. 好处2:加速.I/O操作和CPU计算可以重叠(并行). 好处3:模块化. 将大程序分解成小程序.以编译为例,gcc ...
- 《Tsinghua os mooc》第11~14讲 进程和线程
第十一讲 进程和线程 进程 vs 程序 程序 = 文件 (静态的可执行文件) 进程 = 执行中的程序 = 程序 + 执行状态 进程的组成包括程序.数据和进程控制块 同一个程序的多次执行过程对应为不同进 ...
- 《Tsinghua os mooc》第21~22讲 文件系统
第二十一讲 文件系统 文件系统是操作系统中管理持久性数据的子系统,提供数据存储和访问功能. 组织.检索.读写访问数据 大多数计算机系统都有文件系统 Google 也是一个文件系统 文件是具有符号名,由 ...
- Python Cookbook(第3版)中文版:15.16 不确定编码格式的C字符串
15.16 不确定编码格式的C字符串¶ 问题¶ 你要在C和Python直接来回转换字符串,但是C中的编码格式并不确定. 例如,可能C中的数据期望是UTF-8,但是并没有强制它必须是. 你想编写代码来以 ...
- 第16讲- UI组件之TextView
第16讲 UI组件之TextView Android系统所有UI类都是建立在View和ViewGroup这两类的基础上的. 所有View的子类称为widget:所有ViewGroup的子类称为Layo ...
- OS中处理机调度模型和调度算法
OS中处理机调度模型和调度算法 调度层次 1.1. 高级调度(长程调度,作业调度) 功能:依据某种算法.把在外存队列上处于后备队列的那些作业调入内存.以作业为操做对象. 作业:比程序更为广泛的概念,不 ...
- 剑指offer19:按照从外向里以顺时针的顺序依次打印出每一个数字,4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.
1 题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印 ...
- 计算机操作系统处理机调度读后感—–关于进程概念的剖析。从RING3到RING0(32位操作系统)
计算机操作系统处理机调度读后感: 笔者在看操作系统西安电子科技大学那本书的时候,初次感觉本科教的不会太难,所以没有认真的看,但是随后这本书讲的刷新了我的世界观.这本书居然是ring0级别的,这时不禁吐 ...
随机推荐
- luogu 1369
给出平面上的n个点,请找出一个边与坐标轴平行的矩形,使得它的边界上有尽量多的点 模拟退火题解$n^2$ 处理每行的前缀和与每列的前缀和退火50次即可 #include <bits/stdc++. ...
- LibreOJ #116. 有源汇有上下界最大流
二次联通门 : LibreOJ #116. 有源汇有上下界最大流 /* LibreOJ #116. 有源汇有上下界最大流 板子题 我也就会写写板子题了.. 写个板子第一个点还死活过不去... 只能打个 ...
- [转] C++ STL中map.erase(it++)用法原理解析
总结一下map::erase的正确用法. 首先看一下在循环中使用vector::erase时我习惯的用法: for(vector<int>::iterator it = vecInt.be ...
- Django系列(一):前期准备
1.web应用 Web应用程序是一种可以通过web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件.应用程序有两种模式C/S.B/S.C/S是客户端 ...
- LOJ3102. 「JSOI2019」神经网络 [DP,容斥,生成函数]
传送门 思路 大部分是感性理解,不保证完全正确. 不能算是神仙题,但我还是不会qwq 这题显然就是求:把每一棵树分成若干条链,然后把链拼成一个环,使得相邻的链不来自同一棵树,的方案数.(我才不告诉你们 ...
- Tomcat的默认端口问题
0x00 起因 今天看到一个226团队,进群的时候有一个问题问的就是:Tomcat的默认端口是多少? 当时我只想到了8080,等过了不久,有位管理员回复了我是三个默认端口....,马上去翻了下资料,才 ...
- linux系统普通用户设置密码
linux系统中如何给一个普通用户grindnt设置密码 一.新密码符合规则,用以下方式修改: #root用户直接更改gridnt密码,不需要输入旧密码 [root@subsname home]# p ...
- chrome中的base64和nodejs中的base64
谷歌浏览器的base64 window["atob"](_0x1c0cdf) nodejs对应的是 Buffer.from(_0x1c0cdf,"base64" ...
- IOS开发环境
当我们需要帮一些人学习IOS的时候,可以翻阅下这篇文章,我有个同学对IOS开发不太了解,用语言描述该怎么做的时候显得不够具体,或者全部需要我帮忙操作,又会占用我们的时间,如果每个人都这么要求的话,那么 ...
- 2018-2019-2 网络对抗技术 20165231 Exp 8 Web基础
实验内容 (1).Web前端HTML(0.5分) 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML. (2).Web前端javascipt(0 ...