1、 0 操作系统课程设计 实训报告 任务名称: 死锁观察与避免死锁观察与避免 指导教师: XXXXX 专 业:09 信息技术(网络) 班 级: 1 学生姓名: XXX 学 号: XXXXXXX 完成日期: 2011/6/30 操作系统课程设计实训报告 第 1 页 共 8 页 一、一、 操作系统操作系统课程设计课程设计的目的与的目的与要求要求 1、目的、目的 死锁会引起进程僵死,严重的话会造成整个系统瘫痪。因此,死锁现象是操作系统特别是 大型系统中必须设法防止的。学生应独立的使用 C 语言(或其它程序设计语言)编写和调试一 个系统动态分配资源的简单模拟程序,观察死锁产生的条件,并采用适当的算法,有
2、效的防止 死锁的发生。从而更直观地了解死锁的起因,初步掌握防止死锁的简单方法,加深理解课堂上 讲授过的知识。 2、要求、要求 (1)设计一个由 n 个并发进程共享 m 个系统资源的系统。系统中进程可动态地申请资源 和释放资源。系统按各进程的申请动态地分配各资源。 (2)系统应能显示各进程申请和释放资源以及系统动态分配资源的过程,便于用户观察 和分析。 (3)系统应能选择是否采用防止死锁算法或选用何种防止算法(如有多种算法) 。在不采 用防止算法时观察死锁现象的发生过程。在使用防止死锁算法时,了解在同样申请条件下,防 止死锁的过程。 二、二、简述简述课程设计内容、课程设计内容、主要功能主要功能和
3、实现环境和实现环境 银行家算法是一种最有代表性的避免死锁的算法。在避免死锁方法中允许进程动态地 申请资源,但系统在进行资源分配之前,应先计算此次分配资源的安全性,若分配不会导 致系统进入不安全状态,则分配,否则等待。这次课程设计是在 c 语言的环境下实现的。 三、三、任务的分析、设计、实现和讨论任务的分析、设计、实现和讨论 1、任务的分析任务的分析 首先要理解死锁 1、死锁概念:在多道程序系统中,多个进程的并发执行,可改善系统的资源利用率,提高系统的吞吐量, 但可能发生一种危险死锁。所谓死锁,是指多个进程在运行中因争夺资源而造成的一种僵局,当进程处于这 种僵持状态时,若无外力作用,它们都将无法
4、再向前推进。一组进程中,每个进程都无限等待被该组进程中另 一进程所占有的资源,因而永远无法得到的资源,这种现象称为进程死锁,这一组进程就称为死锁进程。 2、关于死锁的一些结论: 参与死锁的进程最少是两个; 参与死锁的进程至少有两个已经占有资源; 参与死锁的所有进程都在等待资源; 参与死锁的进程是当前系统中所有进程的子集。 如果死锁发生,会浪费大量系统资源,甚至导致系统崩溃。 银行家算法的思路: 1)进程一开始向系统提出最大需求量. 2)进程每次提出新的需求(分期贷款)都统计是否超出它事先提出的最大需求量. 3)若正常,则判断该进程所需剩余剩余量(包括本次申请)是否超出系统所掌握的 剩余资源量,若不超出,则分配,否则等待. 我们可以把操作系统看作是银行家, 操作系统管理的资源相当于银行家管理的 资金,进程向操作系统请求分配资源相当于用户向银行家贷款。 操作系统课程设计实训报告 第 2 页 共 8 页 为保证资金的安全,银行家规定: (1) 当一个顾客对资金的最大需求量不超过银行家现有的