1. 싱글 스레드 이벤트 루프
Node.js는 기본적으로 싱글 스레드로 동작합니다. 즉, 하나의 스레드가 모든 작업을 처리합니다. 하지만 이는 모든 작업을 순차적으로 처리한다는 뜻이 아닙니다.
2. 이벤트 기반 비동기 I/O
Node.js의 핵심은 "이벤트 루프"와 "비동기 I/O"입니다. 일반적으로 파일 읽기, 네트워크 요청 같은 I/O 작업은 오래 걸릴 수 있는데, Node.js는 이런 작업을 비동기로 처리합니다.
비동기 작업이 요청되면, Node.js는 해당 작업을 백그라운드(예: OS의 스레드 풀)에 넘기고, 바로 다음 작업을 이어서 처리합니다.
작업이 완료되면, 등록된 콜백 함수를 이벤트 큐에 올려 실행합니다.
3. 이벤트 루프 구조
이벤트 루프는 다음과 같은 단계로 동작합니다:
- 입력 이벤트 감지: 요청을 받음 (예: 네트워크 요청, 파일 읽기 등).
- 작업 분배: 빠른 작업은 바로 처리, 느린 작업(I/O)은 백그라운드에서 처리.
- 콜백 큐에 결과 저장: 작업 완료 시 콜백을 큐에 저장.
- 콜백 실행: 큐에 있는 콜백을 하나씩 실행.
4. libuv와 멀티 스레드 활용
Node.js는 내부적으로 libuv라는 라이브러리를 사용해 실제 I/O 작업을 OS의 스레드 풀에서 처리합니다. 그래서 비동기 작업이 가능하고, CPU 작업이 아닌 I/O 작업은 병렬로 처리할 수 있습니다.
5. JavaScript 실행 (V8 엔진)
Node.js는 V8 엔진(크롬에서 사용하는 JS 엔진)으로 JavaScript 코드를 실행합니다.
개발자는 JavaScript로 코드를 작성하고, Node.js가 이를 V8 엔진으로 실행합니다.
'STUDY > [ NodeJs ]' 카테고리의 다른 글
| npm을 이용해 오픈소스 배포하기 (0) | 2026.01.10 |
|---|---|
| 0918 map 객체 express (0) | 2025.09.18 |
| nodejs 기본 생태계 (0) | 2025.09.15 |
| 0915 HTTP EXPRESSSSS (0) | 2025.09.15 |
| HTTP method / NodeJS / 모듈, 라이브러리, 프레임워크 (0) | 2025.09.14 |