
초기 컴퓨터 시스템에서는 프로그램을 실행하려면 운영체제가 프로그램 전체를 수용할 수 있는 연속적인 메인 메모리 공간을 확보해야 했다. 프로그램이 여유 메모리보다 큰 경우 이를 실행할 수 없었다. 이와 같이 연속적인 메인 메모리 공간에 프로그램을 할당하는 방식을 연속 메모리 할당(Contiguous Memory Allocation)이라고 한다.
연속 메모리 할당에서 발생하는 문제점을 해결하기 위해 불연속 메모리 할당(Noncontiguous Memory Allocation)을 통해 메모리를 더 효율적으로 사용할 수 있다. 제한된 압축으로 메모리 할당을 변화시켜 외부 단편화 문제를 해결하면 연속적인 공간을 만들 수는 있지만, 실행 시간이 낭비된다.
불연속 메모리 할당은 프로그램을 블록 또는 세그먼트(Segment)로 나누고, 하나의 프로그램에 대하여 연속적으로 붙어 있지 않은 슬롯(Slot)들에 이 정보를 배치할 수 있다. 프로그램 전체를 수용하기엔 너무 작은 메모리 홀(사용하지 않는 작은 공간)을 활용할 수 있게 되었다(외부 단편화=메모리 홀 문제 해결). 운영체제에 더 큰 오버헤드(프로그램이 실행되거나 데이터를 저장하는 데 직접적으로 사용되지 않는 추가적인 메모리 소비)가 발생하지만, 다중 프로그래밍 수준(한번에 메인 메모리에 위치할 수 있는 프로세스 수)이 증가한다. 고정 분할에 해당하는 페이징은 프로그램 하나를 분할하는 기준에 따라 동일한 크기로 나누어 메모리에 적재한다. 세그먼테이션은 크기는 일정하지 않지만 여러 의미 단위로 나누어 메모리로 적재한다.
연속 메모리 할당
- 고정 분할 방법은 크기가 다른 프로세스에 모두 같은 크기의 메모리를 할당하여 메모리 낭비를 초래
- 프로세스의 크기에 따라 메모리를 다르게 분할하는 가변 분할 방법 제시
- 그러나 연속 메모리 할당에서 고정 분할과 가변 분할 모두 효과적인 메모리 활용법은 아니다(내부, 외부 단편화 문제).
불연속 메모리 할당
- 프로그램 하나가 물리적 주소의 여러 공간에 분산
- 고정분할에 해당하는 페이징은 프로그램 하나를 분할하는 기준에 따라 동일한 크기로 나누어 메모리에 적재
- 가변분할에 해당하는 세그먼테이션은 크기는 일정하지 않지만 여러 의미 단위로 나누어 메모리에 적재
Reference
- Harvey M. Deitel, Paul J. Deitel, and David R. Choffnes, Operating Systems, 3rd ed., Pearson, 2003.
- Hyun-Hoe Koo, Operating System: Principles and Structure Illustrated, 1st ed., Hanbit Academy, 2016. (7th printing, 2022).
'Computer_science > Memory' 카테고리의 다른 글
| [메모리] 고정 파티션 멀티 프로그래밍 (0) | 2024.12.31 |
|---|---|
| [메모리] 단일 프로그래밍 연속 메모리 할당 (0) | 2024.12.26 |
| [메모리] 메모리 관리 (0) | 2024.12.09 |
| [메모리] 바인딩과 바인딩 분류 (0) | 2024.12.09 |
| [메모리] 논리적 주소와 물리적 주소의 매핑 (0) | 2024.12.08 |