Compile Time & Run time

Jihun Kim·2022년 8월 9일
0

기타

목록 보기
8/12
post-thumbnail

Compile Time

Compile time은 컴퓨터 프로그램 또는 코드를 CPU가 이해할 수 있는 즉, machine-readable 코드로 변환하는 단계를 의미한다.

  • 이 과정은 compiler에 의해 실행 된다.
    - Compiler를 사용하는 언어: C, Java...
  • compile 중에 소스 언어의 코드는 특정 타겟 언어(byte)로 변환 된다.
  • Compile 단계 이후에는 Load time을 거쳐 execution time으로 가게 되는데 여기서 execution time은 runtime에 포함 된다.
    - Load time에는 프로그램이 메모리에 로드 된다(loader를 이용함).
    - Load 시에는 loader가 프로그램이 지시사항을 읽어 실행에 필요한 리소스들이 준비될 수 있도록 한다.

Compile 과정 중 일어나는 일

  • compile 중에는 syntax(문법적)나 semantic(의미론적) 분석을 진행한다.
    - 즉, 사용 언어에 문법적 오류가 없는지 그리고 문법은 정상이나 실행의 결과가 원하는 대로 나오지 않는 경우는 없는 지를 분석한다.
  • 컴퓨터의 특정 물리적 메모리 위치에 프로그램 명령을 연관시키는(association) 일을 한다.

Compiler를 사용하지 않는 언어 Python

  • 파이썬은 C, 자바와는 달리 인터프리터에 의해 실행되는 스크립트 언어이다.
  • 인터프리터는 소스 코드를 처음부터 한 줄씩 차례대로 해석(기계어로 변환)하며 실행하는 프로그램이다.
    - 따라서 컴파일러에 비해 실행 속도가 느리다는 단점이 있지만 코드가 완전히 작성되지 않아도 작성된 부분까지만 테스트 하는 것이 가능하다.

Compile Errors

  • Syntax Errors
  • Semantic Errors
    - a + b = c;의 경우 좌변에 두 개 이상의 변수가 할당 되는 것이 불가능하기 때문에 c = a + b;로 수정 되어야 한다. 따라서 이 경우 semantic error가 발생한다.


Run Time

Run time은 컴퓨터 시스템에 의해 프로그램이 실행 되는 단계를 말한다.

  • Execution time이라고도 불리는 run time은 유저 또는 다른 os에 의해 프로그램이 종료되기 전까지 프로그램이 메모리 내에서 실행되는 시간을 말한다.
  • Run time은 프로그램이 프레임워크, 컴포넌트 또는 라이브러리와 함께 메모리에 load되는 순간부터 시작 된다.
    - 이 때 os가 프로그램이 run time 동안에 필요로 하는 메모리, 프로세스, I/O 리소스를 할당한다.

Run time Errors

런타임 에러는 개발자들이 디버깅 하기 어려운 에러 중 하나로, 예상했던 대로 코드가 실행되지 않는 경우에 발생한다.
런타임 에러는 os가 찾아내는 것이 아니며 trap이라는 자기 평가(self-assessment)를 통해 소프트웨어가 스스로를 진단해 발견한다. 보통 런타임 에러가 발생하면 프로그램이 종료되거나 frozen 상태에 도달하게 된다.
가능한 원인에는 여러가지가 있는데 보통 아래와 같은 것들이 있다.

  • 실행 애플리케이션에 의한 이슈
  • 메모리 이슈
  • 소프트웨어 이슈
  • 오래된 하드웨어
  • 등등,,,,

일반적으로 발생하는 런타임 에러에는 다음과 같은 것들이 있다.

  • ZeroDivisionError
  • NullPointError
  • Segmentation fault / bus error
    - 존재하지 않는 메모리 위치에 접근하는 경우
  • 무한 루프에 빠지는 경우
profile
쿄쿄

0개의 댓글