进程P0和P1的共享变量定义及其初值为:
boolean flag[2];
int turn=0;
flag[0]=FALASE; flag[1]=FALSE;
若进程P0和P1访问临界资源的类C伪代码实现如下:
void P0( ) //进程P0
{ while(TRUE) {
flag[0]=TRUE; turn=1;
while(flag[1] && (turn==1)) ;
临界区;
flag
进程P0和P1的共享变量定义及其初值为:
boolean flag[2];
int turn=0;
flag[0]=FALASE; flag[1]=FALSE;
若进程P0和P1访问临界资源的类C伪代码实现如下:
void P0( ) //进程P0
{ while(TRUE) {
flag[0]=TRUE; turn=1;
while(flag[1] && (turn==1)) ;
临界区;
flag[0]=FALSE;
}
}
void P1( ) //进程P1
{ while(TRUE) {
flag[1]=TRUE; turn=0;
while(flag[0] && (turn==0)) ;
临界区;
flag[1]=FALSE;
}
}
则并发执行进程P0和P1时产生的情形是____。(2010全国试题)
A.不能保证进程互斥进入临界区,会出现“饿死”现象
B.不能保证进程互斥进入临界区,不会出现“饿死”现象
C.能保证进程互斥进入临界区,会出现“饿死”现象
D.能保证进程互斥进入临界区,不会出现“饿死”现象
答案:D
boolean flag[2];
int turn=0;
flag[0]=FALASE; flag[1]=FALSE;
若进程P0和P1访问临界资源的类C伪代码实现如下:
void P0( ) //进程P0
{ while(TRUE) {
flag[0]=TRUE; turn=1;
while(flag[1] && (turn==1)) ;
临界区;
flag[0]=FALSE;
}
}
void P1( ) //进程P1
{ while(TRUE) {
flag[1]=TRUE; turn=0;
while(flag[0] && (turn==0)) ;
临界区;
flag[1]=FALSE;
}
}
则并发执行进程P0和P1时产生的情形是____。(2010全国试题)
A.不能保证进程互斥进入临界区,会出现“饿死”现象
B.不能保证进程互斥进入临界区,不会出现“饿死”现象
C.能保证进程互斥进入临界区,会出现“饿死”现象
D.能保证进程互斥进入临界区,不会出现“饿死”现象
答案:D