chrome의 V8 엔진으로 만들어진 자바스크립트 런타임(실행환경)입니다.
| 브라우저 | 엔진 |
|---|---|
| chrome | V8 |
| IE | Chakra |
| Safari | JavascriptCore |
| Firefox | spider monkey |
| Opera | blink, V8, Webkit |
보충 (node.js)
Node.js 내부에는 libuv(라이브러리)가 있습니다.
libuv라이브러리의 역할
이벤트 기반
setTimeout를 예시로
1. 실행해야 하는 함수 setTimeout를 스택에 올립니다.
2. 실행되는 함수내용이(callback run)은 백그라운드로 보내집니다.
3. setTimeout에서 설정된 시간만큼 백그라운드에서 대기 후 태스크 큐로 보냅니다.
4. 호출 스택이 비워지면 태스크 큐에서 run을 불러와 실행합니다.
5. 반복
참고영상 - Node.js의 동작원리
보충 (자료구조)
논블로킹 I/O
I/O 작업들을 백그라운드로 넘기고 동시에 처리될 수 있는것들은 묶어서 처리합니다.
I/O (input output) : 입출력, 파일접근, 네트워크요청, CRUD, api 등
보충 (프로세스와 스레드)
프로세스 : 운영체제에서 프로그램을 실행하는 작업 단위
스레드 : 프로세스 내에서 실행되는 흐름의 단위
참고한 블로그와 사이트들