阅读以下说明和C语言代码,回答问题1至问题4,将解答填入答题纸的对应栏内。[说明] 有两个任务(编号
阅读以下说明和C语言代码,回答问题1至问题4,将解答填入答题纸的对应栏内。
[说明]
有两个任务(编号分别为0和1)需要访问同一个共享资源,为了解决竞争条件(race condition)的问题,需要实现一种互斥机制,使得在任何时刻只能有一个任务访问该共享资源。代码一给出了一种实现方法。
[代码一]
1: int flag[2]; /* flag 数组,初始化为FALSE */
2: Enter_Critical_Section(int my_task_id, int other_task_id)
3: {
4: while (flag[other_task_id] == TRUE); /* 空循环语句 */
5: flag[my_task_id] = TRUE;
6: }
7: Exit_Critical_Section(int my_task_id, int other_task_id)
8: {
9: flag[my_task_id] = FALSE;
10: }
当一个任务要访问临界资源时,就可以调用代码一给出的这两个函数。代码二给出了任务0的一个例子。
[代码二]
Enter_Critical_Section(0,1);
…使用这个资源…
Exit_Critical_Section(0,1);
…做其他事情…
什么是临界资源(critical resource)?请用100字以内文字简要说明。
在多道程序系统中,各进程可以共享各类资源,但有些资源一次只能供一个进程使用。需要互斥访问的资源称为临界资源(critical resource),如打印机、共享变量和表格等。 解析:本题考查的是任务之间的互斥问题,即基于繁忙等待的任务互斥实现方法。在多道程序系统中,各个任务是并发执行的,由于时钟中断的原因,使任务之间的执行顺序变得难以预测,每个任务都有可能在任意一条语句的后面被中断。在这种情形下,如果要采用基于繁忙等待的互斥实现方法,就必须考察所有的可能,即如果每个任务在不同的位置被中断时,能否正确地实现任务间互斥。另外,在这种基于繁忙等待的方法下,每个任务要循环地去判断当前能否访问临界资源,这样会浪费大量的CPU时间,而且如果设计不合理,容易导致死锁。
如何用数学符号将4个7拼成10 数学 2020-05-13 …
用MATLAB画散点图并对每个点表上序号,比如说有x=1 3 7 10,y=2 4 9 43.将( 英语 2020-05-16 …
甲、乙、丙、丁四位同学的运动衫上印了不同号码,分别为1、2、3、4号.A说:“甲为2号,乙为3号. 数学 2020-06-15 …
图中的苹果、梨子、香蕉、桃子分别编上1号、2号、3号、4号,现将编号水果对调3次位置,是1号与1号 数学 2020-06-16 …
甲、乙、丙、丁四位同学的运动衫上印有不同的号码.赵说:“甲是2号,乙是3号.”钱说:“丙是4号,乙 数学 2020-06-22 …
限时2分钟!注:打有“根号”二字后面的数都在根号里面!2根号1/3=根号1+1/33根号1/4=根 数学 2020-06-25 …
运动会上,1号、2号、3号、4号运动员取得了800米赛跑的前4名,小记者采访他们各自的名次时,1号说 其他 2020-11-01 …
1号、2号、3号、4号运动员取得了运动会100米赛跑的前4名.小记者来采访他们各自的名次.1号说:“ 其他 2020-12-06 …
设有编号为1,2,3,4的4个小球和编号为1,2,3,4的4个盒子,现将4个小球放入这4个盒子内,要 数学 2020-12-31 …
设有编号为1,2,3,4的4个小球和编号为1,2,3,4的4个盒子,现将4个小球放入这4个盒子内,要 数学 2020-12-31 …