Skip to main content

단편화

단편화란?

단편화(fragmentation)란 기억 장치의 연속된 영역을 할당할 경우에 사용되지 않고 낭비되는 부분적인 기억 공간을 말한다.

단편화에는 크게 외부 단편화와 내부 단편화가 있는데 이 두가지에 대해 자세히 살펴보도록 하자.

외부 단편화

외부 단편화란 어떤 분할 영역이 사용되지 않고 남아 있어서 이용할 수는 있으나, 대기 중인 작업의 크기에 비해 기억 장소가 너무 작아서 그 영역 자체가 사용되지 못하는 경우를 말한다.

이러한 현상은 앞의 페이징 세그멘테이션 문서에서 봤듯이 세그멘테이션 기법을 사용하였을 때 발생한다.

내부 단편화

내부 단편화란 메모리를 할당할 때 프로세스가 필요한 양보다 더 큰 메모리가 할당되어서 프로세스에서 사용하는 메모리 공간이 낭비 되는 현상을 말한다.

이러한 현상은 앞의 페이징 세그멘테이션 문서에서 봤듯이 페이징 기법을 사용하였을 때 발생한다.

단편화 해결 방법

단편화를 해결하는 대표적인 두 가지 방법은 메모리 배치 방식조각 모음방식이 있다.

메모리 배치 방식

메모리 배치 방식은 작은 조각이 발생하지 않도록 프로세스를 배치하는 것을 말한다. 이 방식은 근본적으로 단편화를 완전하게 해결할 수는 없지만 어느 정도 완화시켜줄 수는 있다. 메모리 배치 방식에는 크게 4가지가 있는데 최초 배치, 최적 배치, 최악 배치, 버디 시스템이 있다.

최초 배치

최초 배치는 단편화를 고려하지 않는 것으로 , 프로세스를 메모리의 빈 공간에 배치할 때 메모리에서 적재 가능한 공간을 순서대로 찾다가 첫 번째로 발견한 공간에 프로세스를 배치하는 방법이다.

최적 배치

최적 배치는 메모리의 빈 공간을 모두 확인한 후 적당한 크기 가운데 가장 작은 공간에 프로세스를 배치하는 방법이다.

최악 배치

취악 배치는 빈 공간을 모두 확인한 후 가장 큰 공간에 프로세스를 배치하는 방법이다.

조각 모음

단편화가 발생하면 이미 배치된 프로세스를 옆으로 옮겨 빈 공간들을 하나의 큰 덩어리로 만들어야 하는데 이것이 바로 조각 모음이다.

조각 모음은 서로 떨어져 있는 여러 개의 빈 공간을 합치는 작업이다. 순서는 다음과 같다.

  1. 조각 모음을 하기 위해 이동할 프로세스의 동작을 멈춘다.
  2. 프로세스를 적당한 위치로 이동한다. 프로세스가 원래의 위치에서 이동하기 때문에 프로세스의 상대 주소값을 바꾼다.
  3. 이러한 작업을 다 마친 후 프로세스를 다시 시작한다.

이러한 조각 모음은 컴퓨터 과학에서 집약이라고 표현한다. 통합과 집약에 대해서도 간단하게 살펴보는 것을 추천한다.

나올 수 있는 면접 질문

  • 단편화의 종류에는 어떤 것들이 있나요?
  • 페이징 기법은 어떤 단편화가 일어나게 되고, 세그멘테이션 기법은 어떤 단편화가 일어나게 되나요?
  • 단편화를 해결하는 방법에는 어떤 것들이 있나요?

참고 url

기여자


Kyun Heo

📦