单选题
1分
为正确使用临界资源,可把对临界资源的访问分成进入区、临界区、退出区和剩余区四部分。请指出下列飞机订票代码中output(list)语句属于哪一个区域( )。int bo...
为正确使用临界资源,可把对临界资源的访问分成进入区、临界区、退出区和剩余区四部分。请指出下列飞机订票代码中output(list)语句属于哪一个区域( )。
int booking(id) //订票例程
{
int c;
while TS(&lock); //Test-and-Set指令
c=fetch(ticket); //从服务器取剩余票额
show(c); //显示
if (read(input)=1) //是否订票( )。
{
c=c-1; //票额减1
send(c); //送回新数据
}
lock = FALSE; //置标志为F
output(list); //打印机票
}
int booking(id) //订票例程
{
int c;
while TS(&lock); //Test-and-Set指令
c=fetch(ticket); //从服务器取剩余票额
show(c); //显示
if (read(input)=1) //是否订票( )。
{
c=c-1; //票额减1
send(c); //送回新数据
}
lock = FALSE; //置标志为F
output(list); //打印机票
}
参考答案: D
参考解析: 【解析】对临界资源的访问,必须互斥地进行,在每个进程中,访问临界资源的那段代码称为临界区。为了保证临界资源的正确使用,可以把临界资源的访问过程分成四个部分:①进入区:为了进入临界区使用临界资源,在进入区要检查可否进入临界区,如果可以进入临界区,通常设置相应的“正在访问临界区”的标志,以阻止其他进程同时进入临界区。②临界区:进程中访问临界资源的那段代码,又称临界段。③退出区:将“正在访问临界区”的标志清除。④剩余区,代码中的其余部分。在此段代码中:
while TS(&lock);是临界资源访问过程中的进入区。
c=fetch(ticket); //从服务器取剩余票额
show(c); //显示
if (read(input)=1) //是否订票( )。
{
c=c-1; //票额减1
send(c); //送回新数据
} 是临界资源访问过程中的临界区。
lock = FALSE; 是临界资源访问过程中的退出区。
output(list); 是临界资源访问过程中的剩余区。故选择D选项。