본문 바로가기

개발 언어/자바스크립트3

Node.js 작동 원리 (3) - 이벤트 루프 지난 번 살펴봤던 강의는 이벤트 루프 작동원리를 이해하기 쉽게 풀어서 설명해주었다. 그러나 이벤트 루프 내부의 각 6가지 phase가 정확하게 어떤 역할을 수행하고 있는지는 자세하게 설명해주지 않아 궁금증이 완전히 해결되지는 않았다. 따라서 각 phase에 대해 좀더 알아보기로 했다. 6가지 phases 이벤트루프는 다음의 6가지 phase로 이루어져있으며 각 phase가 순차적으로 실행된다. 각 phase는 FIFO형태의 큐로 이루어져있고 여기에 실행될 콜백들이 저장되어있다가 해당 phase의 실행 순서가 되었을 때 실행된다. 각 phase는 큐의 모든 콜백들을 다 실행시키거나 실행할수 있는 제한 횟수에 도달하면 종료되고 그 다음 phase가 실행된다. timers : setTimeout(), setI.. 2022. 6. 25.
Node JS 작동 원리 (2) - 스레드와 이벤트 루프 이 포스트는 Udemy의 NodeJs: Advanced Concepts 강의를 보고 정리한 study log입니다. 스레드 Node JS의 이벤트 루프를 이해하기 위해선 스레드에 대해 이해하고 있어야 한다. 따라서 프로세스와 스레드의 개념을 간략히 짚고 넘어가보자. 실행되기 전인 코드파일의 묶음을 우리는 프로그램이라고 부른다. 이 프로그램이 OS로 부터 메모리 자원을 할당 받아 실행될 때, 우리는 이것을 프로세스라고 부른다. 간단히 말해 프로세스는 실행되고 있는 프로그램의 인스턴스이다. 프로세스 내부에는 스레드라는 작업의 단위가 있다. 프로세스는 최소 한개 이상의 스레드를 갖는다. 이를 확인해보려면 현재 내 컴퓨터의 활성 상태(맥 OS 기준)를 보면 알 수 있다. 위와 같이 현재 실행되고 있는 프로세스는.. 2022. 3. 20.
Node JS 작동 원리 (1) - V8 엔진과 Libuv 라이브러리 이 포스트는 Udemy의 NodeJs: Advanced Concepts 강의를 보고 정리한 study log입니다. Node JS 의 구성 요소 우리가 작성한 자바스크립트 코드는 Node JS를 통해 실행된다. 보통은 node index.js 와 같은 명령어를 사용한다. NodeJS는 실행 과정에서 크게 두개의 의존성 집합을 갖게 된다. 바로 V8에 대한 의존성과 libuv라이브러리에 대한 의존성이다. V8 Engine V8 Engine은 구글에 의해 개발된 오픈소스 JavaScript 엔진이다. V8의 목적은 JS 코드를 브라우저가 아닌 환경에서 실행하는 데에 있다. Libuv 라이브러리 Libuv 라이브러리는 C++ 오픈 소스 프로젝트로 node가 OS의 파일 시스템이나 네트워크, 동시성 제어 등에 .. 2022. 3. 20.