LHJ

I'm a FE developer.

1. Program & Timing

02 Aug 2020 » codespitz_re

Program & Timing

컴파일 프로그램

  1. Language code
  2. Machine Language(컴파일)
  3. File(컴파일 후 파일화)
  4. Load(메모리에 로드) : exe 파일 클릭 -> 메모리에 적재 후 실행
  5. Run(실행)
  6. Terminate

Load 시점부터 프로그램이라고 부른다.
이런 프로그램을 만드는 행위를 프로그래밍이라고 한다.
1~4번까지가 다 프로그래밍의 영역이다.
기계가 실행(Run)하는 영역은 프로그래밍의 영역이 아니다.


  1. Language code - Lint time
  2. Machine Language - Compile time
  3. File
  4. Load
  5. Run - Run time
  6. Terminate

Lint time error - Compile error : 프로그래머가 잡을 수 있는 영역
Run time error부터 프로그래머가 잡기 힘들어진다. Context Error : Run time에서도 안 걸리는 논리적인 이유로 일어나는 에러다.

자신이 짠 코드가 Run time 때 error가 발생한다면 본인의 코드 스타일을 점검해봐야된다.

Context Error

팀의 커뮤니케이션으로 해결해야될 문제다.
팀원 개개인이 서로 오해를 불러일으키게끔 코드를 짰다던가 의사소통이 제대로 안될때 컨텍스트 에러가 일어나는 경우가 많다.

스크립트 프로그램

  1. Language code
  2. File
  3. Load
  4. Machine Language
  5. Run
  6. Terminate

스크립트 언어는 컴파일 언어처럼 Machine Language(컴파일)을 거치지 않고 바로 File을 생성한다.
그 후에 바로 브라우저에 적재된다.
적재된 후에 Machine Language로 컴파일된다.
그리고 그 후에 실행되는 것이다.

Run Time (컴파일 프로그램)

  1. Language code
  2. Machine Language(컴파일)
  3. File(컴파일 후 파일화)
  4. Load(메모리에 로드)
  5. Run(실행)
  6. Terminate

Run Time은 기본적으로 메모리에 적재되어있는 프로그램을 실행하는 과정이다.
프로그램이 실행될 때 ‘폰노이만 머신 구조’를 따른다.

폰노이만 머신구조

  1. Memory에 명령어들과 값들을 적재한다. (프로그램이라 불리는 영역)
  2. CPU의 제어유닛은 Memory에 적재되어있는 명령어와 값들을 인스트럭션 패치(연산유닛 명령어로 패치) & 디코딩한다. (연산유닛이 알아들을 수 있도록)
  3. CPU의 연산유닛은 이를 실행한다.

컴파일 프로그램에서 컴파일 할 때(Machine Language) 어떻게 error를 잡아내는 것일까?
Compile 할 때는 아직 Memory에 적재되기 이전이다.
그런데 어떻게 error를 잡아내는 것일까?
이는 Compile time 때 ‘가짜 메모리’를 만들어 할당하기 때문이다.
그래서 컴파일 타임 때 만들어진 파일들은 가짜 메모리에 ‘매핑’되어 있다.
이를 File 단계에서 해줘야될 것은 가짜 메모리 테이블을 진짜 메모리 테이블로 ‘매핑’해줘야된다.
이걸 ‘버츄얼 메모리 테이블’이라고 한다. (V-TABLE)

Loading

Instruction Fetch & Decoding -> Execution -> Instruction Fetch & Decoding -> … 반복

  1. Essential Definition Loading
  2. V-Table Mapping
  3. Run
  4. Runtime Definition Loading (자바스크립트 콜백펑션, json…등등) …

이런 과정의 연속

Run Time (스크립트 프로그램)

  1. Language code
  2. File
  3. Load
  4. Machine Language
  5. Run
  6. Terminate

Run time 때 (상대주의)

  1. Declare Base Function, Class… (Static Time)
  2. Declare Extended Function, Class… (Run time) …

이런 과정의 연속