2017-12-24 6 views
0

현재 JavaScript에 대한 과정을보고 있으며 실행 컨텍스트와 실행 스택에 대해 알게되었습니다. 이 주제는 그러나 나에게 몇 가지 질문을 내놓았습니다 :PC에서 사용되는 JavaScript의 실행 스택은 어디에 있습니까?

나는 실행 스택이 어떻게 작동하는지 알고 있으며, 모든 프로세스가 자신의 스택을 가지고 있음을 알고 있습니다. 하지만이 실행 스택이 정상적인 프로세스 스택을 대체합니까? 또는이 실행 스택을 다른 레벨에서 찾을 수 있습니까?

JavaScript 코드는 브라우저 엔진에 의해 실행됩니다. 그래서 실행 스택이이 엔진이나 다른 곳에서 사용됩니까? JS 코드의 실행은 컴퓨터에서 어떻게 그리고 어디에서 발생합니까? 예를 들어 FireFox와 같은 브라우저는 그 자체가 하나의 프로세스입니다.

그래서 FireFox에는 자체 스택이 있다고 가정하지만 실행되는 JavaScript 코드는 어떻게됩니까? 아니면 컴퓨터에서 JavaScript 코드를 실행하는 동안 만들어진 새로운 프로세스입니까?

나는 주위에 내 머리를 얻을 수 없습니다. 사전에

감사합니다,

마이크

답변

2

자바 스크립트는 해석 언어이며 등은 JS 엔진 호출되는 인터프리터에 의해 실행된다. 일반적으로 JS 엔진은 웹 브라우저에서 실행되지만 브라우저에 제한되거나 제한되지 않습니다 (예 : NodeJS는 자체 서버 측 JS 인터프리터를 실행합니다. JS 엔진은 ECMA 스크립트 표준 인 see a list of engines on WikiPedia을 구현 한 것입니다. 일부 구현은 오픈 소스이며 전혀 다른 소프트웨어로 구축됩니다. 예를 들어 Google 크롬과 NodeJS는 모두 V8 엔진을 사용하여 JS 코드를 실행합니다.

모든 프로세스에는 자체 스택이 있습니다. 하지만이 실행은 스택이며 정상적인 프로세스 스택을 대체 할 것입니까?

브라우저는 자체 OS 프로세스를 실행하고 대부분의합니다 (JS 엔진의 별도의 인스턴스와 크롬 uses renderers 각 좋아하지만 관련 웹 사이트가 같은 렌더러 따라서 JS 엔진을 공유합니다) 여러 OS 프로세스를 사용하지만 중요한 점을 OS 실행 컨텍스트와 JS 실행 컨텍스트를 혼동하지 않는 것입니다.. 후자는 전자 안에 존재한다.

OS 프로세스는 JS 엔진 자체를 실행합니다. OS 프로세스의 실행 컨텍스트는 OS (커널)에 의해 제어되는 반면 JS의 실행 컨텍스트는 JS 엔진에 의해 제어됩니다.

따라서 정상적인 프로세스 스택을 대체하는 JS 실행 스택의 개념은 당연히 난센스입니다.

+0

감사합니다. 이것은 훨씬 더 명확하게 만들었습니다. – Maikkeyy

관련 문제