메모리 관리
메모리 관리 (Memory Management)
프로세스 간 메모리 격리, 한정된 자원의 최적 할당, 편리한 추상화 제공
Multiprogramming
하나의 메모리 공간에 여러 프로세스를 적재하는 기법
요구사항
- Protection (프로세스 간 격리)
- Fast translation (빠른 주소 변환)
- Fast context switching
메모리 분할 방식
고정 분할 (Fixed Partitions)
- 물리적 메모리를 동일한 크기의 고정된 파티션으로 분할
- 장점: 구현 쉬움, 컨텍스트 스위칭 빠름
- 단점: 내부 단편화 발생, 유연성 부족
- 개선: 파티션 크기를 다르게 설정, 최적 적합 할당 방식 사용
가변 분할 (Variable Partitions)
- 프로세스가 필요한 만큼만 메모리 할당
- 장점: 내부 단편화 없음
- 단점: 외부 단편화 발생
- 해결책: 압축(Compaction), 페이징, 세그멘테이션
단편화 (Fragmentation)
| 종류 | 정의 | 발생 상황 |
|---|---|---|
| 내부 단편화 | 할당된 공간 내에서 사용되지 않는 낭비 공간 | 고정 분할에서 프로세스가 파티션보다 작을 때 |
| 외부 단편화 | 전체 여유 공간은 충분하지만 연속되지 않아 할당 불가 | 가변 분할에서 반복된 할당/해제 후 |
오버레이 (Overlays)
- 프로그램의 일부분만 메모리에 적재하여 실행
- 메모리 제한 시스템에서 큰 프로그램 실행 가능
- 단점: 구현 복잡
스와핑 (Swapping)
- 실행 중인 프로세스를 메모리 → 백업 스토리지로 이동, 필요 시 다시 로드
- 다중 프로그래밍 지원
- 단점: 전송 시간 많이 소요
- 주의: I/O 대기 중인 프로세스는 스와핑하면 안 됨
가상 메모리 (Virtual Memory)
- 물리적 메모리 크기에 구애받지 않고 큰 연속 메모리 공간 제공
- 필요한 데이터만 메모리에 로드 (Demand Paging)
- 각 프로세스는 고유의 가상 주소 공간 보유
장점
- 사용자 논리 메모리와 물리 메모리 분리
- 여러 프로그램 동시 실행 가능
- 프로세스 간 주소 공간 격리
단점
- 성능 저하 가능
- 페이지 테이블 유지에 시간적·공간적 오버헤드
페이지 교체 알고리즘
- LRU (Least Recently Used): 가장 오랫동안 사용되지 않은 페이지 교체
I/O 명령 전달 방식
- Programmed I/O: CPU가 직접 I/O 장치 제어 (폴링)
- Interrupt-driven I/O: I/O 완료 시 인터럽트로 CPU에 알림