-1

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

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

理论上,我是否可以编写一个不会在后台调用操作系统功能的用户级同步/锁定库(不是线程管理,只是同步/锁定!)?

如果我要编写一个多线程操作系统内核,我是否必须包含诸如创建/发布/抓取信号量之类的东西,或者我是否可以只附带为我的操作系统编译的现有库?


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

我对操作系统理论答案以及“这就是它在 Linux/Windows/其他一些 *nix 中的完成方式”答案感兴趣。

4

1 回答 1

1

这个问题太宽泛了,取决于操作系统。你应该看看以下问题:互斥访问和系统调用谁唤醒了一个被阻塞的进程,因为它在信号量上执行等待失败?

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

于 2013-07-24T22:04:44.657 回答