메모리 관리
메모리 계층 구조
Block
- 보조기억장치와 주기억 장치 사이의 데이터 전송 단위
- OS마다 차이는 있으나, 일반적으로 1~4 kb
- 1 Byte만 사용하더라도 Block 단위로 메모리에 올라간다.
Word
- CPU(레지스터)와 주기억장치(메모리) 사이의 데이터 전송 단위
- 16 ~ 64 bit의 크기를 갖는다.
Address Binding
Compile time binding
- 프로세스가 적재될 메모리의 위치를 100% 아는 경우(절대 위치 사용)
- 한 번 적재되면 위치가 변하지 않는다.
- 프로그램 전체가 메모리에 적재된다.
Load time binding
- 메모리 적재 위치를 컴파일 시간에 모르는 경우, 대처 가능한 상대 주소를 생성
- 0번에 데이터 A가 적재된다고 가정
- 실제로 프로그램을 실행시켰더니 400번지에 데이터 A가 적재되었음.
- 0과 400은 400만큼 차이가 나므로 Allocation Address = 400
- 400만큼 Re Location
- 프로그램 전체가 메모리에 적재된다.
- 메모리 적재 위치를 컴파일 시간에 모르는 경우, 대처 가능한 상대 주소를 생성
Runtime binding
- Address binding을 실제 수행 전까지 연기(프로세스가 수행 중 다른 위치로 이동할 수 있기 때문)
- HW의 도움 필요(Memory Management Unit)
- 대부분의 OS가 사용
Dynamic Loading
Address binding은 프로그램이 연속된 메모리에 적재되는 경우
일부만 적재할 필요가 있는 경우가 생긴다.
- 모든 루틴을 교체 가능한 형태로 디스크에 저장
- 실제 호출 전까지 적재하지 않음.
- 메인 프로그램만 메모리에 적재
- 루틴 호출 시점에 Address Binding 수행
메모리 공간의 효율성이 좋아진다.
Swapping
- Swap in : Ready Queue <- Suspended ready(새롭게 시작하는 프로세스)
- Swap out : Ready Queue -> Suspended ready(프로세스 할당이 끝난, 수행 완료 된 프로세스)