Memory Requirements
- main memory에 다수의 process들을 수용할 수 있도록 하는 것이 가장 큰 목표
- 효율적이고 투명하게
- transparently = 있는데 없는 것 처럼, 복잡한 내부 동작/구조를 모르도록 제공
- main requirements
- allocation
- relocation
- swap out 후 swap in 時 위치 달라질 가능성 有
- 가용 memory가 없을 때 사용되지 않는 process (또는 process의 일부)를 swap out
- protection
- sharing
- 공유하는 code/library를 공유 할 수 있는 효율적인 기법 필요
Types of Addresses
- Symbolic address
- Logical/Relative Address (or virtual address)
- 논리 주소
- process 內의 상대적인 위치
- 실행파일: logical address로 작성 일반적
- process가 하나 밖에 돌아가지 않는 system에서는 physical address 가능
- Physical/Absolute address
- 절대 주소
- main memory에서 실제 위치
- 실행 시점에 physical address로 변환 됨
Address Binding
- Symbolic address를 실제 물리 메모리에 접근하기 위한 physical address로 mapping 하는 것
- Address Binding이 일어나는 시점
- Compile time
- 보통은 모르는데 어디에 올라가는지 고정적으로 알 경우
- Load time
- 메모리에 올라갈 때 Swapping이 허용 되지 않는 경우
- load time이 길어지는 단점
- Execution time
- 대부분 상대주소로 upload
- 실행 순간 binding
- process가 움직여지는 경우 있기 때문
- 메모리에 접근할 때 마다 변경
Address Space
- 메모리를 보는 프로세스의 관점 → 0 부터 시작
- 프로세스가 접근 가능한 메모리 주소의 범위
- physical memory의 abstraction
- source code 작성 후 compile 時 symbolic address → logical address
Dynamic Address Translation
- 동적 방식
- runtime
- 반대는 Static Address Translation
- HW 지원을 받음
- Base register
- Bounds register
- Process의 끝 위치
- protection 확보
- MMU
- Base register로 시작 위치 받아옴
- logical + base = physical address
- 실행 시간에 address translation
Memory Allocation