操作系统期末复习(24)

题目13:采用资源剥夺法可解除死锁,还可以采用( )方法解除死锁

正确答案:D(撤消进程)​

深度解析:死锁解除原理与策略

死锁(Deadlock)是指两个或多个进程因争夺资源而陷入的永久阻塞状态。解除死锁的核心目标是打破死锁四个必要条件​(互斥、请求与保持、不可抢占、循环等待)。资源剥夺法和进程撤销法是最直接有效的解除手段。

1. 死锁解除方法对比
  • 资源剥夺法(Resource Preemption)​​:

    • 操作机制​:强制收回部分已分配资源(如从进程A剥夺打印机),分配给其他进程。
    • 实现难点​:
      • 需处理资源剥夺后的恢复问题(如进程状态回滚)。
      • 仅适用于可保存/恢复的资源(如内存、文件),不适用于不可逆资源(如打印机输出)。
    • 案例​:在实时系统中,高优先级进程可抢占低优先级进程的内存资源。
  • 进程撤销法(Process Termination)​​:

    • 操作机制​:选择环路中的一个或多个进程强制终止,释放其所有资源。
    • 选择策略​:
      • 最小代价原则​:终止对系统影响最小的进程(如计算进度少的进程)。
      • 环路破坏原则​:终止使环路断开的关键进程。
    • 数据影响​:被终止进程可能需重新执行(需检查点机制支持)。
2. 选项排除逻辑
选项分析错误原因
A. 执行并行操作并行化不改变资源依赖无法解决循环等待
B. 修改信号量信号量用于同步互斥信号量错误可能引发死锁但无法解除
C. 拒绝分配新资源死锁避免策略(如银行家算法)属于预防而非解除措施
D. 撤消进程直接释放环路资源✓ 标准解除方法
3. 工程实践与算法实现
  • 死锁检测算法​:
    1. 构建资源分配图​(Resource-Allocation Graph)
    2. 检测图中是否存在环路(如深度优先搜索)
    3. 使用矩阵算法检测不安全状态:
      // 死锁检测伪代码  
      while (exists process P_i with all requests satisfiable) {  
          allocate resources to P_i;  
          mark P_i as finished;  
          reclaim resources;  
      }  
      if (all processes finished) no_deadlock;  
      else deadlock;  
  • Linux实践​:OOM Killer(Out-of-Memory终结者)在内存耗尽时自动选择进程终止,释放内存资源。
4. 理论依据与公式推导

死锁解除的数学基础是资源分配图模型​:

  • 死锁存在定理​:当且仅当资源分配图含不可化简的环路。
  • 解除有效性​:
    • 终止一个进程 → 消除其所有边 → 破坏环路。
    • 剥夺一个资源 → 消除资源请求边 → 破坏循环等待。

题目14:降低进程优先级的最合理时机

正确答案:A(进程的时间片用完)​

深度解析:优先级调度的动态策略

操作系统的优先级调度需平衡公平性效率。降低优先级是针对CPU密集型进程的关键优化手段,旨在防止其独占CPU资源。

1. 多级反馈队列(MLFQ)调度算法原理

该算法根据进程行为动态调整优先级:

  • I/O密集型进程​:短期内频繁放弃CPU(如等待键盘输入),响应速度关键,需高优先级。
  • CPU密集型进程​:长时间占用CPU(如科学计算),需降低优先级防止饥饿现象。
事件优先级调整调度目标
时间片用完↓ 优先级(移入低优先级队列)避免CPU垄断
I/O完成↑ 优先级(移回高优先级队列)提升响应速度
新进程创建置于最高优先级队列短作业优先
2. 选项技术分析
选项状态变化优先级处理合理性
A. 时间片用完运行 → 就绪降级队列位置✓ CPU密集型确认
B. 就绪 → 运行就绪 → 运行无调整必要✗ 刚开始运行
C. I/O完成入队阻塞 → 就绪应提升优先级✗ 反向操作
D. 长期就绪就绪态持续应提升优先级(防饿死)✗ 与目标矛盾
3. 优先级反转的深度防护
  • 经典问题​:低优先级进程持锁时,中优先级进程可能阻塞高优先级进程(火星探路者事故根源)。
  • 解决方案​:
    • 优先级继承协议​(Priority Inheritance):低优先级进程临时继承高优先级。
    • 优先级天花板协议​(Priority Ceiling):锁分配时自动提升进程优先级。
4. 内核实现参考(Linux CFS)​

Linux的完全公平调度器​(Completely Fair Scheduler)通过虚拟时间(vruntime)隐式实现优先级:

// 时间片用完时的优先级衰减  
if (se->vruntime == prev->vruntime) {  
    se->vruntime += NICE_0_LOAD;  // 等效降低调度优先级  
}  

效果​:占用CPU越久的进程vruntime越大,被调度概率越低。


题目15:作业调度队列来源

正确答案:F(后备)​

深度解析:作业调度层级机制

