Concept
.exe는 실행 가능한 프로그램의 확장자입니다. 프로그램이 실행되기 위해서는 OS로부터 CPU와 메모리를 할당받아야 합니다. 오늘은 소스 파일이 실행되는 원리에 대해 알아보겠습니다.
우선, 오브젝트 파일, 컴파일러, Linker, Loader에 대해 알아야 합니다.
- 오브젝트 파일: Relocatable object file로서, 어떤 메모리에도 로드될 수 있는 파일을 말합니다.
- 컴파일러: 소스 코드를 오브젝트 파일로 변환해 줍니다.
- Linker (링커): 여러 오브젝트 파일을 하나로 합쳐 실행 가능한 파일로 만듭니다.
- Loader (로더): 실행 가능한 파일을 메모리에 로드합니다.
Process Flow
전체적인 흐름을 요약하면 다음과 같습니다:
소스 코드 → [컴파일러] → 오브젝트 파일 → [링커] → 실행 가능한 파일 → [로더] → 메모리 로드
즉, 소스 코드에서 메모리 로드에 이르기까지 각 과정에 컴파일러, 링커, 로더가 개입하여 실행 가능한 상태를 만들어줍니다.