본문 바로가기
컴퓨터구조

[컴퓨터구조] 컴파일러 vs 인터프리터 차이

by 개발LOG 2024. 12. 18.

소스 코드 작성 및 컴파일

  • 개발자는 C, Java, Python 등의 고급 프로그래밍 언어로 소스 코드를 작성합니다. 이 코드는 사람이 이해할 수 있는 형태로 작성되어 있습니다.
  • 소스 코드는 컴파일러에 의해 기계어(또는 중간 언어)로 번역됩니다. 컴파일 과정에서는 코드 최적화, 오류 검사 등이 수행되며, 실행 가능한 프로그램(실행 파일)을 생성합니다. 일부 언어(예: Java)에서는 바이트코드와 같은 중간 형태로 컴파일되어, 가상 머신에서 실행될 수 있습니다.

링킹

  • 컴파일된 코드는 필요한 라이브러리나 다른 모듈과 함께 링킹됩니다. 정적 링킹은 컴파일 시간에 외부 코드나 라이브러리를 실행 파일에 포함시키며, 동적 링킹은 프로그램이 실행될 때 필요한 코드를 불러오는 방식입니다.
  • 최종적으로, 링킹 과정을 거쳐 완전한 실행 파일이 생성됩니다.

실행 파일 로딩

  • 사용자가 프로그램을 실행시키면, 운영 시스템은 실행 파일을 메모리로 로드합니다. 이 과정에서 운영 시스템은 파일 시스템에서 실행 파일을 찾아 메모리에 적재합니다.

프로세스 생성

  • 메모리에 로드된 실행 파일은 프로세스로 생성됩니다. 프로세스는 실행 중인 프로그램의 인스턴스로, 고유한 메모리 공간(코드, 데이터, 스택 등)과 운영 시스템 자원(파일 핸들, 스레드 등)을 할당받습니다.
  • 운영 시스템은 프로세스를 관리하며, CPU 스케줄링을 통해 프로세스가 실행될 수 있도록 합니다.

실행

  • 프로세스가 CPU 시간을 할당받으면, 프로세스의 코드가 실행됩니다. 이때 명령어 실행 사이클(Fetch, Decode, Execute 등)이 반복되며, 프로그램의 로직에 따라 처리가 수행됩니다.
  • 프로그램 실행 도중에는 메모리 접근, 입출력 작업, 네트워크 통신 등 다양한 시스템 호출이 이루어질 수 있습니다.

종료

  • 프로그램이 완료되면, 운영 시스템은 프로세스를 종료시키고, 사용했던 자원을 회수합니다. 프로세스 종료는 정상 종료, 사용자에 의한 강제 종료, 오류로 인한 비정상 종료 등 여러 방식으로 이루어질 수 있습니다.

이 과정을 통해 고급 언어로 작성된 소스 코드는 컴퓨터에서 실행될 수 있는 프로세스로 변환되어, 실제 작업을 수행하게 됩니다.

 

C언어 컴파일 과정 예시

※ 자바는 전처리기 제공하지 않음.

 

컴파일언어와 스크립트 언어 차

 

컴파일러 언어

- 전체 번역

- 실행 프로그램을 생성하는 번역기 역할

- 실행은 개발자가 직접 따로 해야함

- 디버깅 작업이 쉬워 오류 찾기 쉬움

  • ex) C, C++, C#, Java, Rust, Go ...

스크립트 언어

- 한줄씩 즉시 번역 및 실행 역할

- 번역과 실행 동시에 진행

- 실행하기 전까진 컴파일 언어에 비해 오류 인지 시점이 늦다.

  • ex) JavaScript, HTML, ActionScript, SQL, Python, Ruby ...

 

 

 

 

 

참고링크:

https://velog.io/@kdh10806/Programming%EC%BB%B4%ED%8C%8C%EC%9D%BC-%EC%9D%B8%ED%84%B0%ED%94%84%EB%A6%AC%ED%84%B0-%EC%96%B8%EC%96%B4

 

[Programming]컴파일 / 인터프리터 언어

작성한 코드를 모두 기계어로 변환한 후에 기계어 코드로 실행하는 방식의 언어소스코드를 목적코드(컴파일러나 소스코드 파일을 컴파일해서 생성하는 파일)로 옮기는 것.번역과 실행이 따로

velog.io

 

'컴퓨터구조' 카테고리의 다른 글

[컴퓨터구조] 하드웨어 종류 및 CPU 구성  (1) 2024.07.30