본문 바로가기
개발공부/NodeJS

[Node.js 프로젝트 투입 일주일 전] Nodejs 란?

by bzerome240 2023. 5. 17.

 

회사 동료와 함께 읽기로 구매하고, 1회 완독 하였다~

그 후 포인트 정리하기!

 

Nodejs란 ?

Chrome V8 엔진으로 빌드된 Javascript 런타임이다.

 

Nodejs 특징

 

특징1) 논블로킹 I/O

 

자바스크립트는 한번에 하나의 작업을 처리하지만

I/O 작업의 경우는 동시에 처리가 가능하다. ex) 파일 읽기/쓰기, 데이터베이스 데이터 전송/조회

 

* 논블로킹: 함수를 호출하면 해당 함수에 제어권을 넘겨줘 다른 작업을 바로 진행할 수 있도록 하는 방식 (= 비동기)

* 블로킹: 함수를 호출하면 해당 함수가 작업을 마칠때까지 제어권을 주지 않고 대기하는 방식 (= 동기)

 

특징 2) 싱글 스레드

 

* 프로세스: 작업 처리를 위해 작업 단위를 두고 프로세스를 통해 작업을 처리한다.

* 스레드: 프로세스 안에서 작업을 처리하기 위해 실행되는 단위

 

Nodejs 실행 -> 프로세스 생성 -> 프로세스 안에 여러개의 스레드 생성

But Nodejs에서는 직접 제어할 수 있는 스레드는 하나밖에 없기 때문에 싱글 스레드 방식이라고 부른다.

 

정리하자면, Nodejs는 자바스크립트 실행 부분에 대해서만 싱글 스레드로 구성돼있고, 논블로킹 I/O와 이벤트 루프를 통해 여러 작업을 할 수 있도록 해준다.

 

특징 3) 이벤트 루프

 

* 자바스크립트 엔진 = 메모리 힙 + 콜 스택

* 메모리 힙: 메모리 할당이 일어나는 컴포넌트

* 콜 스택: 코드 실행을 위한 컴포넌트

 

자바스크립트는 하나의 콜 스택(call stack)을 가지고 있다.

콜스택에서 실행한 비동기 함수는web APIs를 호출한다. -> web APIs는 콜백함수를 콜백 큐에 넣는다.

이벤트 루프는 콜스택과 콜백큐의 상태를 체크한다. -> 콜스택이 빈 상태가 되면 콜백큐의 첫번째 콜백을 콜스택으로 이동시킨다. (반복 = tick)

 

자바스크립트는 싱글스레드지만, 브라우저 내에서 비동기 함수인 web APIs와 콜백큐, 이벤트 루프 때문에 멀티스레드처럼 동시에 작업 처리가 가능하다.

 

 

 

 

 

 

728x90
반응형

댓글