[JS] 자바스크립트 엔진 원리

leecoder·2022년 1월 25일
0
post-thumbnail

면접 중 프론트 개발자님이 자바스크립트 엔진 원리를 물어보셨다.
자바스크립트 V8엔진? 브라우저랑 노드에서 쓰는 엔진 그거 맞나?
이렇게 생각하다가 결국 모른다고 했쥬😅
그래서 정리해보기로 했다.

자바스크립트 엔진의 등장 🦾


자바스크립트로 웹 앱을 구축하려는 시도가 늘면서 빠르게 동작하는 자바스크립트 엔진의 필요했다. 그래서 등장한 구글의 V8 자바스크립트 엔진의 등장으로 자바스크립트는 웹앱 프로그래밍 언어로 정착하게 되었다. 이는 웹 서버에서 수행되던 로직들이 대거 클라이언트(브라우저)로 이동했다.

Node.js

V8로 빌드된 자바스크립트 런타임 환경으로 브라우저 밖에서 자바스크립트를 동작할 수 있는 실행환경이다. 주로 서버 사이드 앱 개발에 주로 사용되고, 이제 필요한 모듈, 파일 시스템, HTTP 등 빌트인 API를 제공한다.

V8엔진 구성


  • Memory Heap: 메모리 할당이 일어나는 곳(변수 저장)
  • Call Stack: 코드 실행에 따라 호출 스택이 쌓이는 곳으로 한번에 한 작업만 처리할 수 있다.

동작 원리 🔁



먼저 함수 등의 코드가 실행되면 콜스택으로 간다.
거기서 하나씩 코드를 실행하는데 실행할 코드가 스택에 꽉 차면 에러가 발생되거나 페이지가 멈출 수 있다. 그리고 처리가 오래 걸리는 코드가 있으면 동기적으로 실행되기 때문에 그 코드를 기다리느라 로딩이 느리게 될 수 있다.
그래서 HTTP통신 같이 오래 걸리는 코드는 비동기 처리를 통해 빼놔야한다. 처리가 완료되면 그 코드는 콜백큐에 들어간다. 스택이 비게 되면 이벤트 루프가 콜백큐에 있던 코드를 스택으로 넘겨준다.

뭔가 부족한듯 하지만 이해한대로 정리..🌹

profile
Generalist.

0개의 댓글