<aside>
🔥
프로세스란? → 메인 메모리에 로드되어 있는 프로그램
</aside>
<aside>
🔥
메모리란? → 주소를 가진 바이트의 배열
</aside>
Address Binding
- 프로그램을 실행하기 위해서는 어떻게 해야 할까?
- 디스크에 저장되어 있는 바이너리 파일에 프로그램이 저장되어 있다.
- 이를 메모리로 가져와야 프로그램 실행 가능
- 소스코드의 주소는 대부분 심볼릭이다.
- 컴파일러의 역할
- 심볼릭 주소를 relocatable(위치를 다시 부여 가능)한 주소에 바인딩한다.
- 링커/로더의 역할
- relocatable 주소를 absolute 주소에 바인딩한다.
MMU (Memory Management Unit)
- 논리주소를 물리주소로 변환해주는 하드웨어 장치

다이나믹 로딩
- 전체 프로그램을 physical memory에 다 올려야 할까?
- ㄴㄴ. 루틴이 필요할 때(호출될 때)만 로드한다.
다이나믹 링킹
- static linking → 다른 모듈들과 동일하게 바이너리 프로그램 코드에 로더에 의해 합쳐짐
- dynamic linking → execution time까지 로딩, 링킹 X
- shared library → 여러개의 프로세스에서 하나의 공유라이브러리 링킹가능
- DLLs (Dynamically Linked Libraries)
- 프로그램이 실행될 때 링킹되는 윈도우의 시스템 라이브러리
- shared library의 일종