考研408总结【操作系统】---进程管理(中)

306 阅读3分钟

这是我参与11月更文挑战的第21天,活动详情查看:2021最后一次更文挑战

考研倒计时:34天

上篇总结了进程和线程的概念,本篇总结处理机调度和死锁的内容

参考资料: 王道操作系统考研复习指导 天勤操作系统高分笔记

处理机调度

主要有三个层次:

  • 高级调度(作业调度)(面向作业):外存-->内存 无-->创建态-->就绪态
  • 中级调度(内存调度)(面向进程):外存-->内存 挂起态-->就绪态(阻塞挂起-->阻塞态)
  • 低级调度(进程调度):内存-->CPU 就绪态-->运行态

发生频率最高的是低级调度。

什么时候不能进行进程调度:

  • 处理中断的时候
  • 进程在操作系统内核程序临界区中
  • 原子操作过程中(原语)

进程切换和调度是有代价的。

会计算一些评价指标(CPU利用率、系统吞吐量、周转时间、等待时间、响应时间)

然后是常见的调度算法:

算法是否抢占会导致饥饿其他补充
FCFS非抢占不会
SJF/SPF非抢占(也有抢占的SRTN)
HRRN非抢占不会响应比=等待时间+服务时间/服务时间
时间片轮转抢占不会时间片太大或太小的影响
优先级调度非抢占和抢占
多级反馈队列抢占平衡优秀

后三个适合交互式系统,前三个适合早期批处理。

多加练习!

死锁

  • 死锁一定要有两个或两个以上的进程才会导致,而饥饿可能由一个进程导致。
  • 死循环是应用程序员要解决的,死锁和饥饿是操作系统要解决的

死锁的产生条件

四个必要条件:互斥、不剥夺、请求和保持、循环等待。

小例子帮助理解“拿着苹果虽然自己不吃,但别人不能吃,就是不剥夺”“右手拿着苹果,左手还可以再去拿一个苹果,就是请求和保持”

如果每类资源只有一个,循环等待就是充分必要条件了。

死锁的处理策略

  • 预防死锁

破坏四个必要条件

破坏互斥、比如SPOOLing技术,将临界资源改造为可共享使用的资源,缺点可行性不高。

破坏循环等待:资源编号,缺点不方便增加新设备。

破坏请求和保持:一次分配

  • 避免死锁

避免系统进入不安全序列(银行家算法)

银行家算法:核心work+allocated可分配进行测试是否安全

死锁一定是不安全状态

  • 死锁的检测和解除

检测:资源分配图、死锁定理(边是否可消)

解除:资源剥夺法、撤销进程法、进程回退法。

【2009年408】

image.png

点击查看答案C (8-1)/(3-1)=3.5,不会死锁最大为3,所以可能死锁的最小为4

【2015年408】

image.png

点击查看答案 B Ⅰ前面半句是破环了循环等待,属于死锁预防 后面Ⅱ Ⅲ正确 银行家算法如果此条序列不安全就不分配。

部分内容待补充完善~

如有误,请多指正!