단편화
단편화란?
단편화(fragmentation)란 기억 장치의 연속된 영역을 할당할 경우에 사용되지 않고 낭비되는 부분적인 기억 공간을 말한다.
단편화에는 크게 외부 단편화와 내부 단편화가 있는데 이 두가지에 대해 자세히 살펴보도록 하자.
외부 단편화
외부 단편화란 어떤 분할 영역이 사용되지 않고 남아 있어서 이용할 수는 있으나, 대기 중인 작업의 크기에 비해 기억 장소가 너무 작아서 그 영역 자체가 사용되지 못하는 경우를 말한다.
이러한 현상은 앞의 페이징 세그멘테이션 문서에서 봤듯이 세그멘테이션 기법을 사용하였을 때 발생한다.
내부 단편화
내부 단편화란 메모리를 할당할 때 프로세스가 필요한 양보다 더 큰 메모리가 할당되어서 프로세스에서 사용하는 메모리 공간이 낭비 되는 현상을 말한다.
이러한 현상은 앞의 페이징 세그멘테이션 문서에서 봤듯이 페이징 기법을 사용하였을 때 발생한다.
단편화 해결 방법
단편화를 해결하는 대표적인 두 가지 방법은 메모리 배치 방식
과 조각 모음
방식이 있다.
메모리 배치 방식
메모리 배치 방식은 작은 조각이 발생하지 않도록 프로세스를 배치하는 것을 말한다. 이 방식은 근본적으로 단편화를 완전하게 해결할 수는 없지만 어느 정도 완화시켜줄 수는 있다.
메모리 배치 방식에는 크게 4가지가 있는데 최초 배치
, 최적 배치
, 최악 배치
, 버디 시스템
이 있다.
최초 배치
최초 배치는 단편화를 고려하지 않는 것으로 , 프로세스를 메모리의 빈 공간에 배치할 때 메모리에서 적재 가능한 공간을 순서대로 찾다가 첫 번째로 발견한 공간에 프로세스를 배치하는 방법이다.
최적 배치
최적 배치는 메모리의 빈 공간을 모두 확인한 후 적당한 크기 가운데 가장 작은 공간에 프로세스를 배치하는 방법이다.
최악 배치
취악 배치는 빈 공간을 모두 확인한 후 가장 큰 공간에 프로세스를 배치하는 방법이다.
조각 모음
단편화가 발생하면 이미 배치된 프로세스를 옆으로 옮겨 빈 공간들을 하나의 큰 덩어리로 만들어야 하는데 이것이 바로 조각 모음이다.
조각 모음은 서로 떨어져 있는 여러 개의 빈 공간을 합치는 작업이다. 순서는 다음과 같다.
- 조각 모음을 하기 위해 이동할 프로세스의 동작을 멈춘다.
- 프로세스를 적당한 위치로 이동한다. 프로세스가 원래의 위치에서 이동하기 때문에 프로세스의 상대 주소값을 바꾼다.
- 이러한 작업을 다 마친 후 프로세스를 다시 시작한다.
이러한 조각 모음은 컴퓨터 과학에서 집약
이라고 표현한다. 통합과 집약에 대해서도 간단하게 살펴보는 것을 추천한다.
나올 수 있는 면접 질문
- 단편화의 종류에는 어떤 것들이 있나요?
- 페이징 기법은 어떤 단편화가 일어나게 되고, 세그멘테이션 기법은 어떤 단편화가 일어나게 되나요?
- 단편화를 해결하는 방법에는 어떤 것들이 있나요?
참고 url
기여자
Kyun Heo
📦