处理器调度

CPU调度的基本概念

CPU会按一定调度算法从就绪队列中选择一个进程,把CPU的使用权交给被选中的进程,如果没有就绪进程,系统会安排一个系统空闲进程或idle进程

何时调度

发生事件、当前进程暂停运行、硬件机制相应、操作系统处理事件、结束处理、就绪队列有调整、调度算法选择进程、运行该进程

典型事件:

  • 创建、唤醒、退出等进程控制操作
  • 进程等待I/O,I/O中断
  • 时钟中断(时间片用完,计时器到时)
  • 出现abort异常

可总结如下:

  • 进程终止(正常或发生错误)
  • 新进程创建(变为就绪态)
  • 等待进程变成就绪
  • 运行进程变成就绪
  • 运行进程变成阻塞

调度过程(进程切换)

进程切换是让一个进程让出处理器,让另一个进程占用处理器,包括对原来进程各种状态的保存和对新进程各种状态的恢复
主要包括两部分工作:

  • 切换全局页目录以加载一个新的地址空间
  • 切换内核栈和硬件上下文

具体步骤:

  • 保存进程A的上下文环境(程序计数器、程序状态字、其他寄存器)
  • 更新A的PCB(新状态和其他信息)
  • 把进程A移至合适队列(就绪,阻塞,···)
  • 把进程B的状态设置为运行态
  • 从进程B的PCB中恢复上下文(程序计数器、程序状态字、其他寄存器)

上下文切换的开销:

  • 保存和恢复寄存器
  • 切换地址空间(相关指令可能比较昂贵)
  • 缓存和缓冲失效(高速缓存、缓冲区缓存、TLB)

调度算法

算法衡量指标:

  • 吞吐量(Throughput):单位时间完成的进程数目
  • 周转时间(Turnaround Time, TT):进程从提出请求到运行完成的时间
  • 响应时间(Response Time,RT):从提出请求到第一次回应的时间
  • CPU利用率(CPU Utilization):CPU做有效工作的时间比例
  • 等待时间(Waiting Time):进程在就绪队列中等待的时间

相关概念:

  • 进程优先级
  • 抢占式(Preemptive)与不可抢占式(Non-preemptive)
  • I/O密集型(I/O bound)与CPU密集型(CPU bound)
  • 时间片(Time slice, Quantum)

各种调度算法:

| 调度算法 | 英文 | 占用CPU方式 | 吞吐量 | 响应时间 | 开销 | 对进程的影响 | 饥饿问题 |
| ------------- | ------------- | ----- | -------- | ------ | --- | --- | --- | --- |
| 先来先服务 | FCFS | 非抢占 | 不强调 | 当进程执行时间差别很大时,可能很慢 | 最小 | 对短进程不利,对I/O型进程不利 | 无 |
| 时间片轮转 | Round Robin,RR | 抢占(时间片用完) | 若时间片小,吞吐量会很低 | 为短进程提供好的响应时间 | 最小 | 公平对待 | 无 |
| 短作业优先 | SJF | 非抢占 | 高 | 为短进程提供好的响应时间 | 可能较大 | 对长进程不利 | 可能 |
| 最短剩余时间优先 | SRTN | 抢占(到达时) | 高 | 提供好的响应时间 | 可能较大 | 对长进程不利 | 可能 |
| 最高响应比优先 | HRRN | 非抢占 | 高 | 提供好的响应时间 | 可能较大 | 很好的平衡 | 无 |
| 多级反馈队列 | Multilevel Feedback | 抢占(时间片用完) | 不强调 | 不强调 | 可能较大 | 对I/O型进程有利 | 可能 |

多处理器调度:

  • 需要决定在哪一个CPU上执行
  • 需要考虑进程在多个CPU之间迁移的开销(高速缓存失效,TLB失效),尽可能使CPU总在同一个进程上执行
  • 要考虑负载均衡问题

具体实例

多级反馈队列调度算法(BSD 5.3)

  • 设置多个就绪队列,第一级队列优先级最高
  • 给不同就绪队列中的进程分配不同长度的时间片,随着优先级的降低逐渐增大
  • 当第一级队列为空时,在第二级队列调度,以此类推
  • 各级队列按照时间片轮转方式进行调度
  • 当一个新创建进程就绪后,进入第一级队列
  • 如果进程因为用完时间片而放弃CPU,则进入下一级就绪队列
  • 如果进程因为阻塞而放弃CPU,则进入相应的等待队列,等待事件发生后,该进程回到原来一级就绪队列末尾(或队首)

基于优先级的抢占式多任务调度(Windows)

调度过程:

  • 调度单位是线程
  • 采用基于优先级的抢占式调度,结合时间配额的调整
  • 就绪线程按优先级进入相应队列
  • 系统总是选择优先级最高的就绪线程运行
  • 同一优先级的各线程按时间片轮转进行调度
  • 多CPU系统中允许多个线程并行运行

引发线程调度的条件:

  • 进程终止(正常或发生错误)
  • 新进程创建(变为就绪态)
  • 等待进程变成就绪
  • 运行进程变成就绪
  • 运行进程变成阻塞
  • 一个线程的优先级改变了
  • 一个线程改变了它的亲和处理机集合

32个线程优先级:

  • 实时优先级(16-31)不改变其优先级
  • 可变优先级(1-15)其优先级可在一定范围内升高或降低
  • 系统线程(0)用于对系统中空闲物理页面清零(零页线程)

调度策略:

  • 主动切换:转到阻塞态
  • 抢占:回到相应优先级的就绪队列队首,如果被抢占线程处于实时优先级,则重置为完整的时间配额,如果是可变优先级,则时间配额不变(得到剩余时间配额)
  • 时间配额用完:如果线程的优先级没有降低,则回到原来就绪队列末尾(可能继续运行),如果优先级降低了,则选择更高优先级的线程运行。

线程优先级的提升:

  • I/O操作完成
  • 信号量或事件等待结束
  • 前台进程中的线程完成一个等待操作
  • 由于窗口活动而唤醒窗口线程
  • 线程处于就绪态超过了一定时间还没有运行(饥饿现象
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容