【问题】 设A、B两个进程共用一个缓冲区Q,A向Q写入信息,B从Q读出信息,算法框图如图所示。判断该同步问题的算法是否正确?若有错,请指出错误原因并予以改正。

设A、B两个进程共用一个缓冲区Q,A向Q写入信息,B从Q读出信息,算法框图如图所示。判断该同步问题的算法是否正确?若有错,请指出错误原因并予以改正。

正确答案:这个算法不正确。 因为A、B两进程共用一个缓冲区Q,如果A先运行,且信息数量足够多,那么缓冲区Q中的信息就会发生后面的冲掉前面的,造成信息丢失,B就不能从Q中读出完整的信息。 进行改正:A、B两进程要同步使用缓冲区Q。为此,设立两个信号量:empty表示缓冲区Q为空,初值为1;full表示缓冲区Q为满,初值为0。 算法框图如图所示。 A进程 B进程

题目解析:本题出自郑州大学,国家开放大学操作系统,由丰阳塔题库搜集整理。