高中生学什么有好的发展? 道路千万条 技术第一条 技能强 文凭硬...
东莞北大青鸟金码学校,东莞电脑培训,计算机专业技能培训,东莞北大青...
学什么有钱途,互联网+时代这些行业紧缺IT人
电商公开着陆页
高考成绩不理想,该何去何从? 北大青鸟职业技术学校 就业早一步,...
东莞北大青鸟作为国内成立最早、规模最大的IT职业教育机构和北京大...
学互联网营销 实现企业跨越式发展 4月快速打破流量端口
对未来很迷茫怎么办
设有5个哲学家,共享一张放油把椅子的桌子,每人分得一吧椅子.但是桌子上总共执友支筷子,在每个人两边分开各放一支.哲学家只有在肚子饥饿时才试图分两次从两边拾起筷子就餐.
就餐条件是:
1)哲学家想吃饭时,先提出吃饭的要求;
2)提出吃饭要求,并拿到支筷子后,方可吃饭;
3)如果筷子已被他人获得,则必须等待该人吃完饭之后才能获取该筷子;
4)任一哲学家在自己未拿到2支筷子吃饭之前,决不放下手中的筷子;
5)刚开始就餐时,只允许2个哲学家请求吃饭.
试问:
1)描述一个保证不会出现两个邻座同时要求吃饭的算法;
2)描述一个既没有两邻座同时吃饭,又没有人饿死的算法;
3)在什么情况下,5个哲学家全都吃不上饭?
哲学家进餐问题是典型的同步问题.它是由Dijkstra提出并解决的.该问题是描述有五个哲学家,他们的生活方式是交替地进行思考和进餐.哲学家 们共用一张圆桌,分别坐在周围的五张椅子上.在圆桌上有五个碗和五支筷子,平时一个哲学家进行思考,饥饿时便试图取用其左右岁靠近他的筷子,只有在他拿到 两支筷子时才能进餐.进餐完毕,放下筷子继续思考.
利用记录型信号量解决哲学家进餐问题
经分析可知,筷子是临界资源,在一段时间只允许一个哲学家使用.因此,可以用一个信号量表示一支筷子,由这五个信号量构成信号量数组.其描述如下:
var chopstick:array[0,...,4]of semaphore;
所有信号量被初始化为1,第i个哲学家的活动可描述为:
repeat
wait(chopstick);
wait(chopstick[(i+1) mod 5]);
...
eat;
...
signal(chopstick);
signal(chopstick[(i+1) mod 5]);
...
think;
until false;
在以上描述中,哲学家饥饿时,总是先去拿他左边的筷子,即执行wait(chopstick);成功后,再去拿他右边的筷子,即执行 wait(chopstick[(i+1) mod 5]);,再成功后便可进餐.进餐完毕,又先放下他左边的筷子,然后放下他右边的筷子.虽然,上述解法可保证不会有两个相临的哲学家同时进餐,但引起死锁 是可能的.假如五个哲学家同时饥饿而各自拿起右边的筷子时,就会使五个信号量chopstick均为0;当他们试图去拿右边的筷子时,都将因无筷子可拿而 无限期地等待.对于这样的死锁问题可采用以下集中解决方法:
(1)至多只允许四个哲学家同时进餐,以保证至少有一个哲学家能够进餐,最终总会释放出他所使用过的两支筷子,从而可使更多的哲学家进餐.
(2)仅当哲学家的左右两支筷子都可用时,才允许他拿起筷子进餐.
(3)规定奇数号的哲学家先拿起他左边的筷子,然后再去拿他右边的筷子;而偶数号的哲学家则相反.按此规定,将是1,2号哲学家竞争1号筷 子,3,4号哲学家竞争3号筷子.即五个哲学家都竞争奇数号筷子,获得后,再去竞争偶数号筷子,最后总会有一个哲学家能获得两支筷子而进餐.
看了整整一个上午的操作系统,看得头都大了。
我们老师的算法的大意好像是用一个总的信号量,只有获得信号量的哲学家才可以拿筷子。
具体算法如下(用类c描述):
#include "所有头文件"
#define N 5
#define left (i-1)%N //i的左邻号码
#define right (i+1)%N //i的右邻号码
#define think 0
#define hungry 1
#define eating 2
typedef int semaphore //信号量是一个特殊的整型变量
int state[N] //记录每个人的状态
semaphore mutex=1; //设置信号量
semaphore s[N]; //每个哲学家一个信号量
void philosopher(int i)
{
while(true) //无限循环
{
think;
take_chopstick(i);
eat;
put_chopstick(i);
}
}
void take_chopstick(int i)
{
p(& mutex); //对信号量的p操作
state=hungry;
test(i); //试图得到两支筷子
v(&mutex); //v操作
p(&s); //得不到筷子则阻塞
}
void put_chopstick(int i)
{
p(& mutex);
state=think; //进餐结束
test(left); //看左邻是否进餐
test(right); //再看右邻
v(&mutex);
}
void test(int i)
{
if(state==hungry&&左邻没进餐&&右邻没进餐)
{
state=eating;
v(&s);
}
}
政府认证+ 国际龙头企业认证+ 大学本科学历 北大青鸟毕业证书介绍北大青鸟证书是针对北大青鸟学员经过北大青鸟各授权培训中心的技能与素
北大青鸟东莞金码学校为学生提供住宿条件,干净的楼房,有专人管理打扫,安静环境氛围好,学生可根据意愿选择是否在校住宿。
北大青鸟东莞金码学校是北大青鸟APTECH在东莞唯一的授权中心,拥有软件开发工程师、网络工程师、安卓工程师、学士后Java工程师、学士后 NET工程师、网络营销师、电子商务师、启蒙星等课程授课资质。
读电脑学什么有前途?这是一个很多人都会思考的一个问题,无论是正在读书的学生还是已经毕业了的学生,都会为自己以后的前景做打算。那么读电脑学什么有前途呢?又能拿高薪,就业好,每天在舒适的环境下轻松工作呢
转眼又到了一年一次的高考中考的时候到了,这个夏天你有没有考上你理想的大学或者心仪的高中学校呢?接下来又如何安排你自己的学习路线呢?对于平时成绩不理想的学生来说,是时候该考虑一下,下一步学什么电脑技术对自己的前途有帮助了。那么,学电脑学什么好就业呢?
1、求职意向切忌过于宽泛全国高校中有上百个名称迥异的专业,其中很多专业没有明确的就业方向,比如大部分被比喻成万金油的文科专业,像哲
1、沉着。 我最喜欢的一个词语,以及每一位曾与我一起工作过的同事们身上我最喜欢的品质,凯利说,这意味着,当事情变得疯狂时,
1 要仔细检查已成文的个人简历,绝对不能出现错别字、语法和标点符号方面的低级错误。2 个人简历最好用A4标准复印纸打印, 字体最好采用常
什么样的工作才是好工作?对不同的人而言,答案是完全不同的,因此我们几乎无法回答这个问题。即使我们问怎样是一份合适的工作,也很难有个
中国有句古语:好马不吃回头草。在职场上,这句话是否适用呢?未必!于公司而言,虽然春秋国旅的老总曾公开发话:出了春秋国旅的大门,就别再
孙子兵法上说,知己知彼,百战不殆。要想有效的防范黑客对我们电脑的入侵和破坏,仅仅被动的安装防火墙是显然不够的,我们更应该了解一些常...
Android N你了解它的安全功能吗?在上个月召开的I O大会上Google透露了关于Android N的诸多新功能,时隔1个月外媒SoftPedia撰文对于Googl
2014年04月16日,全球应用网络领导者A10 Networks一举推出四款全新的Thunder?系列设备,进一步丰富延展了其产品线中在中高端的布局。其中,最吸引眼球的当属Thunder 6630 6630S,
1 splice(start,[,length,newValue ])对数组中某索引范围进行删除 声明数组对象var myArray = ["a", "b", "c", "d", "e"]; 从数
InitPHP框架是一款轻量级PHP开源框架,框架文档和下载地址:http: initphp com创建Hello World项目1 下载框架选择最新的版本,进行下载
在这个大学生很普遍的时代,文凭的重要性也显而易见的不如过去,因为随着社会对人才需求的转型,很多企业都把技能和经验作为聘用人才的标准
3月10号下午,我们在中心多媒体厅隆重地举行了S1T27班结业项目大赛。这是同学们在S1学习阶段的一个总结,它反映出整个S1期间同学们自己真正
最近,金码中心S1T113班在多功能教室举办了一场PPT大赛,同学们采用幻灯片制作软件将自己的学习成长经历、生活工作情况一一展示在画面上,
为了丰富学员的课余生活,宣扬中华民族的传统棋文化,促进棋艺爱好者的交流,东莞金码中心特地举办了北大青鸟第二届棋艺大赛,参赛棋艺
2014年12月17日上午,嘉华职业教育总校长金雨及旗下5家北大青鸟校区校长出席了北大青鸟2014年会暨15周年庆典,并以卓越的年度教育成果和规