有如下银行存款的程序
int deposit(id, int c) //存款例程,id 是用户号,c 为存入现金额 { int n; while TS(&lock); // Test-and-Set 指令 n=fetch(balance); //从主服务器取存款余额 n=n + c; //存款余额加存入现金额 send(n); //送回新余额 lock = FALSE; //置标志为 F output(n); //打印余额凭条 }
上述程序中,output(n)指令的作用是
临界资源访问过程中的进入区
临界资源访问过程中的临界区
临界资源访问过程中的退出区
临界资源访问过程中的剩余区
答案
临界资源访问过程中的剩余区
解析
在上述银行存款的程序中,output(n) 指令的作用是临界资源访问过程中的剩余区的一部分。
解释如下:
进入区:这是进程试图进入临界区的代码段,它通常包含了对互斥锁的检查和获取操作。在提供的代码中,while TS(&lock); 语句是进入区的一部分,因为它使用了 Test-and-Set 指令来尝试获取锁。
临界区:这是进程实际访问临界资源的代码段。在提供的代码中,n=fetch(balance); 到 send(n); 这一段代码是临界区,因为它包含了实际的存款操作,即更新账户余额。
退出区:这是进程离开临界区的代码段,它通常包含了对互斥锁的释放操作。在提供的代码中,lock = FALSE; 语句是退出区的一部分,因为它释放了锁,允许其他进程获取锁并进入临界区。
剩余区:这是进程在退出临界区之后的代码段,它不再涉及对临界资源的访问。在提供的代码中,output(n); 语句是剩余区的一部分,因为它是在锁被释放后执行的,用于打印余额凭条。这段代码不涉及对临界资源的访问,而是在完成了所有的临界资源操作之后执行的。
因此,output(n) 指令的作用是临界资源访问过程中的剩余区的一部分,它的目的是在进程完成对临界资源的访问后,执行一些非关键的操作,例如打印余额凭条。