15장: 주소 변환의 원리
개요
어떻게 메모리를 가상화 하여
효율성과 제어를 달성할 것인가 ?
효율성: 가상 주소 → 물리주소 변환의 속도
제어권: 접근 가능한 메모리 위치 제한
유연성: 프로그래밍 편의
메모리 가상화
- 하드웨어 지원이 필요함
- 빠른 주소 변환
- MMU, TLB, Cache ..
- OS 역할
- 빈 공간 관리 및 할당
- 관리 효율 및 접근 제어
- 가상 공간의 동적 운영
메모리 사용 예
void func() {
int x = 3000;
x = x + 3;
}
어셈블리어 변환
- 128 번지 명령어 인출
- 명령 실행
- 132 번지 명령어 인출
- 명령 실행
- 135 번지 명령어 인출
- 명령 실행
가상 주소와 물리 주소
물리적 주소
- 물리 메모리에 그대로 올리면 안됨
→ OS 재배치 작업 필요 - 메모리 접근 시마다 실제 주소로 변환 작업
Base/Bounds Register
- Base Register = 재배치된 위치의 시작 주소
- Bound Register = 재배치된 위치의 상한점
실제 물리주소 = 가상주소 + Base
Bound 레지스터는 범위 벗어났는지 등의 무결성 검사
Base/Bounds 문제점
- Stack과 Heap 사이 공간이 낭비됨 = 내부 단편화
- 프로세스마다 요구하는 주소 공간의 크기가 다르면 ?
- 물리 메모리가 가상 주소 공간보다 작으면 ?
운영체제의 역할
메모리 접근 시 주소 변환은 하드웨어가 실행함
OS는 뭘 할까 ?
운영체제 할 일
- 빈공간 관리
- 물리공간에서 적절한 위치를 찾아 할당
- 사용 완료된 공간은 빈 공간으로 회수
- Context Switch
- Base/Bounds 레지스터의 값 저장 및 복원
PCB에 저장하여 관리함 (커널 모드 필요) - 필요 시 프로세스 재배치
- Base/Bounds 레지스터의 값 저장 및 복원
- 프로세스 실행 시
- 메모리 예외 발생처리
만약 할당되는 크기가 다르다면 ?
연속되는 빈 공간을 따로 관리 ?
'🖥️ Computer Science > Operating System' 카테고리의 다른 글
[OS] 17장: Free-Space Management (0) | 2024.06.29 |
---|---|
[OS] 16장: Segmentation (0) | 2024.06.28 |
[OS] 13장: Memory Virtualization (0) | 2024.06.26 |
[OS] Cuncurrency: 동시성 개요 (0) | 2024.05.06 |
[OS] 멀티 프로세서 스케줄링 (1) | 2024.05.05 |