혼공컴운_CH14_1_연속 메모리 할당

Today Jeeho Learned·2026년 3월 12일

💾 운영체제 메모리 관리: 스와핑과 연속 할당

프로세스를 실행하려면 해당 프로세스가 반드시 메모리에 적재되어야 합니다. 이때 프로세스에 연속적인 메모리 공간을 할당하는 방식연속 메모리 할당(Contiguous Memory Allocation)이라고 합니다. 이 환경에서 메모리를 효율적으로 관리하기 위한 기법과 발생하는 문제점들을 알아봅시다.

1. 스와핑 (Swapping)

메모리에 적재된 프로세스 중에는 현재 실행되지 않는 프로세스들이 있습니다. 입출력 작업 요구로 대기 상태가 된 프로세스나, 오랫동안 사용되지 않은 백그라운드 프로세스 등이 이에 해당합니다.

이렇게 당장 필요 없는 프로세스들을 임시로 보조기억장치(하드 디스크 등) 일부 영역으로 쫓아내고, 그로 인해 생긴 메모리상의 빈 공간에 당장 실행할 다른 프로세스를 적재하여 실행하는 방식을 스와핑(Swapping)이라고 합니다.

  • 스왑 영역 (Swap Space): 프로세스들이 쫓겨나 임시로 머무는 보조기억장치의 일부 영역입니다.
  • 스왑 아웃 (Swap-out): 실행되지 않는 프로세스가 메모리에서 스왑 영역으로 옮겨지는 과정을 말합니다.
  • 스왑 인 (Swap-in): 스왑 영역에 있던 프로세스가 다시 실행을 위해 메모리로 불려오는 과정을 말합니다.
    • 참고: 스왑 인 될 때는 스왑 아웃되기 전의 물리 주소와는 다른 새로운 주소에 적재될 수 있습니다.

💡 핵심 포인트: 스와핑 기법을 활용하면, 여러 프로세스들이 요구하는 메모리 주소 공간의 총합이 실제 물리 메모리 크기보다 큰 경우에도 프로세스들을 동시에 실행하는 것처럼 보이게 만들 수 있습니다.


2. 메모리 할당 방식

메모리 내에 빈 공간이 여러 개 흩어져 있다면, 새로운 프로세스를 어디에 배치해야 할까요? 빈 공간에 프로세스를 연속적으로 할당하는 3가지 대표적인 방식을 살펴봅니다.

  • 최초 적합 (First-fit): 운영체제가 메모리 내의 빈 공간을 순서대로 검색하다가, 프로세스를 적재할 수 있는 공간을 발견하면 발견 즉시 바로 배치하는 방식입니다.
    • 장점: 검색을 최소화하여 빠르고 효율적인 할당이 가능합니다.
  • 최적 적합 (Best-fit): 운영체제가 모든 빈 공간을 전부 검색해 본 후, 프로세스가 들어갈 수 있는 공간 중 가장 크기가 비슷한 (가장 작은) 빈 공간에 프로세스를 배치하는 방식입니다.
  • 최악 적합 (Worst-fit): 운영체제가 모든 빈 공간을 전부 검색해 본 후, 프로세스가 들어갈 수 있는 공간 중 가장 널널한 (가장 큰) 공간에 프로세스를 배치하는 방식입니다.

3. 외부 단편화 (External Fragmentation)

연속 메모리 할당 환경에서는 치명적인 한계점이 존재합니다. 프로세스들이 메모리에 연속적으로 할당되고 종료되기를 반복하다 보면, 메모리 사이사이에 작은 빈 공간(자투리)들이 생겨납니다.

이러한 흩어진 빈 공간들의 총합은 충분히 크더라도, 공간이 연속적이지 않아 정작 덩치가 큰 새로운 프로세스를 적재하지 못하고 메모리가 낭비되는 현상이 발생하는데, 이를 외부 단편화(External Fragmentation)라고 합니다.

해결책: 압축 (Compaction)

외부 단편화를 해결하기 위한 임시방편으로, 여기저기 흩어져 있는 작은 빈 공간들을 한쪽으로 몰아넣어 하나의 큰 빈 공간으로 만드는 '압축' 방법이 있습니다. (메모리 조각 모음과 비슷합니다.)

🚨 압축의 단점 (오버헤드)

  • 작은 빈 공간들을 하나로 모으는 동안 시스템은 하던 일을 중지해야 합니다.
  • 메모리에 적재된 수많은 프로세스의 위치를 옮기는 작업은 시스템에 막대한 오버헤드(추가적인 자원 소모)를 야기합니다.
  • 어떤 프로세스를 어떻게 움직여야 오버헤드를 최소화하면서 압축할 수 있는지 명확한 방법을 결정하기가 매우 어렵습니다.
profile
기록해야 (살아)남는다 !

0개의 댓글