搜索

银行家算法

gecimao 发表于 2019-06-12 23:40 | 查看: | 回复:

  周二晚才知道第四章小作业还有一道难度及工作量不亚于一个大作业的编程题..晚上找了一些资料,周三肝了一天算是赶完了这突如其来的ddl...

  查阅网上资料时,发现对于算法的代码有不少,但基于多线程的linux编程实现却很少,偶然发现了班上一大佬的文章,参考了他的思路(linux多线程模拟银行家算法

  这里记录一下一些细节和遇到的一些问题,以便日后回顾...(再次对上边的大佬进行无声的感谢..)

  程序运行过程大概就是:初始化(矩阵及数组信息、互斥锁及条件变量等)——创建线程——线程内部根据请求数执行银行家算法,进行安全性检测——线程条件满足结束或条件不满足等待——全部线程满足需求后程序退出。

  把各个模块内部及模块间的关系理清一步一步做就很明确了。(这里再次感谢大佬的文章指导了我方向)

  原因:使用const声明的对象是一个运行时对象,无法使用其作为某个量的初值、数组的长度等情形使用。详细原因参考C语言编译错误:Variably modified array at file scope

  3.二维数组参数传递问题。compare函数中需要传递二维数组,但简单的使用int** Need编译会报错,错误原因好像是传递参数和函数所需参数类型不匹配,又吃了c语言基本功不扎实的亏...参数传递二维数组讲了几个方法,又引出了值传递、引用传递等不同传递方法,再次显示出当初给自己挖下的坑...值传递、地址传递、引用传递

  4.若干语法错误...当在linux中用gcc编译后,一片的error吓懵我了,但其中很大一部分都是“缺少[]”或标点使用错误之类的低级错误..

  1.对于资源请求Request数组的赋值。开始考虑使用随机数值来增加真实性,后来想想这个值应该是使用者输入决定的,如果随机产生可能会导致线程间死锁(很大概率)。

  2.因为创建进程先后有顺序,导致进入互斥区的进程顺序固定,无法做到随机性。使用sleep()也不好掌握时机。(目前尚未解决)

  3.以前没用到或很少用的函数:memset()用于初始化数组,使值清0。

  4.一开始总是提示不安全状态,因为判断条件出错。当一个线程完成资源分配后结束,会使安全序列理论输出减少一个,故判断条件也应该是动态的,即使用一个leftnum记录剩余线程数,if(k==(thnum-leftnum))判断是否处于安全状态。

  其他问题想到再补充吧,总之这个算法还不完善,有时间再回头看吧,毕竟是赶出来的...测试还有一些奇怪的地方没有解决...

  仅用学习参考 同步的概念 同步就是协同步调,按预定的先后次序进行运行。如:你说完,我再说。 同字从字面上容易理解为一起动作 其实不是,同字应是指协同、协助、互相配合。 如进程、线程同步,可理解为进程或线程A和B一块配合,A执行到一定程度时要依靠B的某个结果,于是停下...

  死锁是多线程环境中由于对资源竞争分配不合理而产生的阻塞行为,银行家算法是一种动态避免死锁的策略。 I、死锁 1.1 死锁定义 如果一个线程集合中的每个线程都在等待这个集合中另一个线程的执行结果才能继续执行下去,若无其他外力,它们都无法推进,这就形成了死锁。 1.2 死锁的4...

  最近在做操作系统的课程设计,其中实验四是“银行家算法的模拟和实现”。好在前面看过一点,有点印象。所以想尝试自己写一下,下面是我的编码过程以及个人的一点分享,如果有问题欢迎指出,也希望能和我一起交流。我的邮箱是: 已同步到...

  前言 这是操作系统学习的第三篇啦,关于进程调度有很多内容,操作系统在调度进程的时候最容易遇到的问题就是死锁了,银行家算法是一个典型的避免死锁算法。 死锁的概念 先来了解一下死锁的基本概念:一组竞争系统资源或相互通信的进程相互的“永久”阻塞。若无外力作用,这组进程将永远不能继...

  关于死锁 多道程序系统借助并发执行改善资源利用率,提高系统吞吐量,但可能发生一种危险——死锁。 死锁(Deadlock):指多个进程在运行过程中,因争夺资源而造成的一种僵局。当进程处于这种状态时,若无外力作用,它们都将无法再向前推进。 死锁(Deadlock): 指进程之...

  月半弯, 她静静的, 带着一缕微风,一缕清甜, 钻入我怀中, 月半弯, 她美美的, 给我披上银色的轻纱, 如古之君子, 月半弯, 她是温柔的, 轻轻的带给我千里之外的思念, 月半弯, 她是痴情的, 这些年每天出现在哪里, 就为了等一个人, 月半弯, 底下的我不也是在想一个人?

  这周学习了两个章节,利润是委托临时保管,最终需要贡献与社会,不管是企业还是个人,我们都是纳税人,汇集到国家财政,用于国家一切需要的地方,比如基础建设和教育,养老福利,很好的反哺社会。稻盛先生提出日本应将富国有德定位国策,非常有远见,我觉得日本还有很长路要走,日本至今不正...

  留言和获奖,哪一个是刚需? 一旦留言了,就很希望自己上榜。一旦上榜了,就很希望排名靠前。记得有两次,排名在前几个,总是会不由自主的过一段时间刷一下,看看自己有没有再升一个名次。 到底我是为了得奖而留言呢?还是真的想锻炼自己的不断输入能力?当我调用元认知思考后发现,输入能力最...

  收到一封网友来信:“我的闺蜜今年就要订婚了,现在她经常跟我说她与男朋友吵架非常频繁,并且吵得很凶,原因是对方责任心不强,喜欢把事情推给别人。闺蜜一个女孩挺不容易的,从小到大也受了很多苦。女孩都想被人捧在手心。我自己也不知道该怎么帮她,想和他男朋友谈谈觉得不合适,再加上他男朋...

  据官方消息,Bit-Z将于香港时间2019年1月17日15:00开通GVE充币;1月18日15:00上线GVE/USDT交易;1月21日15:00开通GVE提币。据悉,GV Eco网络生态系统的可信性在于其行为记录的透明化,其关键在于从世界范围内网络系统的维护使用基于分布式...

本文链接:http://windsorflowers.net/dijihuchi/282.html
随机为您推荐歌词

联系我们 | 关于我们 | 网友投稿 | 版权声明 | 广告服务 | 站点统计 | 网站地图

版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright @ 2012-2013 织梦猫 版权所有  Powered by Dedecms 5.7
渝ICP备10013703号  

回顶部