银行家算法(操作系统)(11页).doc
《银行家算法(操作系统)(11页).doc》由会员分享,可在线阅读,更多相关《银行家算法(操作系统)(11页).doc(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-银行家算法(操作系统)-第 10 页操作系统实验报告题目:银行家算法班级:网络工程姓名:朱锦涛学号:E31314037一、实验目的 用代码实现银行家算法,了解通过银行家算法避免死锁的思想。通过代码的具体实现,加深对算法的核心的理解。二、实验原理 我们可以把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。操作系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程已占用
2、的资源数与本次申请的资源数之和是否超过了该进程对资源的最大需求量。若超过则拒绝分配资源,若没有超过则再测试系统现存的资源能否满足该进程尚需的最大资源量,若能满足则按当前的申请量分配资源,否则也要推迟分配。三、实验内容源程序:#include#include#includetypedef struct Procedureint Max3; /满足此进程需要三类资源的数量int Allocation3; /系统已经为该进程分配的资源情况int Need3; /该进程还需要资源数量int flag; /标志位,执行完之前为0,执行完之后为1char p; /在执行完之后,给出相应的编号,如P1,P2
3、struct Procedure * pNext;Pro,*PNODE; /如果系统资源足够多的话,那么所有的安全序列的数量就会是5*4*3*2*1=120个PNODE create_list(int &len);void traverse_list(PNODE pHead);int cnt_exe(PNODE pHead,int *system,int i); /计算目前系统能够执行的进程数int work(PNODE pHead,int *system);int main()int ok;int len;srand(time(0);int system3 = rand()%5+10,ran
4、d()%5+2,rand()%5+5;printf(系统中可用的各类资源数分别为:%d %d %dn,system0,system1,system2);Pro *pHead = create_list(len);traverse_list(pHead);int cnt = cnt_exe(pHead,system,3);if(cnt = 0)printf(对不起,不存在安全序列n);return 0;elseint ok = work(pHead,system);if(ok = len)printf(恭喜!存在安全序列!n);elseprintf(很抱歉!不存在安全序列!n);return 0
5、;PNODE create_list(int &len)int i,j;char c = A; /用来临时存放用户输入的结点的值/分配了一个不存放有效数据的头结点PNODE pHead = (PNODE)malloc(sizeof(Pro);if (NULL = pHead)printf(分配失败, 程序终止!n);exit(-1);PNODE pTail = pHead;pTail-pNext = NULL;printf(请输入您需要生成的链表节点的个数:);scanf(%d, &len);for (i=0; ilen; +i)PNODE pNew = (PNODE)malloc(sizeo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 银行家 算法 操作系统 11
限制150内