프로그램 실행 과정(소스코드부터 CPU에서 코드 실행하기 까지)
소스코드에서 실행파일로 변환 과정 - 소스파일은 컴파일러를 통해 오브젝트 코드(기계어) 파일로 바뀐다. - 오브젝트 파일은 몇 개의 영역으로 나뉜다. .text 영역(section) 에는 오브젝트 코드가 들어있고, .rdata 영역은 read-only 데이터, .data 영역은 mutable 데이터 정보가 들어있다. - 링커는 실행하기 위해 필요한 모든 오브젝트 파일을 종합해 실행파일 (그림에서 a.out, 윈도우에선 exe) 로 만든다. - 링커는 각 unknown심볼들에 대한 정보(참조 주소 등)를 정리한다. 그림 출처 : Link-Time Binary Rewriting Techniques for Program Compaction by BJORN DE SUTTER, BRUNO DE BUS, and KOEN DE BOSSCHERE / Ghent University 실행파일 적재 후 명령어 실행 과정 실행파일은 보조기억장치(DISK) 에서 주기억장치 (RAM)로 적재해야 실행할 수 있다. - 적재는 로더(loader)가 수행한다. - 메모리 적재시 여유공간 확인 후 페이징 기법 등이 사용될 수 있다. - 메모리에 올라간 실행파일은 기계 명령어를 CPU로 보내고 한 줄씩 수행한다. 그림 출처 : Generating Programs and Linking by Rick Han / University of Colorado