1. Node.js : Chrome V8 Javascript 엔진으로 빌드된 JavaScript 런타임
1) 이벤트투프
2) 논블로킹 I/O : 시스템의 실행흐름을 제어하는 방식. 여러 작업을 동시에 처리할 수 있음
3) 싱글 스레드 : 하나의 스레드르 사용. 동시에 하나의 작업만을 처리.
싱글스레드로 동작하지만 I/O 작업이 발생한 경우 이를 비동기적으로 처리하여 여러작업을 동시에 처리
javascript를 브라우저가 아닌 컴퓨터에서 브라우저 없이 실행하게 도와주는 환경.
핵심적인 코어 라이브러리 + V8 엔진 + libuv라는 라이브러리가 가능하게 한다.
여기서 libuv는 Node.js가 비동기 I/O작업을 수행할 수 있게 해주는 중요한 라이브러리. 요청을 효율적으로 처리할 수 있다.
장점
싱글 스레드는 생성과 관리에 드는 부담을 줄여주며 컴퓨팅 리소스를 효율적으로 사용할 수 있게 함. 그리고 여러 스레드가 공유하는 자원에 대한 동시접근 문제=동시성문제(Race condition)을 방지한다.
연결 요정의 부하에 따른 서버 확장이 매우 자유롭다.
단점
CPU집중적인(CPU Intensive) 작업에는 적합하지 않다.
2. 콜스택 : 호출스택은 함수의 실행순서를 추적하는 자료구조
JavaScript는 코드를 실행하면서 호출스택에 함수를 추가(push)하고 함수가 완료되면 호출스택에서 제거(pop)한다.
이는 비동기 작업에서 문제가 되는데, 특히 네트워크 요정과 같이 시간이 많이 걸리는 작업을 기다리는 동안 다른 작업을 처리할 수 없게 된다. 이를 해결하기 위해 이벤트루프(Event Loop)와 이벤트 큐(Event Queue)를 사용한다.
3. 이벤트 루프 : 여러 이벤트들과 같은 비동기 작업을 모아서 관리하고 어떤 순서대로 실행해야 하는지 도와주는 도구
이벤트 루프는 호출 스택과 이벤트 큐를 관찰하면서, 스택이 비어있고 큐에 작업이 있다면, 이벤트 큐의 작업을 호출스택으로 이동하는 역할을 담당한다.
이벤트 루프를 활용한다면 JS는 시간이 오래걸리는 작업을 이벤트 큐에 넣어 버려 동기적으로 처리하고 그 동안 호출스택에서 다른 작업들을 계속 처리할 수 있다.
'Sparta > TIL' 카테고리의 다른 글
24.01.23 TIL- ubuntu (0) | 2024.01.23 |
---|---|
24.01.22 TIL- EC2 (0) | 2024.01.23 |
24.01.16 TIL - 배열 내장 메소드 (1) | 2024.01.16 |
23.01.15 TIL-Javascript로 별점 기능 만들기 (0) | 2024.01.15 |
24.01.12 TIL - 동기/비동기 (0) | 2024.01.12 |