1、 DOS Windows9X WindowsNT Linux UNIX Windowsxp 第3章进程管理PV操作专题 本课程内容 第1章绪论第2章操作系统用户界面第3章进程管理第4章处理机调度第5章存储管理第8章文件系统第9章设备管理 例4 三个进程PA PB和PC协作解决文件打印问题 PA将文件记录从磁盘读入主存的缓冲区1 每执行一次读一个记录 PB将缓冲区1的内容读出并读入到缓冲区2 每执行一次读出并读入一个记录 PC将缓冲区2的内容打印出来 每执行一次打印一个记录 缓冲区1的大小和m个记录大小一样 缓冲区2的大小和n个记录大小一样 请用P V操作来保证文件的正确打印 解答 设置四个信号
2、量empty1 empty2 full1 full2 mutex1和mutex2 信号量empty1和empty2分别表示缓冲池1和缓冲池2是否为空 其初值为m和n 信号量full1和full2分别表示缓冲池1和缓冲池2是否有记录供读出 其初值均为0 信号量mutex1和mutex2分别表示对缓冲池1和缓冲池2的访问互斥 其初值为1 其进程间的同步与互斥关系如下 intempty1 m intempty2 n intfull1 0 intfull2 0 intmutex1 1 intmutex2 1 main PA PB PC PA while 1 从磁盘读出一个文件记录 p empty1 p
3、 mutex1 将一个文件记录读入缓冲池1 v mutex1 v full1 PB while 1 p full1 p mutex1 从缓冲区1中读出一个文件记录 v mutex1 v empty1 p empty2 p mutex2 将一个记录读入缓冲区2 v mutex2 v full2 PC while 1 p full2 p mutex2 从缓冲池2读出一个文件记录打印 v mutex2 v empty2 例5 有三个进程A B C 其中A与B构成一对生产者和消费者 共享一个由n个缓冲区块组成的缓冲池1 B与C也构成一对生产者与消费者 共享另一个由m个缓冲块组成的缓冲池2 用P V操作
4、描述它们之间的同步关系 解答 设置四个信号量empty1 empty2 full1和full2 其同步关系描述如下 intempty1 n 表示缓冲池1中的空缓冲区数 intempty2 m 表示缓冲池2中的空缓冲区数 intfull1 0 表示缓冲池1中装满产品的缓冲区数 intfull2 0 表示缓冲池2中装满产品的缓冲区数 main cobeginPA PB PC Coend PA while 1 生产一件产品 P empty1 将一件产品放入缓冲池1 V full1 PB while 1 P full1 从缓冲池1中取出一件产品 V empty1 P empty2 将一件产品放入缓冲池2 V full2 PC while 1 P full2 从缓冲池2中取出一件产品 V empty2