JS 엔진이 코드를 실행하는 과정

Updated:

자바스크립트 엔진이 코드를 실행하는 과정

자바스크립트를 실행하기 위해선 자바스크립트 엔진이 필요하고 웹브라우저는 자바스크립트 엔진을 내장하고 있다. 브라우저마다 엔진의 종류가 다르지만 코드를 실행하는 방식은 비슷하기 때문에 보통 어떻게 실행하는지 알아두는것이 좋다.

image

  • 소스코드를 만나면 파싱하여 AST(Abstract Syntax Tree,추상 구문 트리)로 변환한다
  • 인터프리터(Interpreter)는 AST를 기반으로 바이트코드(Bytecode)를 생성 한다.
  • 인터프리터가 바이트코드를 실행할 때, 자주 사용되는 함수 및 타입정보등이 있는 프로파일링데이터(Profiling data)와 같이 최적화 컴파일러(Optimizing compiler) 에게 보낸다.
  • 최적화 컴파일러는 프로파일링 데이터를 기반으로 최적화된 코드(Optimizing code)를 생성
  • 하지만 , 프로파일링 데이터 중에 잘못된 부분이 있다면 최적화 해제(Deoptimize)를 하고 다시 바이트코드를 실행해서 이전 동작을 반복한다

용어

  • 추상 구문 트리 : 추상구문트리는 프로그래밍 언어로 작성된 소스코드의 추상, 구문 구조의 트리이다. 이 트리의 각 노드는 소스 코드에서 발생되는 구조를 나타낸다. 구문이 추상적이라는 의미는 실제 구문에서 나타나는 모든 세세한 정보를 나타내지 않는다는 것을 의미한다.

  • 인터프리터 : 인터프리터는 프로그램의 소스코드를 바로 실행하는 컴퓨터 프로그램 또는 환경을 말한다. 기계어로 변환하는 컴파일과는 대비된다. 인터프리터는 다음의 과정가운데 적어도 한가지 기능을 가진 프로그램이다
    1. 소스코드를 직접실행한다
    2. 소스코드를 효율적인 다른 중간 코드로 변환하고, 변환한것을 바로 실행한다.
    3. 인터프리터 시스템의 일부인 컴파일러가 만든, 미리 컴파일된 저장코드의 실행을 호출한다.
  • 바이트코드 : 바이트코드는 특정 하드웨어가 아닌 가상컴퓨터에서 돌아가는 실행 프로그램을 위한 이진 표현법이다. 하드웨어보다 소프트웨어에서 처리되기때문에 , 보통 기계어보다 추상적이다.

출처

Tags:

Categories:

Updated:

Leave a comment