当同步的i / o调用尚未返回时,CPU正在执行什么操作

时间:2014-09-06 10:17:56

标签: node.js api operating-system

CPU是否继续检查某些状态以查看是否返回了I / O调用?

我问这个问题只是因为我想了解为什么 async 模式服务器(如nodejs)可以处理更多的并发请求。

如果在没有返回同步I / O调用时CPU只是空闲,那么服务器可以启动新线程来处理新请求,因为它仍然有足够的CPU资源。

1 个答案:

答案 0 :(得分:2)

如果执行同步I / O,则会阻止您的进程(或线程),直到操作完成。这就是它被称为同步的原因。那段时间内CPU在做什么?服务其他流程。大多数现代操作系统都采用相同的方式安排"从多个进程工作,因此即使有比处理器更多的作业,也没有一个被完全剥夺,当I / O导致进程不再可运行时,就会发生调度。如果没有可用的可运行进程,则处理器可以暂停一段时间。

异步(也称为非阻塞,偶数)I / O是不同的。在一个进程中,您可以在等待I / O事件时执行更多工作。这就像您在自己的流程中安排工作,而不是依靠操作系统来选择等待I / O时要做的工作。 Node.js可以处理许多并发连接,因为所有I / O都是在非阻塞模式下完成的,因此单个Node.js进程可以实现单个处理器内核的高级利用率,并且永远不会等待任何事情(除了当然,真正受CPU限制的计算,但大多数Node.js程序都没有那么多。)