ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:308.07KB ,
资源ID:1257948      下载积分:15 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/1257948.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(中南大学操作系统课程设计.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

中南大学操作系统课程设计.docx

1、操作系统课程设计银行家算法操作系统课程设计题目名称: 银行家算法 姓 名 学 号 专 业 班 级 指导教师 编写日期 目录第一章 问题描述31.1课设题目重述31.2问题分析31.3实验环境3第二章 系统设计43.1主要数据结构43.2银行家算法43.3安全性检查算法63.4银行家算法安全性序列分析之例7第三章 源代码清单103.1函数清单103.2各函数的调用关系图12第四章 运行结果测试与分析134.1程序的正常输出结果134.2程序的差错控制15第五章 结论与心得18参考文献18第一章 问题描述1.1 课设题目重述设计目的:了解多道程序系统中,多个进程并发执行的资源分配。设计要求:管理员

2、可以把一定数量的作业供多个用户周转使用,为保证作业的安全,管理员规定:当一个用户对作业的最大需求量不超过管理员现有的资金就要接纳该用户;用户可以分期贷款,但贷款的总数不能超过最大需求量;当管理员现有的作业不能满足用户的所需数时,对用户的请求可以推迟支付,但总能使用户在有限的时间里得到请求。当用户得到所需的全部作业后,一定能在有限的时间里归还所有的作业。1.2 问题分析银行家算法是最具有代表性的避免死锁的算法。我们可以把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。在死锁的避免中,银行家算法把系统状态分为安全状态和不安全状态,只

3、要能使系统始终处于安全状态,便可以避免发生死锁。所谓安全状态,是指系统能按某种顺序为每个进程分配所需资源,直到最大需求,使每一个进程都可以顺利完成,即可找到一个安全资源分配序列。所以我们需要解决问题有:1) 熟悉银行家算法的工作原理,明白如何判断系统处于安全状态,避免死锁。2) 在Windows操作系统上,如何利用Win32 API编写多线程应用程序实现银行家算法。3) 创建n个线程来申请或释放资源,如何保证系统安全,批准资源申请。4) 通过Win32 API提供的信号量机制,实现共享数据的并发访问。1.3 实验环境操作系统:windows 8.1实验语言:c+第二章 系统设计3.1 主要数据

4、结构1) 可利用资源向量Available。如果Availablej=K,则表示系统中现有Rj类资源K个。2) 最大需求矩阵Max。如果Maxi,j=K,则表示进程i需要Rj类资源的最大数目为K。3) 分配矩阵Allocation。如果Allocationi,j=K,则表示进程i当前已分得Rj类资源的数目为K。4) 需求矩阵Need。如果Needi,j=K,则表示进程i还需要Rj类资源K个,方能完成其任务。Needi,j=Maxi,j-Allocationi,j。3.2 银行家算法在避免死锁的方法中,所施加的限制条件较弱,有可能获得令人满意的系统性能。在该方法中把系统的状态分为安全状态和不安全

5、状态,只要能使系统始终都处于安全状态,便可以避免发生死锁。银行家算法的基本思想是分配资源之前,判断系统是否是安全的;若是,才分配。设进程cusneed提出请求REQUEST i,如果REQUEST cusneedi,表示进程Pi需要K个Rj类型的资源。则银行家算法按如下规则进行判断。1) 如果REQUEST cusneedi= NEEDcusneedi,则转向步骤(2);否则,出错,为它所需要的资源数已超过它所宣布的最大值。2) 如果REQUEST cusneedi= AVAILABLEcusneedi,则转向步骤(3);否则,出错,因为它所需要的资源数已超过它所宣布的最大值。3) 系统试探分

6、配资源,修改相关数据:AVAILABLEi-=REQUESTcusneedi;ALLOCATIONcusneedi+=REQUESTcusneedi;NEEDcusneedi-=REQUESTcusneedi;4) 系统执行安全性检查,如安全,则分配成立;否则试探险性分配作废,系统恢复原状,进程等待。5) 对于某一进程i,若对所有的j,有NEEDij=0,则表此进程资源分配完毕,应将占用资源释放。根据以上步骤,所以银行家算法流程图如下所示调用bank()函数 输入欲申请的资源的进程号与资源量输入是否合法?REQUEST cusneedi= NEEDcusneedi?REQUEST cusnee

