OS 总是服务器吗?

Is the OS always the server?

鉴于服务器-客户端模型,OS 会向应用程序发起消息,还是消息传递总是由想要使用资源的程序发起,因此必须与 OS 通信?

OS是重载词,应用是模糊词。

纯消息传递 OS 可能会在应用程序中实现传统 (unix) 系统调用。例如,您可能有一个名为 FileSystem 的应用程序,它接受 Read、Write、Open、Close...等消息。在这些应用程序中,这样的应用程序将被视为 server,并且客户端 将是一个想要使用文件服务的应用程序。

纯消息传递系统通常难以处理异步事件。当你在消息传递系统中实现一个正常的 read 系统调用时,很自然地它会是一个 RPC:客户端发送一个读取请求,然后挂起直到服务器满足阅读并发送了回复。

当客户端想要异步通知时,比如有新的鼠标事件可用时给我发消息; RPC 有点下降。虽然存在纯粹的异步系统,但它们很难与普通的旧编程语言(如 C、C++... ]

更高级别的 OS 类服务可以部署多种交互方法,与客户端服务截然不同。发布-订阅是 1980 年代多重捕获的最新重新实现,在过去十年中一直很流行。客户订阅他们感兴趣的一组频道,并且在该频道退役之前,传递到该频道的每个事件都会被复制到订阅该频道的每个客户。普通客户端也可以生成事件,因此该机制充当模块之间的动态互连。

Dbus + zeromq是不同规模的P-S系统。请注意,两者都可以在传递 OS.

的消息之外实现