一、资源管理
1.资源的动态分配:进程所需的资源是在进程运行中根据运行情况动态的分配、使用和释放的。
静态分配:批处理操作系统中,对作业一级采用资源静态分配方法。作业所需要的资源是在调度到这个作业的时候,根据用户给出的信息进行分配,并在做作业运行完毕后释放所获得的的全部资源。
2.资源管理任务:
对资源数据结构的描述;确定资源的分配原则和调度原则;执行资源分配;存取控制和安全保护
3.资源的分类:
物理资源和程序资源;
单一访问入口资源(一次只能为一个进程所用)/多访问入口资源(可同时为多个进程所共享)
等同资源:在某些条件下,申请者申请资源时,无论给它分配哪一个具体设备,对它而言都是等效的。
虚拟资源
二、资源分配机制
1.资源描述器:描述各类资源的最小分配单位的数据结构(RD),如主存储器的主存块,磁盘的扇区
2.资源信息块(rib):说明资源、请求者及实施分配所需的必要信息的数据结构
三、资源分配策略
1.实施分配的时机:
当请求者发出一个明确地资源请求命令; 当处理机空闲的时候;
当存储区被释放变为空闲的时候; 当一个外部设备发生完成中断时;
分配程序选择一个请求的的策略:
按照请求来到的先后次序进行查看; 将进程请求者的优先级结合到每一个请求中;
满足能更合理应用这个资源的请求
先请求先服务(FIFO) 优先调度
针对设备特性的调度:
移臂调度:在满足一个磁盘的请求时,总是选取与当前移动臂前进方向上最近的那个情求,使移臂距离最短
旋转调度:在满足一个磁盘请求时,总是选取与当前读写头旋转方向最近的那个情求,使旋转圈数最少
四、死锁
1.死锁:在两个或多个并发进程中,如果每种进程持有某种资源而又都等待着别的进程释放它或它们现在保持的资源,在未改变这种状态之前都不能向前推进,称这一组进程产生了死锁。
同类资源的死锁 ; 非同类资源的死锁
2.产生死锁的原因及必要条件
根本原因:系统能够提供的资源个数少于要求该资源的进程数
原因:系统资源不足;进程推进顺序非法
必要条件:互斥条件;不剥夺条件;占有并等待;环路条件
3.解决死锁问题的策略
预防死锁:通过设置某些限制条件,破坏死锁四个必要条件之一(多),来防止死锁
破坏互斥条件(难) 破坏不剥夺条件(代价大)
破坏部分分配条件(预先静态分配)
破坏环路条件(有序资源分配)
较容易实现,但由于限制太严格,导致资源利用率和吞吐率降低
避免死锁:在资源的动态分配过程中,用某种方法防止进程进入不安全状态,从而避免死锁的进入。
较难实现,只需较弱的限制,就可获得较高的资源利用率和吞吐率
检测和恢复死锁:允许死锁发生,但可通过检测机制及时检测出死锁状态,并精确确定与死锁有关的进程和资源,然后采用使用措施,将系统中的死锁清除,将进程从死锁状态中解脱出来。
检测方法:难
恢复方法: 常用的方法是撤销或挂起一些进程,以回收一些资源,再将它们分配给处于阻塞状态的进程,使之转化为就绪状态
实现难度大,但可获得较高的资源利用率和系统吞吐量
4.预防死锁:
静态预防:预先分配所有共享资源
改进:将资源的分配单位由进程改为程序步
动态预防:采用资源的动态分配
避免死锁:
有序资源分配法:系统中所有资源都给定一个唯一的编号,所有分配请求必须以上升的次序进行。要求程序:
对它所必须使用的属于某一类的所有资源必须一次申请完成;
在申请不同类的资源时,必须安各类编号一次申请
银行家算法