BAKERY'S ALGORITHM(面包店算法)

本文详细介绍了Bakery算法的数据结构及其实现过程,通过进程间的协调机制来解决临界区问题,确保了进程调度的互斥性、进展性和有限等待性。
 BAKERY'S ALGORITHM所用到的数据结构有:
choosing[0..n]=flase;
number[0..n]=0;
----------------------------------------------
choosing =true;/*进程Pi 开始选号码*/
number =max{number[0],number[1],..number[n-1]}+1;
/*进程Pi号码为当前最大号码值加1*/
choosing = false;

for (j = 0; j < N; j++) {
while (choosing[j]);/*如果进程Pj请求进入临界区但没选好号码,则Pi在此循环等待*/
while (number[j] &&
((number[j] < number) ||((number[j] == number) && j < i)));
}
/*如果Pj 在其临界区中,则Pi忙等待。如果进程Pi具有当前最小号码或者是具有相同最小号码的较小下指标的进程,则可以执行完第2个while循环而进入它的临界区;其他进程要么在第一个while处忙等待,要么在第二个while处忙等待*/
-------------
CRITICAL SECTION
--------------------------------------
number[i] = 0;/*Pi退处它的临界区时置号码为0,从而允许其他的进程进入临界区*/
---------------------
可以证明,该算法符合临界区问题解决方法的三个必要条件:
互斥条件(mutual exclusive),进展条件(progress)和有限等待条件(bounded waiting)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值