node.js는 이런 구조로 이루어져있다. 인터넷에 조금씩 다르게 나와있던데 대충 말하는 건 같아보인다. 명백한 사실관계가 궁금하면 해당 깃허브에 들어가면 node.js 프로젝트를 확인할 수 있다. src 디렉토리를 확인하면 된다.
https://github.com/nodejs/node
여기서 v8이 Javascript를 돌리는 메인 엔진이다. 크롬도 이걸 쓴다. Javascript엔진은 브라우저의 랜더링 프로세스에서 한 자리 빌려준 싱글스레드이기 때문에, 병렬로 처리되는 것처럼 보이는 비동기처리가 불가능하다. 혼자서는. 그래서 따로 비동기처리를 담당하는 libuv 엔진과 같이 돌아간다.
비동기처리를 담당하는 라이브러리다. 네트워크, 파일 I/O등의 비동기 처리를 지원해준다.
구 버전에서는 libeio, libev였는데 libuv 바뀌었다. 이벤트루프와 시스템 커널 API를 제공하여 비동기처리를 돕는다.
https://blog.naver.com/pjt3591oo/221976414901
위 블로그가 정말 잘 나와있어서 다음에 다시 읽고 공부해봐야겠다
https://yjhjstz.gitbooks.io/deep-into-node/content/chapter1/chapter1-0.html