Address space

- Protection: 보호(=isolate)
- 안전하게 고립되어야 함.
- 프로세스들을 서로 고립(isolate)시킬 수 있음.
- 다른 프로세스에 접근하거나 영향을 주어서는 안 됨.
- Efficiency: 성능, 효율성
- TLB 등의 하드웨어 지원을 받음.
- 너무 많은 메모리를 사용해선 안 됨.(by VMS)
- 너무 느리게 실행돼서는 안 됨. (by VMS)
- Transparency: 투명성
- 메모리를 다중화(multiplex)하기 위해 OS와 하드웨어가 뒤에서 많은 일을 함.
- 프로그램은 가상화를 인지해서는 안 됨.
- OS와 하드웨어가 뒤에서 일하는 덕에 프로그래머는 다중화 인식 없이 코딩 가능
Address translation

- OS Kernel
- 문맥 교환시 올바른 베이스/바운드 값 선택
- 메모리 공간 할당 및 회수(free list를 통해)
- 예외 발생 시 실행할 코드 마련
- Relocatable loader
- 프로세스를 생성할 때 실행 파일의 주소를 모두 물리주소(오프셋)에 맞게 변환
- MMU(base&bound)
- 가상주소를 변환하고 범위 아넹 있는지 검사하는 능력
- base: 변환기준, bound: 범위
- CPU Previleged Instructions(특권 명령어)
- 베이스/바운드 원하는 값으로 지정할 수 있어야 함.
- 예외 핸들러를 HW가 알 수 있도록 등록할 수 있어야 함.
Segmentation

- Segment: 임의의 크기의 같은 성질의 연속된 주소 공간
- Segment fault: 세그먼트 영역을 벗어난 사용하지 않는 주소 공간에 접근
- External fragmentation: 세그먼트 할당이나 확장에 쓸모가 없는 작은 빈공간들, 세그먼트의 크기가 일정치 않아 생기는 대표적 문제
- Sparse Address Space: 사용하지 않는 영역이 많은 대형 주소 공간
- Compact: 실행중인 프로세스를 중단하고 그 데이터를 하나의 공간으로 모아서 큰 빈 공간을