9장 메모리 관리 총정리
1. 메모리 관리의 개념
- 목적:
- 메모리를 효율적으로 사용하여 다수의 프로세스를 동시 실행.
- 프로세스 간 충돌 방지, 메모리 공유, 동적 할당 지원.
- 메모리 관리의 요구사항:
- 재배치 (Relocation):
- 프로세스가 메모리 어디에 로드되든 실행 가능해야 함.
- 보호 (Protection):
- 공유 (Sharing):
- 다중 프로세스가 특정 메모리 영역을 안전하게 공유.
- 논리적 구성:
- 물리적 구성:
- 주기억장치와 보조기억장치 간 효율적 데이터 이동.
2. 메모리 관리 기법
2.1 연속 메모리 관리
- 고정 분할 (Fixed Partitioning):
- 메모리를 고정된 크기로 나눔.
- 문제점: 내부 단편화 발생, 유연성 부족.
- 동적 분할 (Dynamic Partitioning):
- 프로세스의 크기에 맞춰 가변 크기로 메모리 할당.
- 문제점: 외부 단편화 발생 → 압축(Compaction) 필요.
- 배치 알고리즘:
- 최적 적합 (Best-Fit): 가장 작은 적합한 공간 선택.
- 최초 적합 (First-Fit): 처음으로 맞는 공간 선택.
- 순환 적합 (Next-Fit): 마지막 검색 위치 이후에서 탐색.
2.2 불연속 메모리 관리
페이징 (Paging)
- 메모리를 고정 크기의 페이지로 나누고, 동일 크기의 프레임에 배치.
- 특징:
- 주소 변환:
- 논리 주소 = 페이지 번호 + 오프셋.
- 페이지 번호를 통해 프레임 번호를 찾고, 물리 주소 계산.
- 예:
- 2700바이트 프로세스를 페이지 크기 750바이트로 나눔 → 4개의 페이지 생성.
- 페이지 테이블에 따라 프레임 번호와 매핑.
세그먼테이션 (Segmentation)
- 메모리를 가변 크기의 세그먼트로 나누고, 세그먼트 단위로 관리.
- 특징:
- 논리적 프로그램 구조를 반영.
- 외부 단편화 발생 가능.
- 주소 변환:
- 논리 주소 = 세그먼트 번호 + 오프셋.
- 세그먼트 테이블을 사용해 시작 주소를 찾고, 오프셋을 더해 물리 주소 계산.
- 예:
- 논리 주소
0001001011110000
→ 세그먼트 번호: 1, 오프셋: 752.
- 세그먼트 1의 시작 주소(8192)에 오프셋(752)을 더해 물리 주소: 0010001100010000.
2.3 버디 시스템
- 메모리를 2의 거듭제곱 크기로 분할.
- 할당 후 반환 시, 인접한 "버디" 블록과 병합하여 큰 블록으로 통합.
- 특징:
- 외부 단편화 제거.
- 내부 단편화는 일부 발생.
- 예:
- 요청 크기에 따라 128KB, 256KB 등 적합한 크기의 블록 할당.
- 반환 시, 동일 크기의 인접 블록과 병합하여 더 큰 블록 생성.
3. 재배치(Relocation)
- 프로세스가 메모리에 로드될 때 논리 주소를 물리 주소로 변환.
- 주소 유형:
- 논리 주소: 프로그램이 사용하는 가상 주소.
- 상대 주소: 베이스 레지스터 기준으로 계산된 주소.
- 물리 주소: 실제 메모리 주소.
- 구조:
- 베이스 레지스터: 세그먼트 시작 주소 저장.
- 경계 레지스터: 세그먼트 크기 저장.
- 주소가 경계를 벗어나면 보호 기능 동작.
4. 페이징과 세그먼테이션 비교
항목 | 페이징 (Paging) | 세그먼테이션 (Segmentation) |
---|
분할 단위 | 고정 크기의 페이지 | 가변 크기의 세그먼트 |
단편화 | 내부 단편화 발생 가능 | 외부 단편화 발생 가능 |
주소 구성 | 페이지 번호 + 오프셋 | 세그먼트 번호 + 오프셋 |
장점 | 외부 단편화 없음, 메모리 활용도 높음 | 논리적 프로그램 구조 반영 가능 |
단점 | 내부 단편화, 페이지 테이블 관리 | 외부 단편화, 주소 변환 복잡성 |
5. 질문 정리
-
버디 시스템에서 내부 단편화 발생 문제:
- 버디 시스템은 외부 단편화를 완전히 제거하지만, 고정 크기 블록 사용으로 내부 단편화가 발생할 수 있음.
- 해결 방안: 블록 크기를 점진적으로 병합해 공간 활용성을 높임.
-
페이징과 세그먼테이션의 주소 변환:
- 페이징: 논리 주소 → 페이지 번호, 오프셋 → 물리 주소 계산.
- 세그먼테이션: 논리 주소 → 세그먼트 번호, 오프셋 → 시작 주소와 오프셋 더해 물리 주소 계산.
- 예: 논리 주소
0001001011110000
에서 계산된 물리 주소가 PPT 결과와 일치.
-
버디 시스템의 병합 과정:
- 메모리 반환 시 동일 크기의 인접 블록(버디)을 병합하여 더 큰 블록으로 통합.
-
재배치의 동작 원리:
- 논리 주소가 베이스 레지스터와 경계 레지스터를 통해 물리 주소로 변환.
- 주소 변환 과정에서 보호 기능 제공.
6. 결론
9장 메모리 관리는 운영체제에서 중요한 역할을 담당하며, 효율적인 메모리 사용과 프로세스 보호를 보장합니다. 페이징, 세그먼테이션, 버디 시스템 등 다양한 기법을 이해하고 각각의 장단점을 분석하면 실제 문제를 더 잘 해결할 수 있습니다.