谁管理互斥和朋友?

时间:2013-07-24 21:56:43

标签: synchronization operating-system

互斥体,信号量,事件等是否被视为操作系统内核的一部分,或者它们是通常随操作系统提供的单独的用户级库?

调用信号量上的操作是否涉及系统调用(interrupt / trap / ring-0)?

理论上,我是否可以编写一个用户级同步/锁定库(不是线程管理,只是同步/锁定!),它不会在幕后调用OS函数?

如果我要编写一个多线程操作系统内核,我是否必须包含诸如create / release / grab semaphore之类的内容,或者我是否可以使用为我的操作系统编译的现有库?


正如你所看到的,我对这个问题有点困惑。这些都是不同格式的基本相同的问题。

我对OS理论答案感兴趣,以及“这是如何在Linux / Windows /其他* nix中完成的”答案。

1 个答案:

答案 0 :(得分:1)

这个问题过于宽泛,取决于操作系统。您应该查看以下问题:Mutex access and system callwho wakes up a process which is blocked because it executed wait on a semaphore unsuccessfully?

基本上一个尝试使用比较和交换来避免系统调用,然后回退到系统调用以使线程处于睡眠状态。