进程P0、P1:bool flag[2];int turn = 0;flag[0] = false; flag[1] = false;void P0{ while(1){ flag[0] = true; turn = 1; while(flag[1] = 1&&turn = 1); critical section; flag[0] = false; }}void P1{ while(1){ flag[1] = true; turn = 0; while(flag[0] = 1&&turn = 0); critical section; flag[1] = false; }}则并发进程P0、P1并发执行时产生的情况是______。
A: 不能能保证进程互斥进入临界区,会出现“饥饿”现象
B: 能保证进程互斥进入临界区,不会出现“饥饿”现象
C: 能保证进程互斥进入临界区,会出现“饥饿”现象
D: 不能保证进程互斥进入临界区,不会出现“饥饿”现象
A: 不能能保证进程互斥进入临界区,会出现“饥饿”现象
B: 能保证进程互斥进入临界区,不会出现“饥饿”现象
C: 能保证进程互斥进入临界区,会出现“饥饿”现象
D: 不能保证进程互斥进入临界区,不会出现“饥饿”现象
举一反三
- 进行P0和P1的共享变量定义及其初值为[br][/br] booleanflag[2]={FALSE,FALSE}; intturn=0; 若进行P0和P1访问临界资源的类C代码实现如下: voidp0()//进程p0 { while(TURE) { flag[0]=TURE; turn=1; while(flag[1]&&(turn==1)); 临界区; flag[0]=FALSE; } } voidp1()//进程p1 { while(TURE) { flag[1]=TURE; turn=0 while(flag[0]&&(turn==0)); 临界区; flag[1]=FALSE; } } [br][/br] 则并发执行进程P0和P1时产生的情况是(): A: 不能保证进程互斥进入临界区,会出现“饥饿”现象 B: 不能保证进程互斥进入临界区,不会出现“饥饿”现象 C: 能保证进程互斥进入临界区,会出现“饥饿”现象 D: 能保证进程互斥进入临界区,不会出现“饥饿”现象
- 进程P0和P1的共享变量定义及其初值为: boolean flag[2]; int turn=0; flag[0]=faulse; flag[1]=faulse; 若进程P0和P1访问临界资源的类C代码实现如下: Void P0 () //进程P0 { while (TURE){ Flag[0]=TURE;turn=1; While (flag[1]&&(turn==1)) 临界区; Flag[0]=FALSE; } } Void P1 () //进程P1 { while (TURE){ Flag[1]=TURE;turn=1; While (flag[0]&&(turn==0)) 临界区; Flag[1]=FALSE; } } 则并发执行进程P0和P1时产生的情况是:
- 进行P0和P1的共享变量定义及其初值为 boolean flag[2]={FALSE, FALSE}; int turn=0; 若进行P0和P1访问临界资源的类C代码实现如下: void p0()// 进程p0 { while(TURE) { flag[0]=TURE; turn=1; while (flag[1] &&(turn==1)); 临界区; flag[0]=FALSE; } } void p1()// 进程p1 { while(TURE) { flag[1]=TURE; turn=0 while (flag[0]&&(turn==0)); 临界区; flag[1]=FALSE; } } 则并发执行进程P0和P1时产生的情况是( ):
- 进行P0和P1的共享变量定义及其初值为 boolean flag[2]={FALSE, FALSE}; int turn=0; 若进行P0和P1访问临界资源的类C代码实现如下: void p0()// 进程p0 { while(TURE) { flag[0]=TURE; turn=1; while (flag[1] &&(turn==1)); 临界区; flag[0]=FALSE; } } void p1()// 进程p1 { while(TURE) { flag[1]=TURE; turn=0 while (flag[0]&&(turn==0)); 临界区; flag[1]=FALSE; } } 则并发执行进程P0和P1时产生的情况是( ):
- 进行P0和P1的共享变量定义及其初值为 boolean flag[2]={FALSE, FALSE}; int turn=0; 若进行P0和P1访问临界资源的类C代码实现如下: void p0()// 进程p0 { while(TURE) { flag[0]=TURE; turn=1; while (flag[1] &&(turn==1)); 临界区; flag[0]=FALSE; } } void p1()// 进程p1 { while(TURE) { flag[1]=TURE; turn=0 while (flag[0]&&(turn==0)); 临界区; flag[1]=FALSE; } } 则并发执行进程P0和P1时产生的情况是( ):