我一直在研究扭曲和node.js框架的工作原理,我试图准确地了解操作系统如何使用回调支持I/O操作。

我了解这很好,因为我们需要更少的线程,因为我们不需要阻止线程等待I/O操作。但是,一旦I/O完成,就必须打电话给回调。

操作系统是如何实现这一点的呢?

有帮助吗?

解决方案

一种方法是让操作系统附加信息,任何人都等待回调到相关的数据结构,如内核中的等价文件描述符你等待有关读取通知。当事情发生到文件描述符,操作系统扫描服务员,看是否有应得到通知。如果他们应该,那么它这样做。你可以读到一个实现这柠檬的论文介绍FreeBSD的kqueue机制的。特别参见第6节,“实施”,子部分3和4中,“活动的事件源”和“传送”。

其他提示

这在操作系统中通过使用“I/O 事件通知设施/接口”来解决,例如 epoll, 民意调查, 队列 或选择。

看一眼 麻利, ,尤其是它的' io/事件循环 具体示例如何使用上述“通知系统”。(java.nio.channels.Selector java nio 是为此提供抽象的方法。)

免责声明:我是一个熟练的提交者

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top