티스토리 뷰

학습/용어집

libuv 라이브러리(Node.js)

대싕:) 2025. 1. 19. 23:36

libuv비동기 I/O 작업이벤트 루프를 지원하는 멀티플랫폼 라이브러리입니다. Node.js의 핵심 구성 요소 중 하나로, 파일 시스템 작업, 네트워킹, 타이머, DNS 요청 등을 비동기적으로 처리할 수 있게 합니다.

 

libuv의 주요 역할

  1. 이벤트 루프(Event Loop) 관리
    • Node.js의 이벤트 기반 비동기 모델을 지원하는 핵심 컴포넌트입니다.
    • 비동기 작업과 콜백을 관리하며, JavaScript 코드 실행이 블로킹되지 않도록 합니다.
  2. 비동기 I/O 처리
    • 파일 읽기/쓰기, 네트워크 요청, 타이머 등의 작업을 비동기로 수행합니다.
    • 이를 통해 Node.js는 단일 스레드에서도 수천 개의 동시 연결을 처리할 수 있습니다.
  3. 멀티스레드 작업 처리
    • libuv는 단일 스레드 이벤트 루프 외에 내부적으로 **Thread Pool(스레드 풀)**을 사용하여 블로킹 I/O 작업을 처리합니다. (Node.js 기본은 싱글스레드로 실행됩니다.)
    • 예: 파일 읽기/쓰기, DNS 조회, 압축 등.
  4. 크로스 플랫폼 지원
    • 다양한 운영 체제(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의 작동 방식

  1. 태스크 큐(Task Queue)
    • 이벤트 루프가 작업 큐에 대기 중인 작업을 순차적으로 처리합니다.
  2. I/O 작업
    • 네트워크 요청, 파일 시스템 작업 등은 비동기로 수행되며, 완료 시 콜백이 호출됩니다.
  3. Timers
    • 타이머 콜백(setTimeout, setInterval)을 설정하고, 시간이 지나면 실행합니다.
  4. Check Phase 및 Close Callbacks
    • 이벤트 루프의 각 단계에서 다양한 작업이 처리되며, 마지막 단계에서는 종료 작업을 처리합니다.

 

libuv의 활용 예

  1. 파일 시스템 작업
    • 비동기 방식으로 파일을 읽고 쓰는 작업을 지원.
  2. 네트워크 작업
    • HTTP 서버나 클라이언트 통신 구현.
  3. 타이머
    • 특정 시간 이후 또는 주기적으로 작업 실행.
  4. 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
«   2025/01   »
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
글 보관함