篇一 :计算机操作系统银行家算法实验报告

计算机操作系统实验报告

                                     

一、   实验名称:银行家算法

二、   实验目的:银行家算法是避免死锁的一种重要方法,通过编写一个简单的银行家算法程序,加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。

三、   问题分析与设计:

1、算法思路先对用户提出的请求进行合法性检查,即检查请求是否大于需要的,是否大于可利用的。若请求合法,则进行预分配,对分配后的状态调用安全性算法进行检查。若安全,则分配;若不安全,则拒绝申请,恢复到原来的状态,拒绝申请。

2、银行家算法步骤:(1)如果Requesti<or =Need,则转向步骤(2);否则,认为出错,因为它所需要的资源数已超过它所宣布的最大值。

(2)如果Request<or=Available,则转向步骤(3);否则,表示系统中尚无足够的资源,进程必须等待。

(3)系统试探把要求的资源分配给进程Pi,并修改下面数据结构中的数值:

       Available=Available-Request[i];

       Allocation=Allocation+Request;

…… …… 余下全文

篇二 :操作系统实验报告--C语言实现银行家算法

 

附录3

程序源代码:

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

# define m 50

int no1;  //进程数

int no2;  //资源数

int r;

int allocation[m][m],need[m][m],available[m],max[m][m];

char name1[m],name2[m];                               //定义全局变量

void main()