7、di= VAILABLEcusneedi?预分配安全性检查NEEDij=0?继续分配 / 退出释放资源NYYNNNYY 图1 银行家算法流程图3.3 安全性检查算法1) 设置了两个变量工作向量Work,表示系统可提供给进程继续运行所需的各类资源数目。开始时,Work:=Available。Finish,表示系统是否有足够的资源分配给进程,使之运行完成。开始时令Finishi:=false;当有足够的资源分配给进程时,再令Finishi:=true。2) 从进程集合中找到一个能满足下述条件的进程: Finishi=false; Needi,jWorkj; 若找到, 执行步骤(3), 否则,执行步

8、骤(4)。3) 当进程Pi获得资源后,可顺利执行,直至完成,并释放出分配给它的资源,故应执行:Workj=Worki+Allocationi,j;Finishi=true;go to step 2;4) 如果所有进程的Finishi=true都满足, 则表示系统处于安全状态;否则,系统处于不安全状态。根据以上步骤,所以安全性检查算法流程图如下所示:调用safe()函数work=availablefinish=falseneed=workfinish=false ?work=work+allocationfinish=true所有进程的finish=true?输出安全序列,并打印出当前资源分配情

9、况输出提示:系统不安全调用结束NYNY图2 安全性检查算法流程图3.4 银行家算法安全性序列分析假定系统中有五个进程P0, P1, P2, P3, P4和三类资源A, B, C,各种资源的数量分别为10、5、7,在T0时刻的资源分配情况如表1 所示:表1 T0时刻的资源分配表资源情况进程MaxAllocationNeedAvailableA B CA B CA B CA B CP07 5 30 1 07 4 33 3 2P13 2 22 0 01 2 2P29 0 23 0 26 0 0P32 2 22 1 10 1 1P44 3 30 0 24 3 11) T0时刻的安全性: 表2 T0时刻

10、的安全序列资源情况进程WorkNeedAllocationWork+AllocationFinishA B CA B CA B CA B CP13 3 21 2 22 0 05 3 2TRUEP35 3 20 1 12 1 17 4 3TRUEP47 4 34 3 10 0 27 4 5TRUEP27 4 56 0 03 0 210 4 7TRUEP010 4 77 4 30 1 010 5 7TRUE2) P1请求资源:P1发出请求向量Request1(1,0,2),系统按银行家算法进行检查: Request1(1, 0, 2)Need1(1, 2, 2) Request1(1, 0, 2)

11、Available1(3, 3, 2) 系统先假定可为P1分配资源,并修改Available, Allocation1和Need1向量,由此形成的资源变化情况如表2所示:表3 系统先假定可为P1分配资源时刻的资源分配表资源情况进程MaxAllocationNeedAvailableA B CA B CA B CA B CP07 5 30 1 07 4 32 3 0P13 2 23 0 20 2 0P29 0 23 0 26 0 0P32 2 22 1 10 1 1P44 3 30 0 24 3 1 再利用安全性算法检查此时系统是否安全。表4 P1申请资源时的安全性检查资源情况进程WorkNee

12、dAllocationWork+AllocationFinishA B CA B CA B CA B CP12 3 00 2 03 0 25 3 2TRUEP35 3 20 1 12 1 17 4 3TRUEP47 4 34 3 10 0 27 4 5TRUEP27 4 56 0 03 0 210 4 7TRUEP010 4 77 4 30 1 010 5 7TRUE3) P4请求资源:P4发出请求向量Request4(3,3,0),系统按银行家算法进行检查: Request4(3, 3, 0)Need4(4, 3, 1); Request4(3, 3, 0) Available(2, 3, 0),让P4等待。第三章 源代码清单3.1 函数清单工程中出现的所有自己编写的函数调用系统的重要函数,他们的函数功能都被列在这张表中了,如下表所示:表5 自己编写函数及功能形参列表函数名函数功能及其形参介绍Main()主函数,工程的入口,起点Init()初始

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1