【发布时间】:2019-08-19 23:29:36
【问题描述】:
OSTEP 书籍the Locks Chapter 的第 28.5 节表明,禁用中断可实现单处理器系统中线程之间的互斥。我不明白:如果持有锁的线程在临界区调用一些系统调用怎么办?在这种情况下,它会在释放锁之前放弃 CPU,因此另一个等待锁的线程也可能进入临界区。我浏览了该部分,但找不到答案。
根据另一个lecture notes、Internal events are thread does something to relinquish the CPU 和Preventing internal events is easy 的幻灯片2。然后幻灯片 3 通过禁用中断来解释与 OSTEP 书中相同的锁定实现。
虽然我有点确认确实有必要考虑持有锁的线程自己放弃CPU的情况,但我仍然有两个问题:
- 为什么上述两个参考中的实现只考虑禁用中断而忽略内部事件处理?
- 为什么内部事件容易预防?如何实现?我想出的唯一解决方案是阻止线程在临界区调用任何系统调用,这在我看来过于严格。
谁能与我分享智慧?
【问题讨论】:
标签: multithreading concurrency operating-system locking