judasnow
2014-01-23 13:35:00 +08:00
我推荐这篇文章给你,注意看那个图。
----
大概说一下我自己的理解,nodejs 采用一个 "事件循环(event loop)" 这是一个单独的线程,在nodejs执行的过程中是不会退出的。另外还有很多"工作线程(worker)"。其中"工作线程是按需生成的"其完成之后会返回到“事件循环”中(通过callback)。
----
现在来看你的疑问:
1 是不是I/O操作是与cpu无关,I/O完成之后线程再继续执行?
io操作过程中 是几乎不需要 cpu 参与的 (通过dma控制器),对于 io 操作,系统(操作系统)会产生一个中断,并将当前线程调度到阻塞状态。io完成后 会将其加入待执行队列中 等待调度。
2 这里为什么是发送给操作系统,或者说为什么操作系统会有处理I/O的能力?
io操作归根到底 是由 操作系统提供的系统调用来提供的。
----
我认为你可以多了解下 计算机组成原理 以及 操作系统 这两门课的相关知识。
可以在 google 上搜索关键词: 系统调用,进程调度,dma控制器