题目
设系统中只有一台打印机,有二个用户的程序在执行过程中都要使用打印机输出计算结果。设每个用户程序对应一个进程。问:这二个进程间有什么样的制约关系?试用P,V操作写出这二个进程使用打印机的算法。
设系统中只有一台打印机,有二个用户的程序在执行过程中都要使用打印机输出计算结果。设每个用户程序对应一个进程。问:这二个进程间有什么样的制约关系?试用P,V操作写出这二个进程使用打印机的算法。
题目解答
答案
因为打印机是一种临界资源[1],所以这二个进程只能互斥地使用这台打印机。即一个用户的计算结果打印完后,另一个用户再打印,因此是互斥关系。
设两个进程分别为A和B,设一个互斥信号量[2]mutex,其初值为1,其算法如下:
A进程 B进程
P(mutex); P(mutex);
使用打印机; 使用打印机;
V(mutex); V(mutex);
解析
步骤 1:确定临界资源
打印机是一种临界资源,即在同一时间只能被一个进程使用。因此,两个进程在使用打印机时必须互斥地进行。
步骤 2:定义互斥信号量
为了实现互斥访问,我们需要定义一个互斥信号量mutex,其初值为1。信号量的值为1表示打印机可用,为0表示打印机正在被使用。
步骤 3:编写进程算法
每个进程在使用打印机之前,需要执行P操作(等待操作)来检查信号量的值。如果信号量的值为1,则进程可以使用打印机,并将信号量的值减1。使用完打印机后,进程需要执行V操作(释放操作)来将信号量的值加1,表示打印机可用。
打印机是一种临界资源,即在同一时间只能被一个进程使用。因此,两个进程在使用打印机时必须互斥地进行。
步骤 2:定义互斥信号量
为了实现互斥访问,我们需要定义一个互斥信号量mutex,其初值为1。信号量的值为1表示打印机可用,为0表示打印机正在被使用。
步骤 3:编写进程算法
每个进程在使用打印机之前,需要执行P操作(等待操作)来检查信号量的值。如果信号量的值为1,则进程可以使用打印机,并将信号量的值减1。使用完打印机后,进程需要执行V操作(释放操作)来将信号量的值加1,表示打印机可用。