.c .cpp.i.s.oa.out .exe소스코드를 기계어로 변환하여 오브젝트 파일을 생성하는 과정으로, 1~4번에 해당한다.
컴파일 + 링킹 + 그 외의 전체 단계를 일컫는 말로, 코드가 실행 가능한 형태로 변환되는 과정이다.
📍 c/c++에 해당하며, 다른 언어는 전처리기와 어셈블러를 사용하지 않는 등 고유한 컴파일 과정이 있다.
.c .cpp 파일을 생성한다.
사람이 읽을 수 있는 프로그래밍 언어로 작성된 코드이다.
.c .cpp 파일로 .i 파일을 생성한다.
여전히 사람이 읽을 수 있는 언어이며, 전처리 지시어들이 처리된 상태이다.
주석을 제거하고 매크로와 헤더파일을 확장한다.
#define으로 정의된 매크로를 실제 값으로 치환#include 지시어로 포함된 헤더 파일의 내용을 실제로 소스 코드에 삽입.i 파일로 .s 파일을 생성한다.
기계어에 가까운 어셈블리어 코드로 변환한다.
기계어(Machine Language)
- 각 기계마다 규약된 바이너리 코드(Binary Code, 0과 1)의 규칙 조합
- CPU가 별다른 해석 없이 읽을 수 있는 언어
- 저수준(Low-level) 언어
어셈블리어(Assembly Language)
- 기계어와 일대일 대응 관계를 형성한 언어 ex)
ADD = 0011- 기계어보다 한 단계 높은 저수준 언어
.s 파일로 .o 파일을 생성한다.
어셈블리어를 기계어로 변환한다.
라이브러리 파일(Library File)
여러 개의 오브젝트 파일을 하나의 파일로 만든 것.
컴파일 없이 링킹만 하면 되기 때문에 컴파일 시간을 줄일 수 있고,
이미 구현되어 있는 기능들을 가져다 쓸 수 있어 개발 시간을 단축할 수 있음.
기계어 파일 모음으로 소스 코드를 보호할 수 있음.
.o 파일로 a.out .exe 파일을 생성한다.
여러 개의 코드와 데이터를 연결하여 실행할 수 있는 하나의 파일로 만든다.
라이브러리를 어떻게 연결하는지에 따라 두가지 방법으로 나뉜다.
오브젝트 파일을 실행 파일로 만드는 과정이다.
.lib실행 파일 = 오브젝트 파일들 + 라이브러리 파일들장점
단점
.dll .so실행 파일 = 오브젝트 파일들 + 라이브러리의 위치를 알 수 있는 포인터장점
단점
프로그램 실행에 필요한 데이터를 보조기억장치에서 메모리(RAM)로 옮기는 것이다.
프로그램 실행 전에 모든 데이터를 메모리에 적재하고, 실행 중에 다른 데이터를 추가로 로드하지 않는다.
장점
단점
프로그램 실행 중에 필요한 시점에 데이터를 메모리에 적재하고, 이후에는 메모리에서 제거한다.
장점
단점
📍 Paging 기법과 VMM(Virtual Memory Management)이 나오고 더 이상 사용하지 않게 되었다.
https://velog.io/@hey-chocopie/Libasm-2.-어셈블리어란-개념-및-특징-정리-명령어-정리
https://velog.io/@carrykim/프로그래밍-언어
https://reminder-by-kwan.tistory.com/148
https://byunghyun23.tistory.com/2
https://rannnneey.tistory.com/entry/운영체제-Memory-Management-2-동적-로딩-동적-링킹-오버레이-스와핑