Nodejs is said to use only one process to handle requests and then those function using I/O will do asynchronously, which will improve the efficiency of web server. However, those process to handle I/O doesn't count? Compared with traditional web server, like Apache, which use multithread to handle requests where every request in one thread, Is the cost(request + I/O) reduced?
Yes, node.js only needs one thread (which is an even more restrictive than requiring one process, depending on operating system). And yes, this does impact on your programming requirements:
-- your programs must never block!
There are quite a few resources you can refer to, as to why node.js is so fast, e.g.:
http://www.manning.com/cantelon/NjsiA_meap_ch01.pdf
node.js saves on the threading penalty imposed by context switching, that other servers require (see Slebetman). We built our own such server in 2004 in C++, because of high performance requirements, when your server has to open and close a lot of connections, this approach really saves a lot of resources.
I think what you are missing in your question is that node.js hands off operations that take a long time to the O/S and is called back with the answer. The O/S is fully multi-process. So node.js only NEEDS one thread for its control, but I/O is controlled by O/S processes.
node.js can however spawn additional processes, in which you can run parallel programs.