admin 管理员组

文章数量: 887016

操作系统原理实验报告

实验题目   实三银行家算法   

实验银行家算法

1.1 实验目的

多个进程动态地共享系统的资源可能会产生死锁现象。死锁的产生,必须同时满足四个条件,第一个是互斥条件,即一个资源每次只能由一个进程占用;第二个为请求和保持条件,即一个进程请求资源不能满足时,它必须等待,但它仍继续保持已得到的所有其它资源;第三个是不剥夺条件,任何一个进程不能抢占另一个进程已经获得且未释放的资源;第四个为循环等待条件,系统中存在若干个循环等待的进程,即其中每一个进程分别等待它前一个进程所持有的资源,防止死锁的机构只须确保上述四个条件之一不出现,则系统就不会发生死锁。在实验中假定系统中任一资源在每一时刻只能由一个进程使用,任何进程不能抢占其它进程正在使用的资源,当进程得不到资源时必须等待。因此只要资源分配策略能保证进程不出现循环等待,则系统就不会发生死锁。

1.2 实验内容及要求

  1. 模拟实现银行家算法
  2. 本实验要求学生编写和调试一个系统动态分配资源的简单模拟程序,观察死锁产生的条件,并采用银行家算法,有效地防止和避免死锁的发生。
  3. 用银行家算法实现资源分配。
  4. 设计五个进程{P0,P1,P2,P3,P4}共享三类资源{A,B,C}的系统,{A,B,C}的资源数量分别为10,5,7。进程可动态地申请资源和释放资源,系统按各进程的申请动态地分配资源。
  5. 要求程序具有显示和打印各进程的某一时刻的资源分配表和安全序列;显示和打印各进程依次要求申请的资源号以及为某进程分配资源后的有关资源数据。

1.3 实验技术

1)一台运行Windows 操作系统的计算机

2)计算机中需安装Visual C专业版或企业版

1.4实验步骤

 1)初始状态安全性检查:

2)P1请求(1,0,2)

 3)P4请求(3,3,0)

4)P0请求(0,2,0)

 5)P0改为请求(0,1,0)

 程序设计的流程图如下:

1.5实验结果及分析说明

1)输入MAX,ALLOCATION矩阵和可利用资源后,进行安全性检查,经检查,安全。安全序列为 P1,P3,P0,P2,P4。可利用的资源为(3,3,2)

2)P1请求资源(1,0,2),经银行家算法检查后安全,输出资源分配。安全序列为P1,P3,P0,P2,P4,可利用的资源变为(2,3,0)

 3)P4请求资源(3,3,0),可利用的资源数不足,出错,P4等待,不予分配资源。

4)P0请求资源(0,2,0),经银行家算法,找不到安全序列,会引发死锁,不予申请,资源回收,可利用的资源仍为(2,3,0)。

5)P0请求资源(0,1,0),经银行家算法,找到安全序列,为P1,P3,P0,P2,P4不会引发死锁.可利用的资源变为(2,2,0).

 1.6实验体会(实验中遇到的问题及解决方法

1)实验反思操作系统的基本特征是并发与共享。系统允许多个进程并发执行,并且共享系统的软、硬件资源。为了最大限度的利用计算机系统的资源,操作系统应采用动态分配的策略,但是这样就容易因资源不足,分配不当而引起“死锁”。而我本次课程设计就是得用银行家算法来避免“死锁”。银行家算法就是-一个分配资源的过程,使分配的序列不会产生死锁。此算法的中心思想是:按该法分配资源时,每次分配后总存在着-一个进程,如果让它单独运行下去,必然可以获得它所需要的全部资源,也就是说,它能结束,而它结束后可以归还这类资源以满足其他申请者的需要。通过这次实验,我体会到银行家算法的重要性,银行家算法是避免死锁的主要方法,其思路在很多方面都非常值得我来学习借鉴。

2)实验收获

①切实加深对进程死锁的认识;

②正确理解系统的安全状态和不安全状态;

③更进一步地理解和掌握银行家算法;

银行家算法的描述如下:

在编写程序不断出现错误和改正的过程序中加深了我对银行家算法的理解。这个系统的功能满足要求,完成了对资源的修改还有用银行家算法和安全性算法来检查是否允许分配资源进程。程序主要由两部分组成。第一部分是银行家算法,第二部分是安全性算法。

①银行家算法

1如果Request<=Need,则转向2;否则,出错

2.如果Request<=Available,则转向3,否则等待

3.系统试探分配请求的资源给进程

4.系统执行安全性算法

②安全性算法

1.设置两个向量

(1).工作向量:Work=Available (表示系统可提供给进程继续运行所需

要的各类资源数目)

(2). Finish:表示系统是否有足够资源分配给进程(True:有;False:没

有).初始化为False。

2.若Finish[i]-Fal se&Need<-Work,则执行3;否则执行4(I为资源类别)

3.进程P获得第i类资源,则顺利执行直至完成!并释放资源:

Work=Work+Al locat ion;

Finish[i]=true;转2

4.若所有进程的Finish[i]=true,则表示系统安全;否则,不安全!

附录:

本文标签: 银行家 算法 操作系统