计算机操作系统大学本科课件
设:公用信号量 mutex 表示缓冲区的个数 初值为1 (消费者)私用信号量 full 表示有界缓冲区中非空单元数 初值为0 (生产者)私用信号量 avail 表示有界缓冲区中空的单元数 初值为n deposit(data): begin P(avail) 检查缓冲区中是否有空单元 执行后n-1 P(mutex) 检查缓冲区是否可用 执行后 mutex=0 送数据入缓冲区 V(full) 执行后,非空单元数加1 0+1=1 V(mutex) 释放缓冲区中的资源 end Remove(data): begin 检查缓冲区是否有数据 P(full) P(mutex) 访问缓冲区 取缓冲区中某单元数据 V(avail) 取走数据以后,有界缓冲区的空单元个数加1 V(mutex) 释放缓冲区 end