Memory 를 이해하기 위한 background
block : 보조기억장치와 주기억 장치 사이의 데이터 전송 단위, 1 ~ 4 KB
word : 주기억 장치와 레지스터 사이의 데이터 전송 단위, 16 ~ 64 bit
address binding : 프로그램의 논리 주소를 실제 메모리의 물리 주소로 매핑하는 작업
binding 시점에 따른 구분 : compile time binding, load time binding, run time binding
Source code가 memory에 올라가기 가지의 과정

comfile(compiler 가 하는 일) : object module을 생성한다
linking(linker 가 하는 일) : object module과 other object module을 더해서 실행가능한 파일인 load module을 만드는 과정
loading(loader 가 하는 일) : load module을 memory에 올려주는 과정
Address Binding
- compile time binding : 프로세스가 적재될 위치를 컴파일러가 알 수 있는 경우, 프로그램 전체가 메모리에 올라가야 함
- load time binding : 메모리 적재 위치를 컴파일 시점에서 모르면 대체 가능한 상대주소를 생성, 적재 시점(load time)에 시작 주소를 반영하여 사용자 코드 상의 주소를 재설정, 프로그램 전체가 메모리에 올라가야 함
- run-time binding : address binding을 수행시간까지 연기(프로세스가 수행 도중 다른 메모리 위치로 이동 할 수 있음), HW의 도움이 필요하며(MMMU : memory mangement unit) 대부분의 OS가 사용
Dynamic Loading
- 모든 루틴을 교체 가능한 형태로 디스크에 저장
- 실제 호출 전까지는 루틴을 적재하지 않음
- 메인 프로그램만 메모리에 적재하여 수행
- 루틴의 호출 시점에 address bidning 수행
- 메모리 공간의 효율적 사용
Swapping
- 프로세서 할당이 끝나고 수행 완료 된 프로세스는 swqp-device로 보내고(swap-out) 새롭게 시작하는 프로세스는 메모리에 적재(swap-in)
ref)
1. https://www.youtube.com/watch?v=es3WGii_7mc&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=24