[真1][12][单选]对于如下银行存款的程序
typedef semaphore; semaphore dblock; dblock = 0; int deposit(id, int c) // 存款例程,id是用户号,c为存入现金额 { int n; P(dblock); // P操作(申请锁) n = fetch(balance); // 从服务器取存款余额 n = n + c; // 存款余额加存入现金额 send(n); // 送回新余额 V(dblock); // V操作(释放锁) output(n); // 打印余额凭条 }
其中,fetch(balance)语句的作用是
测试是否能正确进入临界区
访问临界资源
将“正在访问临界区”的标志清除
访问临界资源之外的其余部分
答案
访问临界资源
解析
程序中的存款账户是属于临界资源,同一时刻只能有一个进程对其进行操作,所以 P(s语句是用于进程进入临界区操作,V(s语句是用于进程离开临界区操作。而 fetch(balance语句是用于对临界资源进行访问,所以选择 B 选项。
转载请注明出处。