1、 1 / 10 目目 录录 第一章 关于死锁 . 2 1.1 死锁的概念 . 2 1.2 死锁的一些结论 2 1.3 产生死锁的必要条件 2 1.4 安全状态与不安全状态 . 3 第二章 课程设计的目的 . 3 第三章 课程设计的要求 . 3 第四章 课程设计题目描述 . 4 第五章 课程设计之银行家算法原理 . 5 5.1 银行家算法的思路 . 5 5.2银行家算法中用到的主要数据结构 . 5 5.3银行家算法 6 5.4安全性检查算法 . 7 第六章 源程序结构分析及代码实现 . 8 6.1程序结构 8 6.2数据结构 8 6.3函数声明 9 6.4主函数 main() . 9 6.5.源
2、程序代码 . 10 第七章 课程设计的总结 . 10 2 / 10 第一章第一章 关于死锁关于死锁 1.1 死锁的概念死锁的概念 在多道程序系统中,虽可借助于多个进程的并发执行,来改善系统的资源利用率,提高 系统的吞吐量,但可能发生一种危险死锁。所谓死锁(Deadlock),是指多个进程在运行 中因争夺资源而造成的一种僵局(Deadly_Embrace),当进程处于这种僵持状态时,若无外力 作用,它们都将无法再向前推进。一组进程中,每个进程都无限等待被该组进程中另一进程 所占有的资源,因而永远无法得到的资源,这种现象称为进程死锁,这一组进程就称为死锁 进程。 1.2 死锁的一些结论死锁的一些结
3、论 参与死锁的进程最少是两个(两个以上进程才会出现死锁) 参与死锁的进程至少有两个已经占有资源 参与死锁的所有进程都在等待资源 参与死锁的进程是当前系统中所有进程的子集 注:如果死锁发生,会浪费大量系统资源,甚至导致系统崩溃。 1.3 产生死锁的产生死锁的必要条件必要条件 1、互斥使用(资源独占) 一个资源每次只能给一个进程使用 2、不可强占(不可剥夺) 资源申请者不能强行的从资源占有者手中夺取资源,资源只能由占有者自愿释放 3、请求和保持(部分分配,占有申请) 一个进程在申请新的资源的同时保持对原有资源的占有 (只有这样才是动态申请, 动态 3 / 10 分配) 4、循环等待 存在一个进程等
4、待队列 P1 , P2 , , Pn, 其中 P1 等待 P2 占有的资源,P2 等待 P3 占有的资源,Pn 等待 P1 占有的资源,形 成一个进程等待环路。 1.4 安全状态与不安全状态安全状态与不安全状态 安全状态:如果存在一个由系统中所有进程构成的安全序列 P1,Pn,则 系统处于安全状态。一个进程序列P1,Pn是安全的,如果对于每一个进程 Pi(1in) , 它以后尚需要的资源量不超过系统当前剩余资源量与所有进程 Pj (j “进程“(“pi“)“; for (i=0; in; i+) Finishi=0; /所有进程置为未分配状 态 coutendlendl; bank(); /银行家算法函数调用 eturn 0; 6.5.源程序代码源程序代码 见附件 第七章第七章 课程设计的总结课程设计的总结 操作系统的基本特征是并发与共享。系统允许多个进程并发执行,并且共享 系统的软、硬件资源。为了最大限度的利用计算机系统的资源,操作系统应采用 动态分配的策略,但是这样就容易因资源不足,分配不当而引起“死锁” 。 银行家算法就是一个分配资源的过程,使分配的序列不会产生死锁。此算法 的中心思想是:按该法分配资源时,每次分配后总存在着一个进程,如果让它单 独运行下去,必然可以获得它所需要的全部资源,也就是说,它能结束,而它结 束后可以归还这类资源以满足其他申请者的需要。