{

    void check();

    void print();

    int i,j,p=0,q=0;

    char c;

    int request[m],allocation1[m][m],need1[m][m],available1[m];

    printf("**********************************************\n");

    printf("*           银行家算法的设计与实现           *\n");

…… …… 余下全文

篇三 :银行家算法+实验报告

淮海工学院计算机工程学院

实验报告书

课程名:《操作系统原理》      

题   目:         银行家算法         

班   级:           D软件101          

学   号:           511021012          

姓   名:            陈衍            

 

一、实验目的

银行家算法是操作系统中避免死锁的典型算法,本实验可以加深对银行家算法的步骤和相关数据结构用法的更好理解。

实验环境

Turbo C 2.0/3.0或VC++6.0

实验学时

4学时,必做实验。

二、实验内容

用C语言编写一个简单的银行家算法模拟程序,用银行家算法实现资源分配。程序能模拟多个进程共享多种资源的情形。进程可动态地申请资源,系统按各进程的申请动态地分配资源。要求程序具有显示和打印各进程的某一时刻的资源分配表和安全序列;显示和打印各进程依次要求申请的资源数量以及为某进程分配资源后的有关资源数据的情况。

…… …… 余下全文

篇四 :操作系统 银行家算法实验报告

《计算机操作系统》

课程设计

               银行家算法分析

 

                              

学    院   计算机与软件学院        

 

专    业      网络工程                  

 

班    级     20##级1班               

 

学    号    20121346001                

…… …… 余下全文

篇五 :银行家算法实验报告--谢璐

操 作 系 统

试 验

姓名: 谢 路

班级: 软件0912 学号: 题目: 银行家算法

报 告

20xx年12月13日星期一

实验 银行家算法

一、实验目的

银行家算法是一种最有代表性的避免死锁的算法。在避免死锁方法中允许进程动态地申请资源,但系统在进行资源分配之前,应先计算此次分配资源的安全性,若分配不会导致系统进入不安全状态,则分配,否则等待。为实现银行家算法,系统必须设置若干数据结构。所以通过编写一个模拟动态资源分配的银行家算法程序,进一步深入理解死锁、产生死锁的必要条件、安全状态等重要概念,并掌握避免死锁的具体实施方法.

二、实验要求

根据银行家算法的基本思想,编写和调试一个实现动态资源分配的模拟程序,并能够有效地防止和避免死锁的发生。

三、实验方法内容

1. 算法设计思路

我们可以把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。

为保证资金的安全,银行家规定:

(1) 当一个顾客对资金的最大需求量不超过银行家现有的资金时就可接纳该顾客;

(2) 顾客可以分歧贷款,但贷款的总数不能超过最大需求量;

(3) 当银行家现有的资金不能满足顾客尚需的贷款数额时,对顾客的贷款可推迟支付,但总能使顾客在有限的时间里得到贷款;

(4) 当顾客得到所需的全部资金后,一定能在有限的时间里归还所有的资金. 操作系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程已占用的资源数与本次申请的资源数之和是否超过了该进程对资源的最大需求量。若超过则拒绝分配资源,若没有超过则再测试系统现存的资源能否满足该进程尚需的最大资源量,若能满足则按当前的申请量分配资源,否则也要推迟分配。

…… …… 余下全文

篇六 :操作系统银行家算法实验报告

银行家算法

【开发语言及实现平台或实验环境】

C++

Microsoft Visual Studio 6.0

【实验目的】

(1)进一步理解利用银行家算法避免死锁的问题;

(2)在了解和掌握银行家算法的基础上,编制银行家算法通用程序,将调试结果显示在计算机屏幕上,再检测和笔算的一致性。

(3)理解和掌握安全序列、安全性算法

【实验要求】

(1)了解和理解死锁;

(2)理解利用银行家算法避免死锁的原理;

(3)会使用某种编程语言。

【实验原理】

一、安全状态

指系统能按照某种顺序如<P1,P2,…,Pn>(称为<P1,P2,…,Pn>序列为安全序列),为每个进程分配所需的资源,直至最大需求,使得每个进程都能顺利完成。

二、银行家算法

假设在进程并发执行时进程i提出请求j类资源k个后,表示为Requesti[j]=k。系统按下述步骤进行安全检查:

(1)如果Requesti≤Needi则继续以下检查,否则显示需求申请超出最大需求值的错误。

(2)如果Requesti≤Available则继续以下检查,否则显示系统无足够资源,Pi阻塞等待。

(3)系统试探着把资源分配给进程Pi,并修改下面数据结构中的数值:

  Available[j]∶=Available[j]-Requesti[j];

  Allocation[i,j]∶=Allocation[i,j]+Requesti[j];

  Need[i,j]∶=Need[i,j]-Requesti[j];

(4)系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。若安全,才正式将资源分配给进程Pi,以完成本次分配;否则, 将本次的试探分配作废,恢复原来的资源分配状态,让进程Pi等待。

三、安全性算法

(1)设置两个向量:

…… …… 余下全文

篇七 :银行家算法实验报告

操作系统实验三

银行家算法

姓名:

学号:

报告日期:

一、实验目的

通过实验, 加深对多实例资源分配系统中死锁避免方法——银行家算法的理解,掌握 Windows 环境下银行家算法的实现方法,同时巩固利用 Windows API进行共享数据互斥访问和多线程编程的方法。

二、实验内容

1.在 Windows 操作系统上,利用 Win32API 编写多线程应用程序实现银行家算法。

2.创建 n 个线程来申请或释放资源,只有保证系统安全,才会批准资源申请。

3.通过 Win32 API 提供的信号量机制,实现共享数据的并发访问。

三、实验步骤

(一)设计思路:

银行家算法可分为个主要的功能模块,其描述如下:

1.初始化

由用户输入数据,分别对运行的进程数、总的资源种类数、总资源数、各进程所需要的最大资源数量(Max),已分配的资源数量赋值。

2.安全性检查算法

(1)设置两个工作向量Work=AVAILABLE;FINISH=false;

(2)从进程集合中找到一个满足下述条件的进程,

FINISH==false;

NEED<=Work;

如找到,执行(3);否则,执行(4)

(3)设进程获得资源,可顺利执行,直至完成,从而释放资源。

Work+=ALLOCATION;

Finish=true;

(4).如所有的进程Finish= true,则表示安全;否则系统不安全。

 3. 银行家算法

在避免死锁的方法中,所施加的限制条件较弱,有可能获得令人满意的系统性能。在该方法中把系统的状态分为安全状态和不安全状态,只要能使系统始终都处于安全状态,便可以避免发生死锁。

银行家算法的基本思想是分配资源之前,判断系统是否是安全的;若是,才分配。它是最具有代表性的避免死锁的算法。

设进程j提出请求REQUEST [i],则银行家算法按如下规则进行判断。

…… …… 余下全文

篇八 :操作系统实验报告 银行家算法

昆明理工大学信息工程与自动化学院学生实验报告

201   201   学年  学期

课程名称:操作系统              开课实验室:               年     月    日

一、实验目的

通过编写银行家算法,要求学生进一步掌握如何实现死锁的避免,进一步熟练使用数组进行程序的设计及实现。

二、实验原理及基本技术路线图(方框原理图)

用C语言或C++语言开发。实现银行家算法、安全性检测算法。有能力的同学再完成死锁检测算法。

数据结构定义及主要变量:

   int  available[m];        //系统可用资源

   int claim[n, m];    //进程最大需求

   int allocation[n, m];   //进程当前已分配资源

   int need[n, m];   //进程尚需要的资源

   int request[ n, m];   //进程当前请求的资源

临时变量(安全检查时用):

   int work[m]; //可分配资源和已分配资源之和

…… …… 余下全文