作业调度(长程调度)管理磁盘到内存的进程载入,决定了系统的多道程序度(Degree of Multiprogramming)。

1. 三级调度模型详解
调度类型执行频率队列来源决策目标
高级调度(作业调度)​分钟级后备队列(磁盘)控制内存进程数量
中级调度(交换调度)​秒级挂起队列(磁盘)平衡内存负载
低级调度(进程调度)​毫秒级就绪队列(内存)CPU分配
2. 作业状态变迁全路径

3. 关键队列功能对比
队列类型物理位置存储内容调度器关联
后备队列磁盘交换区未调入的作业作业调度器
就绪队列内存可运行进程进程调度器
阻塞队列内存等待I/O的进程事件驱动
4. 系统容量规划公式

最优多道程序度 N 满足:

N=平均进程内存需求内存总量−OS常驻内存​

当作业调度选择新作业时,需确保:

∑新进程内存需求≤当前空闲内存


题目16:非调度触发事件

正确答案:B(有新进程进入就绪队列)​

深度解析:调度触发机制

进程调度由事件驱动,仅在特定时机由内核执行。新进程进入就绪队列不触发立即调度是设计上的重要优化。

1. 调度触发事件分类
事件类型触发条件调度行为
强制放弃CPU时间片用尽立即调度新进程
主动放弃CPUWait操作请求I/O主动切换至就绪进程
异常事件进程错误终止清理资源并调度
中断事件I/O设备就绪唤醒阻塞进程并可能调度
非触发事件新进程创建仅加入队列,不中断当前运行
2. 内核执行路径分析
  • 新进程创建(fork())​​:

    1. 分配PCB和内存空间
    2. 初始化上下文
    3. 加入就绪队列尾部
      关键点​:不调用schedule(),直接返回到用户态继续执行父进程。
  • 时间片耗尽(定时器中断)​​:

    1. 中断处理程序调用scheduler_tick()
    2. 检查当前进程时间片
    3. 若时间片为0,置need_resched标志
    4. 中断返回前检查标志,触发调度
3. 性能优化依据

避免频繁调度的设计考量:

  • 上下文切换成本​:现代处理器需刷新TLB、L1缓存,开销达1-10μs。
  • 局部性保护​:减少调度可提高缓存命中率。
  • 吞吐量公式​:吞吐量=平均进程执行时间+切换开销比例1​当切换开销占比超5%时,系统效率显著下降。
4. 抢占式调度的特例

实时系统​(如VxWorks)中,新进程进入就绪队列可能触发立即调度:

  • 若新进程优先级 > 当前进程 → 立即抢占
  • 但本题场景为通用操作系统(题干明确"非直接原因")

题目17:死锁最小资源数计算

正确答案:A(10)​

深度解析:死锁避免的数学基础

避免死锁的资源分配需满足安全状态条件,本题考察最坏情况下的资源需求计算。

1. 死锁条件公式推导
  • 系统参数​:
    • N:进程数
    • W:每个进程最大资源需求
    • M:系统资源总数
  • 最小安全资源数​:M≥N×(W−1)+1
  • 逻辑证明​:
    1. 每个进程获得(W−1)个资源(共占用 N×(W−1)个)
    2. 系统至少剩1个资源
    3. 该剩余资源可分配给任一进程使其完成
    4. 完成进程释放W个资源,保障其他进程执行
2. 本题计算验证
  • 给定 N=3, W=4:M≥3×(4−1)+1=10
  • 不安全场景(M=9时)​​:
    进程已获资源仍需资源系统可用资源
    P1310
    P231→ 死锁
    P331
3. 银行家算法扩展

死锁避免的通用算法:

  • 数据结构​:
    • Available:可用资源向量
    • Max:进程最大需求矩阵
    • Allocation:已分配矩阵
    • Need:需求矩阵(Need = Max - Allocation)
  • 安全性检查算法​:
    1. 寻找满足 Need ≤ Available 的进程
    2. 假设分配资源并模拟执行
    3. 若所有进程可完成 → 安全状态
4. 工程实践参考
  • Oracle数据库资源管理​:
    设置RESOURCE_LIMIT参数预防死锁:
    ALTER SYSTEM SET RESOURCE_LIMIT=TRUE SCOPE=BOTH;  
  • Kubernetes容器调度​:通过ResourceQuota限制命名空间资源,防止资源耗尽死锁。

知识体系总结

  1. 死锁处理全方案​:预防(设计避免)→ 避免(运行时检测)→ 解除(强制干预)
  2. 优先级调度本质​:通过动态优先级平衡吞吐量与响应时间
  3. 多级调度模型​:作业调度控内存,进程调度管CPU
  4. 调度触发机制​:中断/异常驱动,非队列变更驱动
  5. 死锁数学原理​:M≥N(W−1)+1 是最小安全边界

这组题目覆盖了操作系统核心概念:进程调度、死锁处理、资源管理。掌握这些原理是构建高可靠系统的理论基础。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值