Node.js의 동작원리

airbus·2025년 2월 10일

프로그래머스

목록 보기
7/93

Node.js

  • chrome의 V8 엔진으로 만들어진 자바스크립트 런타임(실행환경)입니다.

    • 예전에는 자바스크립트는 브라우저에서만 작동했습니다. -> node.js로 여기저기서 사용 가능해진 것.


      각 브라우저 별 엔진
      브라우저엔진
      chromeV8
      IEChakra
      SafariJavascriptCore
      Firefoxspider monkey
      Operablink, V8, Webkit

보충 (node.js)

  • Node.js는 서버도 아니고, 백엔드 프레임 워크도 아닙니다.
  • Node.js는 Javascript가 서버로서의 역할을 할 수 있는 기능을 제공합니다.

libuv

Node.js 내부에는 libuv(라이브러리)가 있습니다.

libuv라이브러리의 역할

  • 이벤트루프 : 이벤트 발생시 이벤트리스너의 콜백함수가 실행되는 방식으로 동작.
  • 논블로킹 I/O : 작업 진행시 기다리지 않고. 다른 작업을 진행합니다.

이벤트 기반
setTimeout를 예시로
1. 실행해야 하는 함수 setTimeout를 스택에 올립니다.
2. 실행되는 함수내용이(callback run)은 백그라운드로 보내집니다.
3. setTimeout에서 설정된 시간만큼 백그라운드에서 대기 후 태스크 큐로 보냅니다.
4. 호출 스택이 비워지면 태스크 큐에서 run을 불러와 실행합니다.
5. 반복
참고영상 - Node.js의 동작원리

보충 (자료구조)

  • , FIFO(First In First Ous) 선입선출 : 톨게이트를 통과하는 자동차처럼 먼저 진입한 차가 먼저 빠져나감
  • 스택, LIFO(Last In First Out) 후입선출 : 책을 쌓듯이 아래서부터 데이터를 쌓아올리는 형태

논블로킹 I/O
I/O 작업들을 백그라운드로 넘기고 동시에 처리될 수 있는것들은 묶어서 처리합니다.

I/O (input output) : 입출력, 파일접근, 네트워크요청, CRUD, api 등


Node.js 는 싱글스레드?

  • Node프로세스 중에서 개발자가 컨트롤 가능한 스레드가 한 개 뿐이여서 싱글스레드라고 하지만, 정확히는 싱글 스레드가 아닙니다.

보충 (프로세스와 스레드)
프로세스 : 운영체제에서 프로그램을 실행하는 작업 단위
스레드 : 프로세스 내에서 실행되는 흐름의 단위

노드가 싱글스레드로 동작하지 않는 경우

  1. 스레드 풀 : 암호화, 파일입출력, 압축 등을 할 때 멀티 스레딩으로 처리합니다.
  2. 워커스레드 : 개발자가 직접 다수의 스레드를 처리하는 것.
    영상을 압축하거나 디코딩 같은 CPU집약적인 작업을 하는 경우 직접 다수의 스레드를 사용하는 것.

참고한 블로그와 사이트들

0개의 댓글