首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
考研
假设有一个进程拥有两个线程(编号为0和1)需要去访问同一个共享资源,为了避免竞争状态的问题,必须实现一种互斥机制,使得在任何时候只能有一个线程在访问这个资源。假设有如下的一段代码: int flag[2]; /*flag数组,初始化为FALSE*/ En
假设有一个进程拥有两个线程(编号为0和1)需要去访问同一个共享资源,为了避免竞争状态的问题,必须实现一种互斥机制,使得在任何时候只能有一个线程在访问这个资源。假设有如下的一段代码: int flag[2]; /*flag数组,初始化为FALSE*/ En
admin
2017-11-20
83
问题
假设有一个进程拥有两个线程(编号为0和1)需要去访问同一个共享资源,为了避免竞争状态的问题,必须实现一种互斥机制,使得在任何时候只能有一个线程在访问这个资源。假设有如下的一段代码:
int flag[2]; /*flag数组,初始化为FALSE*/
Enter_Critica1_Section(int my_thread_id),int other_thread_id)
{
while (flag [other_thread_id]==TRUE);/*空循环语句*/
flag[my_thread_id]=TRUE;
}
Exit_Critica1_Section(int my_thread_id),int other_thread_id)
{
flag[my_thread_id]=FALSE;
}
当一个线程想要访问临界资源时,就调用上述的这两个函数。比如,线程0的代码可能是这样的:
Enter_Critica1_Section(0,1);
……使用这个资源……
Exit_Critica1_Section(0,1);
……做其他的事情……
试问:
以上的这种机制能够实现资源互斥访问吗?为什么?
选项
答案
这种机制不能实现资源的互斥访问。 考虑如下的情形: 1)初始化的时候,flag数组的两个元素值均为FALSE。 2)线程0先执行,在执行while循环语句的时候,由于flag[1]=FALSE,所以顺利结束,不会被卡住。假设这个时候来了一个时钟中断,则打断它的运行。 3)线程1去执行,在执行while循环语句的时候,由于flag[0]=FALSE,所以顺利结束,不会被卡住,然后就进入了临界区。 4)后来当线程0再执行的时候,也进入了临界区,这样就同时有两个线程在临界区。 不能成功的根本原因是无法保证Enter_Critical_Section()函数执行的原子性,从上面的软件实现方法中可以看出,对于两个进程间的互斥,最主要的问题就是标志的检查和修改不能作为一个整体来执行,因此容易导致无法保证互斥访问。
解析
转载请注明原文地址:https://www.kaotiyun.com/show/bARi777K
本试题收录于:
计算机408题库学硕统考专业分类
0
计算机408
学硕统考专业
相关试题推荐
1923年纳粹党魁希特勒发动了“啤酒馆暴动”,对此叙述不正确的一项是()。
西欧早期资产阶级反封建斗争以反天主教会的方式进行,主要原因是()①天主教会是最有势力的封建主集团②天主教会是封建的精神工具③天主教会日益腐败④近代自然科学的兴起
新文化运动中,把斗争矛头指向孔孟儒学的直接原因是()。
建立帝国财政收支总账和元首金库,直接控制和调节全国财政收支的是()。
阅读材料,回答问题:材料一:战后美国对一些新兴工业部门、重大科研项目、现代化公共设施等投入大量资金,如美国时发展原子能工业的投资,从1945年到1970年共计达175亿美元。美国还通过国家力量来扩张国外市场,从50年代中期起,为加强国际市场的竞争力,政府
1534年英国议会宣布英国教会断绝与罗马教廷一切关系的文件是()。
印加人记载事物使用的方法是()。
明末清初,著名学者()抗清失败,前往日本讲学,传播中国文化。
以下()协议完成了从网卡到IP地址的映射。
在一个8级中断的系统中,硬件中断响应从高到低的优先顺序是1→2→3→4→5→6→7→8,通过中断屏蔽技术,将中断处理优先顺序设置为1→3→5→7→2→4→6→8,如果CPU在执行一个应用程序时有5、6、7、8级的四个中断同时到达,CPU在按优先顺序处理到第
随机试题
A.外出旅游时出现的肺炎B.学校里爆发的肺炎C.肾移植患者感染的肺炎D.住院3天后新发的肺炎E.居住老人院感染的肺炎上述选项中属于免疫低下宿主肺炎的是
有关Word“首字下沉”命令正确的说法是_______。
下列药物治疗高血压首次应用会出现严重的直立性低血压的是
()是影响储存商品质量变化的主要因素。
根据课程任务可将课程分为基础型、拓展型和研究型三类。()
ThefirstwalkintoouterspacewastakenbyaSovietastronaut.AstronautZhaiZhigangbecamethefirstChinesetowalkinspac
正常情况下,成人比较适宜的一次献血量是()。
利用代换u=ycosx将微分方程y"cosx-2y’sinx+3ycosx=ex化简,并求出原方程的通解.
建立一个文件名和表单名均为myfom的表单文件,表单上有:表格控件grid1(RecordSourceType属性手工设置为“别名”),文本框控件Text1,命令按钮控件Command1(文本为“确定”)。程序运行时在文本框中输入“部门名”,然后
Whydidhegiveuphisjobinthefactory?Becausehehad______.
最新回复
(
0
)