进程P 1和P 2在以下例程中使用critical_flag 来实现互斥。假设在主程序中将critical_flag 初始化为FALSE。
get_exclusive_access ( )
{
if (critical _flag == FALSE) {
critical_flag = TRUE ;
critical_region () ;
critical_flag = FALSE;
}
}
考虑以下陈述。
一世。 P 1和P 2可以同时访问critical_region。
ii.这可能会导致死锁。以下哪项成立?
(A) (i) 是假的和 (ii) 是真的
(B) (i) 和 (ii) 都是错误的
(C) (i) 为真,(ii) 为假
(D) (i) 和 (ii) 都是真的答案: (C)
解释: 假设 P 1首先启动并执行语句 1,在系统上下文切换到 P 2 之后(在执行语句 2 之前),并且它进入 if 语句内部,因为标志仍然为假。
所以现在两个进程都处于临界区!!所以(i)是真的……(ii)是假的
绝不会发生flag为真并且if子句中没有进程’,如果有人进入临界区,它肯定会使flag = false。所以不会出现死锁。这个问题的测验