现要求学生使用swap指令和布尔型变量lock,实现临界区互斥。lock为线程间共存的变量。lock的值为true时线程不能进入临界区,为false时线程能进入临界区。某同学编写的实现临界区互斥的伪代码如下所示:
(1)请修改代码,正确实现互斥(不增加语句条数)。(2)请问是否可以用函数newSwap (&a, &b) 代替swap指令以实现临界区的互斥?为什么?
(1)修改进入区代码:if (key == TRUE) 改为while (key = TRUE) 修改退出区代码:lock =TRUE;改为lock = FALSE;(2)不可以用函数newSwap (&a, &b) 代替swap指令。因为在执行函数newSwap()的过程中,可能会发生进程切换,导致无法正确实现进程互斥。
(1)利用Swap指令实现的进程互斥算法是,每个临界资源设置一个公共布尔型变量lock,初值为FALSE;每个进程设置一个私有布尔型变量key,用于与lock间信息交换。在进入区检查key的状态,然后利用Swap指令交换lock与key的内容;有进程在临界区时,重复交换和检查过程,直到其它进程退出时,检查通过。(2)见答案。
扫描微信二维码,添加您的专属老师为好友
您在考试中遇到任何问题,老师都会帮您解答
您希望我们通过哪种方式与您联系?
您已选择电话/微信/QQ的联系方式,课程顾问会尽快联系您!
您已选择微信联系方式,课程顾问会尽快添加您的微信,请您确认通过!
您已选择QQ联系方式,课程顾问会尽快添加您的QQ,请您确认通过!
您已选择电话联系方式,课程顾问会尽快联系您!
您已选择“不联系”,课程顾问不会主动联系您。如果后续您有需求,可以在个人中心主动添加销售微信或拨打客服电话:400-111-9811