티스토리 뷰

donaricano-btn
반응형

자바 스크립트는 스크립트 언어입니다. 스크립트 언어란 응용 프로그램을 제어하기 위해 만들어진 언어를 뜻합니다.

 

보통 컴파일 과정을 거치지 않고 인터프리터를 통해 한줄씩 실행되는 경우가 많습니다. 기존에 프로그래밍 언어와 차이점이 존재했지만 점점 범용적으로 쓰이며 차이가 줄어들고 있는 추세입니다.

자바스크립트는 최초에 서버사이드 스크립트 언어로 개발되었지만 그 강력한 기능 때문에 대부분의 웹 브라우저에 인터프리터가 탑재되면서 지금은 HTTP, CSS 와 함께 웹 표준으로 자리잡게 되었습니다.

 

구글에서 JIT 컴파일 방식을 도입해 개발한 Chrome V8 엔진 등장 이후 Node.js 등이 등장하며 서버사이드에서도 사용하게 되었고 그 범용성이 증대되고 있습니다.

 

멀티 패러다임 언어로 명령형, 함수형, 객체지향형 언어의 특징을 모두 가지고 있습니다.

V8엔진은 크게 두 부분으로 구성됩니다.

 

메모리힙(Memory Heap): 메모리할당이 이루어지는 곳입니다

콜스택(Call Stack): 코드가 실행되면서 스택 프레임이 쌓이는 곳입니다

 

자바스크립트의 특징은 이 콜 스택이 하나밖에 없다는 것입니다. 다시말해 단일 스레드 환경입니다.

계속해서 스택프레임을 쌓게되면 스택의 크기를 벗어나 오버플로가 발생하게 되므로 주의해야 합니다. 단일스레드는 교착상태등이 발생하지 않는다는 장점이 있지만 블로킹 상태가 발생하거나 응답에 너무 오랜 시간이 걸릴 수 있다는 단점이 있습니다. 콜 스택 내에 수행시간이 아주 긴 함수가 있는 경우 그 함수가 종료될 때 까지 다른 코드를 수행할 수 없습니다. 블로킹(blocking)이 발생하는 것입니다. 이렇게 아주 긴 시간동안 응답이 없는 경우 브라우저는 에러를 일으키게 됩니다.

특정한 종류의 오랜 시간이 걸리는 작업을 위임해서 처리할 수 있는 Web API 들이 존재 합니다.

 

웹 API(Web APIs)라는 것은 무엇일까요? 핵심만 말하면 이들은 개발자가 접근할 수 없는 쓰레드이며 호출만 가능합니다 명령어들입니다.

API 스레드에 어떤 작업을 위임시킨 후 응답을 받으면 콜백 큐에 콜백 함수를 적재합니다. 이벤트 루프는 콜스택과 콜백 큐를 감시하고 있다가 콜스택이 비어 있으면 큐에서 이벤트를 꺼내 스택에 적재하게 됩니다.

자바스크립트도 가바지 컬렉터가 존재합니다. 자바스크립트의 가비지 콜렉션은 역시 전통적인 mark-and-sweep 알고리즘을 이용해서 이루어 집니다. 하지만 stop-the-world 발생을 최소화 하기 위해 힙의 일부 영역만 탐색하는 점진적인 마킹 방법을 사용한다고 합니다.

 

반응형

'language > javascript' 카테고리의 다른 글

자바스크립트 모듈  (0) 2019.03.29
자바스크립트의 객체지향프로그래밍  (0) 2019.03.29
자바스크립트에서 예외처리  (0) 2019.03.29
자바스크립트 함수  (0) 2019.03.29
자바스크립트의 데이터 타입  (0) 2019.03.29
donaricano-btn
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함