有3个并发进程R、M、P,它们共享同一个缓冲区,假定缓冲区只能存放一条记录。进程R负责从输入设备读信息,每读入一个记录后,就把它放进缓冲区;进程M在缓冲区中加工读入的记录;进程P把加工后的记录打印输出。读入的记录经加工输出后,缓冲区又可以存放下一个记录。试写出他们能够正确执行的并发程序(见图16—9)。
举一反三
- 有三个并发进程R、M、P,它们共享一个可循环使用的缓冲区B,缓冲区B共有N个单元,三个进程不允许同时访问缓冲区。进程R负责从输入设备读信息,每读入一个字符后,把它存入缓冲区B的一个单元中;进程M负责处理读入的字符,若发现读入的字符中有空格符,则把它改成“,”;进程P负责把处理后的字符取出并打印输出。(1)请分析三个进程之间的互斥和同步关系(2)说明信号量的设置、初值及含义。(3)请用P、V操作写出它们能正确并发执行的程序。
- 有三个并发进程,R负责从输入设备读入信息并传送给M,M将信息加工后并传送给P,P把加工后的信息打印输出。现有:(1)一个缓冲区;(2)两个缓冲区;用PV操作写出这三个进程能正确工作的程序。
- 有三个并发进程:R 负责从输入设备读入信息块,M 负责对信息块加工处理;P 负责打印输出信息块。今提供; l )一个缓冲区,可放置k个信息块; 2 )二个缓冲区,每个可放置k个信息块;M从一个缓冲区中取数据加工处理,将结果放到另外一个缓冲区。 试用信号量和P 、V 操作写出三个进程正确工作的流程。
- 设有一缓冲池P,P中含有20个可用缓冲区,一个输入进程将外部数据读入P,另有一个输出进程将P中数据取出并输出。若讲程每次操作均以一个缓冲区为单位,试用记录型信号量写出两个进程的同步算法,要求写出信号量的初值。
- 有三个进程PA,PB和PC协作解决文件打印问题,见图3-26所示,PA将文件记录从磁盘读入内存的缓冲区1,每执行一次读一个记录;PB将缓冲区1的内容复制到缓冲区2,每执行一次复制一个记录;PC将缓冲区2的内容打印出来,每执行一次打印一个记录。缓冲区的大小和一个记录大小一样。请用P、V操作来保证文件的正确打印。[img=1192x274]17e0cd550a508cf.png[/img]