进程同步通信经典问题—读者写者问题的算法分析与设计
2021-07-22曾思源徐艳
电子测试 2021年12期
曾思源,徐艳
(四川大学锦城学院计算机与软件学院,四川成都,611731)
关键字:读者和写者;同步通信;PV操作算法
0 引言
一个共享的数据集合,会面临同时被多个进程访问的情况。一个存储器,一个数据库,亦或是内存中的一个寄存器,都可以成为这个数据集合。其中一类进程只有读取数据的需求,且不会对数据进行修改,我们称此类进程为读进程。而另外一类进程会对数据集中的数据进行修改,我们称之为写进程。
无论是多少个读进程存在,都不会对数据进行修改,因此读进程是被允许同时访问的。但是写进程是不会被允许与其他读/写进程同时访问数据集,因为这将违反Bernstein条件,破坏数据的完整性、正确性。
1 读者写者问题的算法分析
1.1 信号量控制
要实现读写进程之间的互斥,我们首先想到的就是添加信号量。
在操作系统中,信号量在解决多种多样的进程同步问题起到了至关重要的作用,比如,信号量能够保证两个或者多个临界区不被并发调用。同时,信号量本质上代表的,是某种资源的可利用数量。
信号量只能通过初始化和两个标准的原语来访问--作为OS核心代码执行,不受进程调度的打断[1]。P操作减少一个信号量的值,如果它的值大于零,进程继续执行,否则就睡眠,等待唤醒;而V操作增加它的值,若有进程在此信号量上睡眠,则唤醒之[2]。
在该问题当中,我们首先尝试使用信号量rw来达到我们的需求。因为读写算法相同,所以以写算法为例。……
登录APP查看全文
