当前位置: 首页 > news >正文

【操作系统核心考点】进程调度算法全面总结:高频题型与易错点解析

进程调度是操作系统中最核心的概念之一,也是面试和考试中的高频考点。本文系统总结了进程调度的各类算法、状态转换和典型题型,帮助读者快速掌握这一重要知识点。

一、进程调度算法全景图

1.1 常见调度算法对比表

调度算法英文全称优点缺点是否会导致饥饿适用场景
先来先服务FCFS(First-Come-First-Served)实现简单、公平平均等待时间长, convoy效应明显批处理系统
短作业优先SJF(Shortest Job First)平均等待时间最短可能导致长作业饥饿,需要预知运行时间批处理系统
时间片轮转RR(Round Robin)公平性好,响应速度快上下文切换开销大分时系统
优先级调度Priority Scheduling可处理紧急任务,灵活性强可能导致低优先级进程饥饿实时系统
高响应比优先HRRN(Highest Response Ratio Next)兼顾长短作业,避免饥饿需要计算响应比,实现稍复杂批处理系统

1.2 算法选择策略

选择调度算法的关键因素:

  • CPU利用率:保持CPU尽可能忙碌
  • 吞吐量:单位时间内完成的进程数量
  • 周转时间:从提交到完成的时间
  • 等待时间:进程在就绪队列中等待的总时间
  • 响应时间:从提交请求到首次响应的时间

二、 饥饿与优先级反转详解

2.1 饥饿(Starvation)现象

定义:某个或某类进程长期得不到调度执行的情况。

易导致饥饿的算法:

// 伪代码示例:静态优先级调度可能导致饥饿
while(TRUE) {process = get_highest_priority_process(); // 总是选择优先级最高的进程if (process.priority < LOW_PRIORITY_THRESHOLD) {// 低优先级进程可能永远得不到执行 → 饥饿}
}

解决方法:

  • 老化技术(Aging):逐渐增加等待时间长的进程的优先级
  • 动态优先级调整:根据等待时间和运行情况调整优先级

2.2 优先级反转(Priority Inversion)

典型案例

  1. 低优先级进程L获得共享资源锁
  2. 高优先级进程H就绪,抢占CPU但需要同一把锁
  3. H被阻塞,等待L释放锁
  4. 中优先级进程M就绪,抢占L的CPU时间
  5. 结果:H(最高优先级)被迫等待M(中优先级)和L(低优先级)

解决方案:

  • 优先级继承协议(Priority Inheritance):当高优先级进程等待低优先级进程持有的资源时,低优先级进程临时继承高优先级
  • 优先级天花板协议(Priority Ceiling):为每个资源设置优先级天花板

三、 进程状态转换深度解析

3.1 五状态模型转换图

     创建↓就绪态 ←---→ 运行态 ←---→ 阻塞态↑         ↓          ↑└--- 终止 ←---------┘

3.2 状态转换触发条件

转换类型触发条件典型场景
就绪 → 运行进程被调度程序选中dispatch()调用
运行 → 就绪时间片用完、被高优先级抢占时钟中断、高优先级进程就绪
运行 → 阻塞请求I/O、等待资源read()系统调用、wait()操作
阻塞 → 就绪I/O完成、资源可用磁盘读写完成、信号量释放

3.3 易错点提醒

误区1:进程被唤醒后直接进入运行态
正解:进程被唤醒后进入就绪态,需要等待调度才能运行

误区2:进程在临界区内不能被调度
正解:进程在临界区内可以被调度(如时间片到),但需要正确处理同步问题

误区3:所有系统调用返回时都会触发调度
正解:只有可能引起进程状态变化的系统调用返回时才会触发调度

四、 实时调度算法精讲

4.1 硬时限 vs 软时限

特性硬时限(Hard Deadline)软时限(Soft Deadline)
重要性必须满足,否则导致系统失败最好满足,但不导致系统失败
典型应用航空航天控制、医疗设备多媒体播放、网络传输
容错性零容错一定程度的容错
调度策略采用可抢占的优先级调度可采用多种调度策略

💡 重要提示:硬时限和软时限是需求特性,不是由硬件或软件实现方式决定的。

4.2 常见实时调度算法

最早截止时间优先(EDF)

  • 动态优先级算法
  • 选择截止时间最早的进程执行
  • 适用于可抢占调度

速率单调调度(RMS)

  • 静态优先级算法
  • 周期越短,优先级越高
  • 需要满足可调度性条件

五、高频题型解题技巧

5.1 响应比计算题(HRRN算法)

公式
[
\text{响应比} = \frac{\text{等待时间} + \text{运行时间}}{\text{运行时间}}
]

例题解析

三个作业J1(8:00到达,运行2h)、J2(8:30到达,运行1h)、J3(9:00到达,运行0.5h),在10:00开始调度。

计算过程

