메모리 관리는 컴퓨터 시스템에서 메모리 자원을 효율적으로 관리하고 배분하는 과정이다. 이는 운영 체제의 핵심 기능 중 하나로, 프로그램이 효과적으로 실행될 수 있도록 메모리를 할당하고 해제하는 작업을 포함한다. 이 장에서는 메모리 할당과 관리에 대해 상세히 다루겠다.

고정 분할 할당 (Fixed Partition Allocation)

고정 분할 할당은 메모리를 여러 고정된 크기의 분할로 나누어 각 분할에 하나의 프로세스를 할당하는 기법이다.

가변 분할 할당 (Variable Partition Allocation)

가변 분할 할당은 메모리를 가변 크기의 블록으로 나누며, 프로세스 요청에 따라 동적으로 블록의 크기가 결정된다.

동적 할당 기법 (Dynamic Allocation Techniques)

프로세스의 메모리 요구사항이 동적으로 변화할 때 이를 반영하기 위한 다양한 동적 할당 기법들이 있다.

최초 적합 (First Fit)

처음 발견한 충분히 큰 블록에 프로세스를 할당하는 기법이다.

  1. 장점: 구현이 간단하고 빠름
  2. 단점: 메모리 영역 전체에 걸쳐 외부 단편화가 발생하기 쉬움

최적 적합 (Best Fit)

가장 작은 충분한 블록에 프로세스를 할당하는 기법이다.

  1. 장점: 남은 메모리 공간 최소화
  2. 단점: 작은 단편들을 많이 남길 수 있음, 할당 과정이 복잡하고 느릴 수 있음

최악 적합 (Worst Fit)

가장 큰 블록에 프로세스를 할당하는 기법이다.

  1. 장점: 큰 빈 공간을 나누어 작은 단편화를 줄임
  2. 단점: 처음에는 좋지만 시간이 지나면 큰 블록이 없어져 비효율적

메모리 압축 (Memory Compaction)

외부 단편화를 해결하기 위해 메모리 블록을 한쪽으로 몰아서 다시 큰 연속 공간을 만드는 방법이다.

\text{시간복잡도}가 높은 작업이므로 주기적으로 실행하거나 메모리가 특정 한계에 도달했을 때 실행한다.

가상 메모리 (Virtual Memory)

가상 메모리는 물리적 메모리 한계를 넘어서 프로세스가 실행될 수 있도록 하는 기술이다. 이는 주로 디스크 저장 장치와 결합하여 사용된다.

페이징 (Paging)

페이징은 메모리를 일정 크기인 페이지로 나누고, 가상 메모리와 물리 메모리 간에 페이지 단위로 데이터 전송을 하는 방식이다.

세그먼테이션 (Segmentation)

세그먼테이션은 논리적 단위인 세그먼트로 메모리를 나누는 방식이다. 각 세그먼트는 크기가 다를 수 있으며, 주로 코드, 데이터, 스택 등을 분리한다.

페이지 교체 알고리즘 (Page Replacement Algorithms)

페이지 부재가 발생했을 때 어느 페이지를 교체할지를 결정하는 알고리즘이다.

FIFO (First In First Out)

가장 먼저 들어온 페이지를 가장 먼저 교체하는 방식이다.

LRU (Least Recently Used)

가장 오랫동안 사용되지 않은 페이지를 교체하는 방식이다.

LFU (Least Frequently Used)

가장 적게 사용된 페이지를 교체하는 방식이다.