Node.js가 정확히 뭐야?
: Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임
이라고 정의되어 있다..
더 알아보자!
JavaScript 런타임 :
자바스크립트로 구현된 프로그램을 해석하고 실행할 수 있는 환경
Chrome V8 JavaScript 엔진 :
본래의 자바스크립트는 브라우저 안에서만 동작을 할 수 있었다.
(왜냐면 브라우저만이 유일하게 자바스크립트로 구현된 프로그램을 해석 및 실행할 수 있는 자바스크립트 런타임을 내장하고 있었기 때문)
그리고 여러가지 내부 사정들이 있었고..
그 결과 V8엔진을 통해 브라우저 밖에서도 자바스크립트를 실행할 수 있도록 개발되었다!
결국, Node.js는 브라우저(크롬)에 사용된 V8엔진을 이용해 브라우저 밖에서도 js를 실행할 수 있도록 개발된 것이다!!!
nodejs의 특징에 대해 알아보자
- 가볍고,
- 빠르고,
- 좋은 성능을 제공
(1) 논블로킹(Non-blocking) I/O
블로킹 : 함수 호출 후 , 함수가 완전히 종료될 때까지 다른 작업을 진행하지 못하고 기다려야 함
논블로킹 : 호출된 함수가 실행되는 중에도 다른 작업을 동시에 진행할 수 있음
(2) 싱글 스레드(-> 하나의 콜 스택을 가짐)
: 스레드하나만 이용 동시에 하나의 작업만을 처리(여러 작업 동시 처리 안됨)
(프로세스 : 작업 단위)
(리소스 : CPU, 메모리, 저장 공간)
(3) 이벤트 루프(Event Loop)
- 자바스크립트 엔진을 이루는 2가지 주요 컴포넌트 :
- (1) 메모리 힙(메모리 할당이 일어나는 컴포넌트)
- (2) 콜 스택(코드 실행을 위한 컴포넌트)
- 자바스크립트가 콜 스택에서 실행한 비동기 함수는 Web APIs를 호출 > web apis는 콜백함수를 콜백 큐에 넣는다.
- - 이벤트 루프는 콜스택과 콜백 큐의 상태를 체크, 콜 스택이 빈 상태가 되면 콜백 큐의 첫 번째 콜백을 콜 스택으로 이동(틱(tick)//이런 과정이 반복적으로 일어남)
따라서 멀티 스레드처럼 동시에 다중 작업을 처리하는 효과를 볼 수 있다
728x90