티스토리 뷰
libuv는 비동기 I/O 작업과 이벤트 루프를 지원하는 멀티플랫폼 라이브러리입니다. Node.js의 핵심 구성 요소 중 하나로, 파일 시스템 작업, 네트워킹, 타이머, DNS 요청 등을 비동기적으로 처리할 수 있게 합니다.
libuv의 주요 역할
- 이벤트 루프(Event Loop) 관리
- Node.js의 이벤트 기반 비동기 모델을 지원하는 핵심 컴포넌트입니다.
- 비동기 작업과 콜백을 관리하며, JavaScript 코드 실행이 블로킹되지 않도록 합니다.
- 비동기 I/O 처리
- 파일 읽기/쓰기, 네트워크 요청, 타이머 등의 작업을 비동기로 수행합니다.
- 이를 통해 Node.js는 단일 스레드에서도 수천 개의 동시 연결을 처리할 수 있습니다.
- 멀티스레드 작업 처리
- libuv는 단일 스레드 이벤트 루프 외에 내부적으로 **Thread Pool(스레드 풀)**을 사용하여 블로킹 I/O 작업을 처리합니다. (Node.js 기본은 싱글스레드로 실행됩니다.)
- 예: 파일 읽기/쓰기, DNS 조회, 압축 등.
- 크로스 플랫폼 지원
- 다양한 운영 체제(Windows, macOS, Linux)를 지원하며, 각각의 OS별 차이를 추상화하여 일관된 인터페이스를 제공합니다.
libuv의 주요 구성 요소
1. 이벤트 루프(Event Loop)
- Node.js의 비동기 실행 모델의 중심입니다.
- 작업이 큐에 추가되면 이벤트 루프가 이를 처리하며, 완료 시 콜백을 실행합니다.
2. Thread Pool
- CPU 집약적 또는 블로킹 작업은 이벤트 루프에서 직접 처리하지 않고, 스레드 풀에서 실행됩니다.
- 기본적으로 4개의 스레드가 할당되며, 환경 변수(UV_THREADPOOL_SIZE)로 조정 가능합니다.
3. I/O 추상화
- 네트워크 소켓, 파일 I/O, DNS, IPC 등의 작업을 수행하며, 플랫폼에 따라 적합한 시스템 호출을 추상화합니다.
4. 타이머 관리
- setTimeout이나 setInterval과 같은 타이머 함수의 동작을 지원합니다.
libuv의 작동 방식
- 태스크 큐(Task Queue)
- 이벤트 루프가 작업 큐에 대기 중인 작업을 순차적으로 처리합니다.
- I/O 작업
- 네트워크 요청, 파일 시스템 작업 등은 비동기로 수행되며, 완료 시 콜백이 호출됩니다.
- Timers
- 타이머 콜백(setTimeout, setInterval)을 설정하고, 시간이 지나면 실행합니다.
- Check Phase 및 Close Callbacks
- 이벤트 루프의 각 단계에서 다양한 작업이 처리되며, 마지막 단계에서는 종료 작업을 처리합니다.
libuv의 활용 예
- 파일 시스템 작업
- 비동기 방식으로 파일을 읽고 쓰는 작업을 지원.
- 네트워크 작업
- HTTP 서버나 클라이언트 통신 구현.
- 타이머
- 특정 시간 이후 또는 주기적으로 작업 실행.
- DNS 조회
- 도메인 이름을 비동기로 IP로 변환.
'학습 > 용어집' 카테고리의 다른 글
데이터베이스 (0) | 2025.01.22 |
---|---|
프런트엔드 프레임워크(Front-end Framework) (0) | 2025.01.21 |
Nods.js (0) | 2025.01.19 |
클라우드 컴퓨팅(Cloud Computing) (1) | 2025.01.16 |
DevOps (0) | 2025.01.15 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- SQLite
- nosql
- Next.js
- MySQL
- DevOps
- Remix
- gcp
- 이진탐색 #중복
- vue
- nuxt.js
- Quasar
- vue.js
- Azure
- oracle
- Angular
- Cloud
- RDBMS
- Gatsby.js
- svelte
- node.js
- REACT
- alpine.js
- PostgreSQL
- aws
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함