UTF*_*F-8 4 cpu privileges kernel semaphore system-calls
我正在通过过去的考试来准备有关操作系统的考试。它主要是关于 Unix 系统、C 编程语言,并且多次提到 POSIX,所以最好在这里问这个问题。
问题是:
给出简单自旋锁和/或信号量的三个缺点。解释相应的其他机制如何改进该问题。
给出的 3 个缺点之一 + 解释是:
即使线程可以立即继续,信号量也需要系统调用。(0.5 P) 另一方面,自旋锁可以完全在用户空间中实现,并且不需要系统调用。他们对于较短的等待时间非常高效。(0.5P)
为什么信号量需要系统调用?它们必须在内核空间中吗?它们是否需要执行特权指令?
单处理器和多处理器系统都需要考虑。
小智 5
一些历史背景会让事情变得更清楚。在 POSIX IPC 出现之前,信号量最初是 System V 进程间通信包 (System V IPC) 的一部分。这些名字可能会给你一些线索,让你知道事情的发展方向。最初的用例是协作进程共享的锁。(我 99.99% 确信 IPC 比线程早了很长一段时间。)
POSIX 信号量与进程或线程一起工作,因此涉及操作系统。上下文在这里很重要,因为答案显然是关于标准信号量实现,而不是信号量的抽象概念。