计算机操作系统读书笔记___信号量的应用

版权声明:私藏源代码是违反人性的罪恶行为!博客转载无需告知,学无止境。 https://blog.csdn.net/qq_41822235/article/details/85344711

一个实例典型C/S模式___线程池实现

目录

一、实现进程互斥

1.1 作用

1.2 模型给出 

二、实现前趋关系

2.1 模型给出


一、实现进程互斥

1.1 作用

为使多个进程能互斥地访问某临界资源,只需为该资源设置一互斥信号量mutex,并设其初值为1(信号量初值的设置是有讲究的,和第二节做对比吧)。然后将各进程访问该资源的临界区Critical Section置于wait(mutex)和signal(mutex)操作之间即可。前者简称P操作,后者简称V操作。一个平常不过的概念源远流长足见Dijkstra的伟大。

1.2 模型给出 

图1 进程互斥示意

在利用信号量机制实现进程互斥应该注意,wait(mutex)和signal(mutex)必须成对出现。缺少wait(mutex)将会导致系统混乱,不能保证对临界资源的互斥访问;而缺少signal(mutex)将会使临界资源永远不会被释放,从而使因等待该资源而阻塞的进程不能被唤醒。

二、实现前趋关系

2.1 模型给出

在前趋图(Precedence Graph)中,每个结点可用来表示一个进程或程序段,乃至一条语句,结点间的有向边则表示两个结点之间存在偏序(Partial Order)或者前趋关系(Precedence Graph)。

图2 一个前趋图

那如何利用信号量实现图2 表现的前驱关系呢?具体到每个箭头的两端实际都是可用信号量实现的。举一反三,若要实现需要7初值为0的信号量,如下所示:

猜你喜欢

转载自blog.csdn.net/qq_41822235/article/details/85344711