32、Solaris 系统中的进程间通信:System V 信号量与消息队列详解

Solaris 系统中的进程间通信:System V 信号量与消息队列详解

1. System V 信号量概述

信号量是一种用于同步多个进程对共享资源访问的机制。其概念源于铁路信号系统,通过机械臂的摆动来控制列车的通行。在计算机软件中,信号量的使用由荷兰数学家 E. W. Dijkstra 于 1965 年提出。Dijkstra 定义了两个基本的信号量操作:P(wait)和 V(signal)。P 操作会尝试将信号量的值减 1(前提是信号量大于 0),而 V 操作会将信号量的值加 1。这两个术语分别来自荷兰语“Probeer”(尝试)和“Verhoog”(增加)。

信号量可以作为二进制锁用于独占访问,也可以作为计数器管理有限数量的共享资源。当一个进程需要资源时,信号量的值减 1;当进程使用完资源后,信号量的值加 1。如果信号量的值为 0,则表示当前没有可用资源,调用进程会被阻塞,直到其他进程释放资源。

在 Solaris 系统中,System V 信号量支持信号量集,即一个唯一的信号量标识符可以包含多个信号量。信号量集的创建通过 semget(2) 系统调用完成,其第二个参数决定了与该标识符关联的信号量数量。

2. 信号量内核资源

信号量的内核参数是可调整的,这些参数决定了内核为信号量分配的资源。以下是一些重要的内核参数及其作用:
| 参数名 | 默认值 | 最大值 | 数据类型 | 描述 |
| — | — | — | — | — |
| semmap | 10 | 20 亿 | 有符号整数 | 信号量资源映射的大小 |
| semmni | 10 | 65536

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值