1. 컨텍스트
ㅇ `상황, 맥락, 문맥 상의 의미` 등으로 이해되는 용어
ㅇ 사실상, 컨텍스트는,
- 그냥 텍스트(Text) 처럼 바로 이해되는 단순히 원본 정도가 아니라,
- 문맥 및 상황에 따라, 어떤 해석이 가미되어 이해되는, 한 차원 높은 공간, 영역을 의미
ㅇ 전산 뿐만 아니라 방송, 예술 등의 분야에서도 널리 사용되는 용어
2. [전산] 컴퓨터 내부 : (하드웨어 및 운영체제 관점)
ㅇ 컨텍스트는 컴퓨터 내부에서 볼 때,
- 프로세서 안에 있는 레지스터, 플래그 등의 현재 값/상태들의 집합을 말함
ㅇ Context Switching (문맥 교환)
- 멀티태스킹 작업을 수행하기 위해,
. 시분할 처리에서, 수행중인 각 태스크들을 순서있게/반복적으로 교체하기 위해,
. 태스크 상태 정보를 레지스터들에 저장 또는 이전 상태를 불러오기위한 작업
.. 태스크 상태 정보 : CPU 및 메모리 상태 정보
.. 즉, CPU 레지스터 및 메모리 스택
- 결국, 하드웨어(CPU)와 소프트웨어(운영체제) 간에 협동으로 이루어지는,
. 스레드 실행 상태의 저장과 복원 작업
- 사실, 실제 프로그램을 수행하는 작업은 아님
3. [전산] 프로그램 내부 : (소프트웨어 관점)
ㅇ 그때그때 상황에 맞게끔, 실행/판단/결정 등을 해야하는 부분
- 例) 할당 연산자(=) 다음에는, 표현식 컨텍스트가 옴
- 例) if 조건문 다음에 { 가 오면, 문장 컨텍스트가 옴
- 例) 컨텍스트 메뉴 (context menu)
. 그 메뉴를 호출한 동작 및 상황에 따라, 다르게 선택 사항들이 나열되는 메뉴
4. [전산] 자바스크립트 실행 컨텍스트 (Execution Context) : (소프트웨어 실행 관점)
ㅇ 실행에 필요한 다양한 정보를 형상화하고, 이들을 목록화 관리하기 위한, 추상적인 개념
- 실행 가능한 코드가 실행되는 프로그램 환경
. 현재 실행중인 부분
- 결국, 실행에 필요한 정보들로써,
. 변수 등의 유효 범위(Scope),유효 기간(Lifetime)의 결정을 위한 환경 정보들
. 실행에 필요한 정보들의 例)
.. 변수들 (전역변수, 지역변수, 매개변수, 객체의 프로퍼티)
.. 함수 선언 정보
.. 변수의 유효범위(Scope)
.. this가 가리키는 것 등
ㅇ 실행 컨텍스트의 관리 및 보유 형태
- 관리 형태
. 실행에 필요한 여러 정보들을, 객체 형태로 담아 스택(LIFO)으로 관리
- 보유 형태
. { 렉시컬 환경 : (환경 레코드 + 외부 렉시컬 환경에 대한 참조) }
ㅇ 만일, 자바스크립트 엔진이,
- 실행 가능한 코드를 만나면, 그 코드를 평가해서, 실행 컨텍스트를 만들어냄
. 例)
.. 만일, 함수를 호출하면,
.. 현재 실행중인 코드의 작업을 잠시 멈추고,
.. 함수 코드가 평가되면서,
.. 실행 컨텍스트 영역을 생성하고,
.. 이때 생성된 함수 실행 컨텍스트는, 실행 컨텍스트 스택에 푸시되고,
.. 실행 흐름이, 실행 컨텍스트 스택 상의 그 실행 컨텍스트로 이동하고,
.. 함수 안팎의 환경을 찾아내어, 실행되어지며,
.. 함수 실행이 종료되면, 실행 컨텍스트 스택에서 팝되어 제거됨
- 실행 가능한 코드의 例)
. 전역 코드 : 가장 바깥쪽에 존재하는 것
. 함수 코드
. eval 함수
. 모듈 코드