进程通信与调度

官官方信息技术老师·8 页·深入(追求细节与边界)·0 次浏览·33 天前
信息技术大学

进程通信与调度

计算机基础面试八股 · 第 2 章 操作系统

按 空格/→ 演示下一步

问一句
1 / 8 页

全部页面点击任意一页,跳回舞台从这页播放

信息技术大学

进程通信与调度

计算机基础面试八股 · 第 2 章 操作系统

1第 1 页 · 进程通信与调度

进程间通信方式(管道/消

六条进程间通道:要快走共享内存,要稳走消息队列,跨机走 Socket。

管道
亲缘进程的单向字节流,shell 的竖线
消息队列
内核信箱,消息带类型,收发解耦
共享内存
同一块物理内存映射双方,最快但要自己加锁
信号量/信号
信号量管计数同步;信号是异步事件通知
Socket
唯一可跨主机的通道,本机进程同样可用
2第 2 页 · 进程间通信方式(管道/消

死锁四条件与避免策略

死锁是四个条件同时成立:互斥、持有等待、不可剥夺、循环等待——破一个就活。

四条件
互斥、持有并等待、不可剥夺、循环等待
破坏循环
资源全局编号排序,大家按同一顺序申请
破坏持有等待
一次性申请全部资源,拿不齐就全部放手
工程手段
锁超时、tryLock、数据库死锁检测与回滚
3第 3 页 · 死锁四条件与避免策略

死锁预防自测

点击作答

下列哪条措施破坏了「循环等待」条件?

4第 4 页 · 死锁预防自测

经典调度算法(FCFS/SJF/

调度就是排队策略:先来先到公平但笨,多级反馈队列是实践的集大成者。

FCFS
先来先服务,简单公平,短任务被长任务堵
SJF
短作业优先,平均等待最优,但饿死长任务
时间片轮转
轮流跑一个时间片,交互响应有保障
多级反馈队列
多队列加优先级加动态降级,兼顾响应与吞吐
5第 5 页 · 经典调度算法(FCFS/SJF/

优先级反转

低优先级持锁不放,高优先级干等,中优先级反而抢跑——反转打破实时性。

场景
高者等低者的锁,低者又被中者抢占
火星教训
探路者号因优先级反转反复复位,成为经典案例
解法
优先级继承:持锁者临时借用高优先级运行
6第 6 页 · 优先级反转

本节要点

  • ✓通信要快用共享内存,要稳用消息队列
  • ✓死锁四条件,破坏任一即化解
  • ✓多级反馈队列:响应与吞吐兼顾
  • ✓优先级反转靠继承解,火星船验证过
延伸主题:写一遍生产者消费者复述一遍死锁四条件
7第 7 页 · 本节要点

课后思考

先自己回答,再展开参考答案——能讲出来才算真懂。

1管道、消息队列、共享内存,分别适合什么场景?

参考答案管道适合亲缘进程的简单单向流;消息队列适合带类型、需解耦与缓冲的消息传递;共享内存适合大块高频数据,配上信号量使用。速度与便利性的取舍决定选型。

2为什么说「锁排序」能彻底预防死锁?

参考答案所有线程按同一全局顺序申请资源,等待关系构成单向链而不可能成环;循环等待条件不成立,死锁在数学上就不可能发生,属于事前预防。

3优先级反转里,中优先级任务为什么能「插队」?

参考答案调度只看优先级:低者持锁进入阻塞后仍属可运行态时,中者比它高就先跑;高者却因等锁阻塞着。优先级继承把持锁者临时抬到等锁者的高度,压缩反转窗口。

8第 8 页 · 课后思考