Program & Timing
컴파일 프로그램
- Language code
- Machine Language(컴파일)
- File(컴파일 후 파일화)
- Load(메모리에 로드) : exe 파일 클릭 -> 메모리에 적재 후 실행
- Run(실행)
- Terminate
Load 시점부터 프로그램이라고 부른다.
이런 프로그램을 만드는 행위를 프로그래밍이라고 한다.
1~4번까지가 다 프로그래밍의 영역이다.
기계가 실행(Run)하는 영역은 프로그래밍의 영역이 아니다.
- Language code - Lint time
- Machine Language - Compile time
- File
- Load
- Run - Run time
- Terminate
Lint time error - Compile error : 프로그래머가 잡을 수 있는 영역
Run time error부터 프로그래머가 잡기 힘들어진다. Context Error : Run time에서도 안 걸리는 논리적인 이유로 일어나는 에러다.
자신이 짠 코드가 Run time 때 error가 발생한다면 본인의 코드 스타일을 점검해봐야된다.
Context Error
팀의 커뮤니케이션으로 해결해야될 문제다.
팀원 개개인이 서로 오해를 불러일으키게끔 코드를 짰다던가 의사소통이 제대로 안될때 컨텍스트 에러가 일어나는 경우가 많다.
스크립트 프로그램
- Language code
- File
- Load
- Machine Language
- Run
- Terminate
스크립트 언어는 컴파일 언어처럼 Machine Language(컴파일)을 거치지 않고 바로 File을 생성한다.
그 후에 바로 브라우저에 적재된다.
적재된 후에 Machine Language로 컴파일된다.
그리고 그 후에 실행되는 것이다.
Run Time (컴파일 프로그램)
- Language code
- Machine Language(컴파일)
- File(컴파일 후 파일화)
- Load(메모리에 로드)
- Run(실행)
- Terminate
Run Time은 기본적으로 메모리에 적재되어있는 프로그램을 실행하는 과정이다.
프로그램이 실행될 때 ‘폰노이만 머신 구조’를 따른다.
폰노이만 머신구조
- Memory에 명령어들과 값들을 적재한다. (프로그램이라 불리는 영역)
- CPU의 제어유닛은 Memory에 적재되어있는 명령어와 값들을 인스트럭션 패치(연산유닛 명령어로 패치) & 디코딩한다. (연산유닛이 알아들을 수 있도록)
- CPU의 연산유닛은 이를 실행한다.
컴파일 프로그램에서 컴파일 할 때(Machine Language) 어떻게 error를 잡아내는 것일까?
Compile 할 때는 아직 Memory에 적재되기 이전이다.
그런데 어떻게 error를 잡아내는 것일까?
이는 Compile time 때 ‘가짜 메모리’를 만들어 할당하기 때문이다.
그래서 컴파일 타임 때 만들어진 파일들은 가짜 메모리에 ‘매핑’되어 있다.
이를 File 단계에서 해줘야될 것은 가짜 메모리 테이블을 진짜 메모리 테이블로 ‘매핑’해줘야된다.
이걸 ‘버츄얼 메모리 테이블’이라고 한다. (V-TABLE)
Loading
Instruction Fetch & Decoding -> Execution -> Instruction Fetch & Decoding -> … 반복
- Essential Definition Loading
- V-Table Mapping
- Run
- Runtime Definition Loading (자바스크립트 콜백펑션, json…등등) …
이런 과정의 연속
Run Time (스크립트 프로그램)
- Language code
- File
- Load
- Machine Language
- Run
- Terminate
Run time 때 (상대주의)
- Declare Base Function, Class… (Static Time)
- Declare Extended Function, Class… (Run time) …
이런 과정의 연속