회사 동료와 함께 읽기로 구매하고, 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
반응형
'개발공부 > NodeJS' 카테고리의 다른 글
Nodejs 내장 모듈과 객체 (0) | 2023.05.27 |
---|---|
자주 사용하는 자바스크립트 문법 (1) | 2023.05.27 |
NodeJS 크롤링 만들어보기 (cheerio) (0) | 2023.05.27 |
[Node.js 프로젝트 투입 일주일 전] 클러스터 모드 (0) | 2023.05.21 |
[Node.js 프로젝트 투입 일주일 전] 모듈 Module Require/Import (0) | 2023.05.21 |
댓글