首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
考研
假设有一个进程拥有两个线程(编号为0和1)需要去访问同一个共享资源,为了避免竞争状态的问题,必须实现一种互斥机制,使得在任何时候只能有一个线程在访问这个资源。假设有如下的一段代码: int flag[2];/*flag数组,初始化为FALSE*/
假设有一个进程拥有两个线程(编号为0和1)需要去访问同一个共享资源,为了避免竞争状态的问题,必须实现一种互斥机制,使得在任何时候只能有一个线程在访问这个资源。假设有如下的一段代码: int flag[2];/*flag数组,初始化为FALSE*/
admin
2014-04-17
36
问题
假设有一个进程拥有两个线程(编号为0和1)需要去访问同一个共享资源,为了避免竞争状态的问题,必须实现一种互斥机制,使得在任何时候只能有一个线程在访问这个资源。假设有如下的一段代码:
int flag[2];/*flag数组,初始化为FALSE*/
Enter_critical_section(int my_thread_id),int other_thread_id)
while (flag[other_thread-id]=TRuE); /*空循环语句*/
flag[my_thread_id]=TRUE;
}
Exit_Critical_Seetion(int my_thread_id),int other_thread_id)
{
flag[my_thread_id]=FALSE;
}
当一个线程想要访问临界资源时,就调用上述的这两个函数。例如,线程0的代码可能是这样的:
Enter_Critical_Section(0,1);
……使用这个资源……
Exit_Critical_Section(0,1),
……做其他的事情……
试问:
如果把Enter Critical Section()函数中的两条语句互换一下位置,结果会如何?
选项
答案
可能会出现死锁。 考虑如下的情形: 1)初始化的时候,flag数组的两个元素值均为FALSE。 2)线程0先执行,flag[0]=TRUE,假设这个时候来了一个时钟中断,则打断它的运行。 3)线程1去执行,flag[1]=TRUE,在执行while循环语句的时候,由于flag[0]=TRUE,所以在这个地方被卡住了,直到时间片用完。 4)线程0再执行的时候,由于flag[1]=TRUE,它也在while循环语句的地方被卡住了,这样这两个线程都无法执行下去,从而发生死锁。 本题出现死锁的原因是两个线程都可以直接进入Enter Criticall Section()函数,并立即对flag[]进行修改,使flag[0]和flag[1]的值都为TRUE;又因为无法保证Enter CriticaL Section()函数执行的原子性,导致了两个进程在停止while()语句的条件判断上发生死锁。
解析
转载请注明原文地址:https://jikaoti.com/ti/hjajFFFM
本试题收录于:
计算机408题库学硕统考专业分类
0
计算机408
学硕统考专业
相关试题推荐
李大钊是在中国传播马克思主义最早的革命先驱者,下列李大钊的著作中,不属于揭开了我国马克思主义宣传的第一页的是()。
“时方镇缺守帅,稍命文臣权之……又置转运使、通判,为之条禁,文薄渐为精密,由是利归公上而外权削矣。”这段文字反映出北宋初期加强地方控制的基本理念是()。
正式审议和通过了《关于建国以来党的若干历史问题的决议》,标志着党在指导思想上拨乱反正的历史任务的完成的会议是()。
洋务派创办军事工业的方式是()。
周人重视婚姻,对婚礼尤为讲究。周代的婚礼有六项程序,即:①纳征②问名③纳采④请期⑤亲迎⑥纳吉下列选项顺序排列正确的是()
宋代至清代我国书籍印刷的主要方式是()
论述欧洲一体化的进程及影响。
在集中式总线仲裁中,()方式响应时间最快。
下列排序算法中,时间复杂度为O(nlogn)且占用额外空间最少的是()。
某机采用计数器定时查询方式来进行总线判优控制,共有4个主设备竞争总线使用权,当汁数器初值恒为102时,4个主设备的优先级顺序为()。
随机试题
火灾报警控制器的故障报警信号可以是由火灾报警控制器自身故障引起的,也可以是由系统组件引起的。在非火警状态下,需要尽快进行核实处置。首先查看控制器中()信息。
政策执行机关包括_________、________、_________、_________、__________。
卵泡刺激素的主要作用是
A.高血压病B.脑静脉畸形C.脑动脉瘤D.长骨骨折E.风心病蛛网膜下腔出血最常见的原因是
外科疾病五大类中下列哪项是错误的A.损伤B.感染C.外伤D.肿瘤E.其他性质的疾病
当归的分泌组织为柴胡的分泌组织为
动物:植物:微生物
已知顺序表A,在不改变顺序表中奇数号元素与偶数号元素相对位置的前提下,设计算法,将所有奇数号元素移到所有偶数号元素前。(1)给出算法的基本设计思想。(2)根据设计思想,采用C或C++或Java语言描述算法,关键之处给出注释。(
简述西塞罗关于雄辩家教育的思想。
A、Aninterpreter.B、Aforeignlanguageteacher.C、Atourguide.D、AjournalistC
最新回复
(
0
)