1. 背景与意义
1.1 并发与同步的挑战
在多任务操作系统中,多个进程或线程可能会并发访问共享资源(如内存、设备、数据结构等)。如果没有合适的同步机制,容易导致数据竞争、死锁、资源泄漏等严重问题。为此,操作系统提供了多种同步原语,信号量(semaphore)就是其中一种经典且强大的机制。
1.2 信号量的作用
信号量是一种用于控制多个进程/线程对共享资源访问的同步工具。它可以用来实现互斥(mutex)、资源计数、生产者-消费者等多种同步场景。Linux 内核实现了两种信号量:
-
二值信号量(binary semaphore):类似互斥锁,只能取 0 或 1。
-
计数信号量(counting semaphore):可取任意非负整数,表示可用资源的数量。
Linux 内核的 struct semaphore 实现的是计数信号量。
2. semaphore 的核心原理
2.1 计数信号量的基本思想
-
信号量维护一个整数计数值
count,表示可用资源的数量。 -
P 操作(down/acquire):当进程需要访问资源时,尝试将信号量减 1。如果

订阅专栏 解锁全文
1195

被折叠的 条评论
为什么被折叠?