# 计算等待时间
wait_j1 = 10:00 - 8:00 = 2h
wait_j2 = 10:00 - 8:30 = 1.5h  
wait_j3 = 10:00 - 9:00 = 1h# 计算响应比
response_ratio_j1 = (2 + 2) / 2 = 2
response_ratio_j2 = (1.5 + 1) / 1 = 2.5
response_ratio_j3 = (1 + 0.5) / 0.5 = 3# 调度顺序:响应比高的优先 → J3 > J2 > J1

5.2 抢占式调度时序题

解题步骤

  1. 画出时间线,标注各进程到达时间
  2. 根据优先级判断抢占时机
  3. 注意非抢占式与抢占式的区别
  4. 计算周转时间和等待时间

六、考试复习建议

  1. 理解优于记忆:掌握每个算法的设计思想和适用场景
  2. 多做例题:特别是时序分析题和响应比计算题
  3. 注意易错点:重点复习状态转换条件和调度时机
  4. 结合实际:思考算法在真实系统中的应用和优化

七、 典型试题精选

7.1 选择题

  1. 下列哪种调度算法不可能导致饥饿现象?(A)
    A. 时间片轮转
    B. 静态优先数调度
    C. 非抢占式短作业优先
    D. 抢占式短作业优先

  2. 为了照顾紧急型作业,应采用(D)
    A. 先来先服务调度算法
    B. 短作业优先调度算法
    C. 时间片轮转调度算法
    D. 优先权调度算法

7.2 计算题

某系统采用可抢占优先级调度,优先数大者优先级高。已知:

  • 进程A:到达时间0,优先数5,运行时间10s
  • 进程B:到达时间3,优先数7,运行时间5s
  • 进程C:到达时间5,优先数8,运行时间3s

求CPU服务顺序和每个进程的完成时间。

答案:A(0-3) → B(3-5) → C(5-8) → B(8-11) → A(11-18)


文章转载自:

http://rcXO4aXr.tscsd.cn
http://sBj09XPi.tscsd.cn
http://fR4vpH5q.tscsd.cn
http://1QMlzXwU.tscsd.cn
http://LoqQ770l.tscsd.cn
http://8XXDOxbH.tscsd.cn
http://5eRL2mW3.tscsd.cn
http://GjDUwTsY.tscsd.cn
http://4FvbehpW.tscsd.cn
http://KHta0ngm.tscsd.cn
http://8TC2T77j.tscsd.cn
http://aVMSQLWQ.tscsd.cn
http://9Mp8cPGN.tscsd.cn
http://xQ3ewLJx.tscsd.cn
http://LQSdZHPK.tscsd.cn
http://M8xRdAQy.tscsd.cn
http://J97E6dRp.tscsd.cn
http://z97TjsEL.tscsd.cn
http://DV6pP1Yt.tscsd.cn
http://tQ268mNb.tscsd.cn
http://e5tqHce7.tscsd.cn
http://rby0pRUb.tscsd.cn
http://jxQztF1Q.tscsd.cn
http://Vgvl5rxM.tscsd.cn
http://ho2pDlwm.tscsd.cn
http://gJIRJEC2.tscsd.cn
http://voMV3Tiu.tscsd.cn
http://1NGi22gd.tscsd.cn
http://9VARXFbN.tscsd.cn
http://yNkTH912.tscsd.cn
http://www.dtcms.com/a/381293.html

相关文章:

  • ethercat在线调试工具
  • python base core partment-day07-异常、模块、包(对零基础小白友好)
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘vaex’问题
  • Acrobat JavaScript 代码中的颜色
  • TCGA单癌肿按单基因高低分组的转录组差异热图分析作图教程
  • SSRF:CVE-2021-40438
  • 传统项目管理与敏捷的核心差异
  • count down 98 days
  • 算法题 Day6---String类(3)
  • 知识模型中优化和模拟决策内容有哪些
  • PRINCE2与PMP项目管理体系对比
  • LINUX中USB驱动架构—设备驱动
  • 数据驱动工业智能决策:从痛点破局到全局优化的技术实践与方法论
  • 射频EVM
  • 21.2 Alpaca指令微调实战:Dolly-15K数据增强让LLaMA-2效果飙升82%
  • 每周资讯 | B站新游《三国:百将牌》首曝;2025年移动游戏市场预计达到1030亿美元
  • VMware网络配置
  • fastapi微服务
  • DNS解析:递归查询与迭代查询详解
  • 中级统计师-统计法规-第五章 统计机构与统计人员
  • API 资产治理:ETag/Cache-Control/分页/排序/投影的“契约基线”
  • V少JS基础班之第八弹:this
  • Class52 双向循环神经网络
  • STM32HAL库_cubeMX
  • Class54 编码器-解码器
  • c++多设备并发运行且互相操作 上位机软件结构
  • PCDN双跑量系统
  • Altium Designer使用精通教程 第三章(原理图绘制及编译检查)
  • Docker技术解析
  • MySQL数据库(一)—— 数据库基础与MySQL安装管理指南