基于Linux的进程同步与通信的模拟2.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Linux的进程同步与通信的模拟2

中北大学操作系统课程设计说明书?学院、系:软件学院专业:软件工程学 生 姓 名:高岩学 号:0921010248设 计 题 目:基于Linux的进程同步与通信的模拟实现起迄日期: 2011年12月22日- 2012年1月7日指导教师:贾美丽???2012 年 1月 7 日需求分析该软件需要利用银行家算法判断系统是否处于安全状态,同时根据银行家算法得出的安全序列进行临界资源的分配。软件设计的目的是要对输入的进程进行安全性判断模拟分配资源。首先先创建进程:手动创建几个进程,都在界面上完成;其中包括每个进程已分配的资源、最大需求资源、系统剩余资源以及每个进程的执行时间。实例中创建5个进程。其次采用银行家算法,判断是否可以进行资源的分配。最后,按照银行家算法得出的安全序列,对临界资源进行分配。总体设计软件由两个模块组成,分别是银行家算法判断安全序列模块以及临界资源分配模块。2.1银行家算法模块本模块中有如下功能:初始化allocation矩阵,初始化max矩阵,初始化available矩阵,初始化need矩阵,初始化finished矩阵,初始化进程执行时间,用银行家算法判断是否安全,计算系统总资源数目,输出系统总资源数目。其中设置了多个线性单链表结构存储矩阵中的数据,包括已分配allocation矩阵、最大需求量max矩阵、可用资源数available矩阵、需要资源数need矩阵、安全路径path矩阵、进程安全标示finish矩阵、进程运行时间ti矩阵。银行家算法: 设进程i提出请求Request[n],则银行家算法按如下规则进行判断。 (1)如果Request[n]Need[i,n],则报错返回。 (2)如果Request[n]Available,则进程i进入等待资源状态,返回。 (3)假设进程i的申请已获批准,于是修改系统状态: Available=Available-Request Allocation=Allocation+Request Need=Need-Request(4)系统执行安全性检查,如安全,则分配成立;否则试探险性分配作废,系统恢复原状,进程等待。 安全性检查 (1)设置两个工作向量Work=Available;Finish[M]=False(2)从进程集合中找到一个满足下述条件的进程, Finish [i]=False Need=Work 如找到,执行(3);否则,执行(4) (3)设进程获得资源,可顺利执行,直至完成,从而释放资源。 Work=Work+Allocation Finish=True GO TO 2 (4)如所有的进程Finish[M]=true,则表示安全;否则系统不安全。 2.2临界资源分配模块 这个模块有如下功能:创建线程、模拟为线程分配资源。在原来的基础上设置了两个可变长数组altemp、ntemp,分别存放当前进程的已分配资源和需要的资源量。 通过比较每类资源的需要资源量和系统可用的资源量之间大小关系,判断系统是否能给进程分配资源。如果分配成功,则利用sleep函数模拟线程执行,然后释放线程利用的系统资源,执行完毕。如果分配失败,则调用sleep函数等待一段时间,再进行循环判断,直到判断出资源量能够满足进程的要求。 运行时,首先先新建一个终端,然后用gcc命令编译和链接,运行程序,编译命令为:gcc–o process process.c–lpthread如下图1创建三类资源,五个进程,并写出每个进程的已分配资源、最大需求量、系统现在可用的资源、进程执行时间。如下。图2(已分配资源)图3(最大需求量)图4(系统可用资源)图5(进程执行时间)输出系统所有资源量,用银行家算法判断是否安全,如果安全得出安全序列,分配资源如下。图6(执行过程)图7(执行过程)程序流程图图 83.详细设计我负责的是银行家算法判断是否安全,以下是我做的代码。int main(){flag=0;processtest=0;for(temp=0;tempproNum;temp++){alloctemp=allochead;needtemp=needhead;finishtemp=finihead;worktemp=workhead;for(i=0;iproNum;i++){worktemp1=worktemp;if(finishtemp-stat==0){for(j=0;jsourceTyNum;j++,needtemp=needtemp-next,worktemp=worktemp-next)if(needtemp-value=worktemp-value)processtest++;if(processtest==sourceTyNum){fo

文档评论(0)

xjj2017 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档