单选题 进程P0和进程P1的共享变量定义及其初值为:

若进程P0和进程P1访问临界资源的类C代码实现如下:
【正确答案】 D
【答案解析】此算法实现互斥的主要思想在于设置了一个turn变量,用于进程问的互相“谦让”。
一般情况下,如果进程P0试图访问临界资源,设置flag[0]=true,表示希望访问。此时如果进程P1还未试图访问临界资源,则flag[1]在进程上一次访问完临界资源退出临界区后已设置为false。所以进程P0在执行循环判断条件时,第一个条件不满足,进程P0可以正常进入临界区,且满足互斥条件。
我们需要考虑的是,两个进程同时试图访问临界资源的情况。注意,turn变量的含义:进程在试图访问时,首先设置自己的flag变量为true,表示希望访问;但又设置turn变量为对方的进程编号,表示“谦让”,因为在循环判断条件中turn变量不是自己编号时就循环等待。这时两个进程就会互相“谦让”,但是这不会造成“饥饿”的局面,因为turn变量会有一个最终值,所以必定有进程可以结束循环进入临界区。实际的情况是,先作出“谦让”的进程先进入临界区,后作出“谦让”的进程则需要循环等待。
其实这里可以想象为两个人进门,每个人进门前都会和对方客套一句“您走先”。如果进门时没别人,就当和空气说句废话,然后大步登门入室;如果两人同时进门,就互相“谦让”,但各自只客套一次,所以先客套的人请完对方,就等着对方请自己,然后光明正大进门。