操作系统期末复习(29)

题目 39:作业从进入后备队列到被调度程序选中的时间间隔称为( )​

答案:B(等待时间)​


深度解析

1. 作业生命周期的核心阶段
在多道批处理系统中,作业从提交到完成的完整流程分为四个关键阶段:


  • 后备状态(Backup State)​​:
    • 作业已存入外存后备队列​(磁盘输入井),等待作业调度程序选中。
    • 核心特征​:
      • 作业已具备运行条件(程序、数据完整)。
      • 未加载至内存 → ​尚未占用CPU/内存资源
    • 等待对象​:作业调度程序(与进程调度程序不同)。

2. "等待时间"的严格定义

  • 公式​:等待时间=T调度选中​−T进入后备队列​
  • 技术本质​:作业在后备队列中的排队延迟​(Queueing Delay)。
  • 影响因素​:
    因素影响机制
    作业调度算法SJF算法下短作业等待时间短
    系统负载后备队列长度越长,平均等待时间增加
    资源竞争内存紧张时作业需等待资源释放

3. 与其他时间概念的区别

时间类型定义作用层级
等待时间后备队列排队耗时作业级(批处理)
周转时间作业提交到完成的全程耗时作业级
响应时间用户指令发出到系统首次反馈的时间进程级(分时)
就绪等待时间进程在就绪队列等待CPU的时间进程级

关键结论​:等待时间是作业调度专属指标,描述作业在外存队列的延迟,与进程级等待无关。


题目 40:为照顾紧急作业的用户,应采用( )​

答案:E(基于优先权的剥夺调度算法)​


深度解析

1. 紧急作业的核心需求
紧急作业(如医疗系统告警、实时控制指令)要求:

  • 即时响应​:从就绪到运行的延迟 ≤ 毫秒级。
  • 可抢占性​:中断当前非紧急任务(即使其未执行完)。
  • 确定性​:必须保证最高优先级任务绝对优先。

2. 优先权剥夺调度的运作机制

  • 核心操作​:
    1. 优先级定义​:内核预设或动态分配优先级(如Linux实时优先级0~99)。
    2. 抢占触发​:
      • 硬件中断(外部事件)
      • 系统调用(如 sched_setscheduler()
    3. 上下文切换​:在纳秒级保存寄存器状态至PCB。

3. 与其他算法的致命缺陷对比

算法紧急作业缺陷
FCFS护航效应(长作业阻塞紧急作业)
短作业优先(SJF)依赖时间预估(紧急作业无法证明"短")
时间片轮转(RR)强制等待轮转周期(响应延迟不确定)
多级反馈队列(MFQ)紧急作业需逐级晋升(延迟积累)

4. 工程实践:Linux实时调度类

  • SCHED_FIFO​:
    • 优先级最高的进程独占CPU直至结束或主动让出。
    • 优先级相同时按FIFO排队。
  • SCHED_RR​:
    • 在SCHED_FIFO基础上增加时间片限制(防止单进程饿死系统)。
  • 优先级范围​:
    # Linux查看优先级范围
    chrt -m  
    SCHED_FIFO min/max priority: 1/99

题目 41:下列调度方式和算法中,最容易引起进程长期等待的是( )​

答案:E(非抢占式静态优先权优先算法)​


深度解析(1000+字)​

1. 进程饥饿的本质原因
饥饿(Starvation)指低优先级进程无限期等待资源,核心成因:

  • 静态优先级​:进程优先级初始化后永不改变
  • 非抢占式​:高优先级进程不释放CPU则低优先级永不执行

2. 非抢占静态优先权的灾难场景


  • 数学模型​:
    设高优先级进程到达率为λ,服务率为μ,则低优先级进程等待时间期望:E[Tw​]→∞当 λ≥μ(高优先级进程持续到达使系统过载)

3. 其他算法的缓解机制

算法抗饥饿机制
抢占式静态优先权高优先级可被更高优先级中断
动态优先权(非抢占/抢占)优先级随时间增长提升(如Aging策略)
时间片轮转每个进程周期性获得CPU

4. 静态优先级的合理用例
仅在绝对确定性场景使用:

  • 实时嵌入式系统​:火箭控制(任务执行顺序严格预设)。
  • 安全要求​:必须确保关键任务完整执行(非抢占)。

题目 42(填空题):抢占调度方式中,抢占的原则有( )、( )和( )​

答案:​
(1) 时间片原则
(2) 短作业优先
(3) 优先权原则


深度解析(1000+字)​

1. 时间片原则(Quantum Expiry)​

  • 运作逻辑​:
    进程执行超过固定时间片(如Linux默认5ms)→ 时钟中断触发 → 调度程序剥夺其CPU。
  • 工程实现​:
     
    // Linux内核调度入口(简化)
    void schedule(void) {
        if (current->time_slice <= 0) {  // 时间片耗尽
            dequeue_task(current);       // 移出运行队列
            enqueue_task(current);        // 重新加入就绪队列
            current->time_slice = DEFAULT_TIME_SLICE; // 重置时间片
        }
        pick_next_task(); // 选择新进程运行
    }

2. 短作业优先原则(Shortest Job First)​

  • 抢占条件​:
    新到达作业预估执行时间 < ​当前作业剩余时间时,立即抢占CPU。
  • 风险控制​:
    • 需防止虚假短作业声明 → 结合历史执行时间校验。
    • 限制抢占频率(避免频繁上下文切换开销)。

3. 优先权原则(Priority Preemption)​

  • 层级设计​:
    优先级类型抢占规则
    硬实时优先级立即抢占所有低优先级进程
    软实时优先级延迟数微秒后抢占(避免临界区问题)
    分时优先级仅当时间片耗尽时重新评估优先级
  • Unix信号的应用​:
    SIGSTOP/SIGCONT 信号可实现手动优先级干预(暂停/恢复进程)。

4. 抢占原则的联合作用
现代操作系统采用多原则混合调度​:

  • Linux CFS调度器​:
    优先权原则(nice值) + 时间片原则(虚拟运行时间记账)。
  • Windows优先级反转处理​:
    当低优先级进程持有高优先级进程所需资源时,临时提升其优先级。

终极结论

  1. 等待时间是作业在外存后备队列的排队延迟(批处理系统专属概念)。
  2. 优先权剥夺调度通过硬件中断+上下文切换,保障紧急作业的确定性响应
  3. 非抢占静态优先权是饥饿的主要成因,因低优先级进程完全丧失执行机会
  4. 三大抢占原则​:
    • 时间片耗尽(强制公平)
    • 短作业到达(优化吞吐量)
    • 高优先级请求(保障实时性)

这些机制共同构成了操作系统兼顾效率与公平的调度基石。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值