• 2021-04-14
    进行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时产生的情况是( ):
  • 能保证进程互斥进入临界区,不会出现“饥饿”现象

    举一反三

    内容

    • 0

      进程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: 不能保证进程互斥进入临界区,不会出现“饥饿”现象

    • 1

      接上题,如果要把代码省略处的代码补充完整、正确,应选择( )。 A: mux2_1 U3( .line[0](p0), .line[1](p1), .s[1](s), .f(f)); B: mux2_1 U3( .p0(p[0]), .p1(p[1]), .s(s[1]), .f(f)); C: mux2_1 U3( .p0(line[0]), .p1(line[1]), .s(s[0]), .f(f) ); D: mux2_1 U3( .p0(line[0]), .p1(line[1]), .s(s[1]), .f(f) );

    • 2

      如下BOOL变量flag与“零值”比较的if语句正确的是:() A: if(flag==TRUE)或者if(flag==FALSE) B: if(flag==1)或者if(flag==0) C: if(flag==0)或者if(flag!=0) D: if(flag==true)或者if(flag==false)

    • 3

      以下代码运行后输出的内容()int main(){bool flag;flag = flag | ~flag;cout << flag;return 0;} A: true B: false C: 1 D: 0

    • 4

      二进制基带传输系统的总误码率表示为( )。 A: Pe=P(0)P(0/1)+P(0)P(1/0) B: Pe=P(1)P(0/1)+P(0)P(1/0) C: Pe=P(1)P(0/1)-P(1)P(1/0) D: Pe=P(1)P(0/1)-P(0)P(1/0)