版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、操作系统实验报告题目:银行家算法班级:网络工程姓名:朱锦涛学号: E31314037.一、实验目的用代码实现银行家算法,了解通过银行家算法避免死锁的思想。通过代码的具体实现,加深对算法的核心的理解。二、实验原理我们可以把操作系统看作是银行家, 操作系统管理的资源相当于银行家管理的资金, 进程向操作系统请求分配资源相当于用户向银行家贷款。操作系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时, 要测试该进程对资源的最大需求量, 如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程已占用的资源数与本次申请的资源数之和
2、是否超过了该进程对资源的最大需求量。 若超过则拒绝分配资源, 若没有超过则再测试系统现存的资源能否满足该进程尚需的最大资源量,若能满足则按当前的申请量分配资源,否则也要推迟分配。三、实验内容源程序:#include#include.#includetypedef struct Procedurei nt Max3;/满足此进程需要三类资源的数量i nt Allocation3;/系统已经为该进程分配的资源情况i nt Need3;/该进程还需要资源数量i nt flag;/标志位,执行完之前为0,执行完之后为1char p; /在执行完之后,给出相应的编号,如P1, P2struct Proc
3、edure * 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()i nt ok;i nt len; srand(time(0);i nt system3 = rand()%5+10,rand()%5
4、+2,rand()%5+5;printf(系统中可用的各类资源数分别为 :%d %d %dn,system0,system1,system2);Pro *pHead = create_list(len);t raverse_list(pHead);i nt cnt = cnt_exe(pHead,system,3);i f(cnt = 0)printf(对不起,不存在安全序列n);return 0;.elseint ok = work(pHead,system);if(ok = len)printf(恭喜!存在安全序列!n);elseprintf(很抱歉!不存在安全序列!n);r eturn
5、0;PNODE create_list(int &len)i nt i,j;.char c = A; /用来临时存放用户输入的结点的值/ / 分配了一个不存放有效数据的头结点PNODE pHead = (PNODE)malloc(sizeof(Pro);i f (NULL = pHead)printf(分配失败 ,程序终止 !n);exit(-1);PNODE pTail = pHead;pTail-pNext = NULL;printf(请输入您需要生成的链表节点的个数:);scanf(%d, &len);f or (i=0; ilen; +i).PNODE pNew = (PNODE)ma
6、lloc(sizeof(Pro);if (NULL = pNew)printf(分配失败 ,程序终止 !n);exit(-1);for(j=0;jMaxj = rand()%5+4;pNew-Allocationj = rand()%5;pNew-Needj= pNew-Maxj- pNew-Allocationj;pNew-flag = 0;pNew-p = c;pTail-pNext = pNew;pNew-pNext = NULL;.pTail = pNew;c+;r eturn pHead;void traverse_list(PNODE pHead)PNODE p = pHead-p
7、Next;i nt i = 1;while (NULL != p)printf( 第%d个资源的需要资源总数各为 :%d %d %d,i, p-Max0,p-Max1,p-Max2);.printf(n);printf(第%d个资源已分配资源总数各为:%d %d %d,i,p-Allocation0,p-Allocation1,p-Allocation2);printf(n);printf(第%d个资源还需要资源总数各为:%d %d %d,i,p-Need0,p-Need1,p-Need2);printf(n);printf(n);p = p-pNext;i+;printf(n);r etur
8、n;int cnt_exe(PNODE pHead,int *system,int i).PNODE p;p = pHead-pNext; /p指向第一个节点i nt count = 0; while(p != NULL)if(system0= p-Need0& system1= p-Need1& system2 = p-Need2) count+;p = p-pNext;r eturn count;int work(PNODE pHead,int *system).PNODE p;p = pHead-pNext; /p指向第一个节点int ok = 0;while(p != NULL)if(
9、system0= p-Need0& system1= p-Need1& system2 = p-Need2)system0 += p-Allocation0;system1 += p-Allocation1;system2 += p-Allocation2;p-flag = 1;ok+;printf(系统已经为您执行了进程:%cn,p-p);PNODE q;.q = pHead;/寻找 q 的前一个节点,方便删掉q节点while( q-pNext != p )q = q-pNext;q-pNext = p-pNext;free(p);p = NULL;p = pHead-pNext;/p又重新指向第一个节点elsep = p-pNext;.r eturn ok;存在安全序列的情况:不存在安全序列的情况:.四、实验小结用随机数为系统分配三类资源的个数,随后系统为每个作业分配每个资源需要的个数和已经分配的资源数量, 那么还需要资源的数量则有最大分配量减去已经分配的数量。系统在队列中寻找能满足当前条件的作业,运行完之后, 将其资源释放, 把各类资源重新还给系统。把运行完之后的作业从队列中删除, 系统再从队列开
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026 年护理带教问题复盘与持续质量改进
- 2026 年化疗药物外渗预防及处理护理课件
- 2026年雪熊牌雪糕行业深度研究报告
- 孕产妇危重症紧急救治共识2026
- 部编语文小升初试卷第1套(含答案)
- 2026内蒙古赤峰市肿瘤医院(赤峰大学第二附属医院)招募志愿者笔试
- 2026年保密教育线上培训考试全部试题及解析答案
- 2026年电力行业运维检修方案
- 2026年二级建造师水利水电工程真题及答案(完整版)
- 2026年六月市场拓展战略方案
- 2026年秋季初中开学第一课 行为规范 青春有规
- 《医疗器械经营质量管理规范》培训试题及答案
- 2026年金融科技产品推广方案
- 成都市新都区2026年社区网格员招录考试真题库及完整答案
- 城市更新项目策划与实施方案
- 湖南省长沙市望城区2027届六年级数学第一学期期末联考试题含解析
- 2026统考专升本高数:高数Ⅰ考点汇编
- 校长竞聘面试答辩题及答案(精心)
- 2025年特殊教育学校教师招聘笔试试题及答案
- 2026-2027年人工智能(AI)驱动的个性化国际税务筹划与合规风险预警平台适应全球税收规则变化获金融与法律科技投资
- 2026一级建造师《机电》必背知识点
评论
0/150
提交评论