본문 바로가기
컴퓨터 지식창고

메모리 단편화(Fragmentation)에 대한 해결방법

by 재미보장 2021. 12. 11.

메모리 단편화에 대한 개념과 이에대한 해결방법에 대하여 알아보겠다.

메모리 단편화

RAM에서 메모리의 공간이 작은 조각으로 나뉘어져 사용가능한 메모리가 충분히 존재하지만 할당(사용)이 불가능한 상태를 보고 메모리 단편화가 발생했다고 한다. 메모리 단편화는 내부 단편화와 외부 단편화로 구분 가능하다.

내부 단편화(Internal Fragmentation)

메모리를 할당할 때 프로세스가 필요한 양보다 더 큰 메모리가 할당되어서 프로세스에서 사용하는 메모리 공간이 낭비 되는 상황

* 예를 들어 메모장을 켰는데 OS가 4kb를 할당해줬다. 그런데 사실상 1kb만큼만 사용하고 있을 때 필요 이상으로 프로세스가 메모리를 할당받았으므로 내부 단편화가 3kb만큼 생긴 것임.

외부 단편화(External Fragmentation)

메모리가 할당되고 해제되는 작업이 반복될 때 작은 메모리가 중간중간 존재하게 된다. 이 때 중간중간에 생긴 사용하지 않는 메모리가 많이 존재해서 총 메모리 공간은 충분하지만 실제로 할당할 수 없는 상황이다.

* 예를 들어 메모리 처음 주소에 8mb짜리 프로세스가 할당되었고 바로 이어서 16mb짜리 프로세스가 할당되었다고 가정했을 때 8mb짜리 프로세스를 종료시키면 메모리 처음 주소부터 8mb만큼 공간이 생긴다.

 

이런 식으로 계속해서 빈 메모리가 쌓이는데 예를 들어서 빈 메모리의 공간중에 제일 큰 빈 메모리가 8mb라고 한다면 9mb짜리 프로세스를 할당을 해야할 때 마땅한 공간은 없지만 전체적으로 메모리 여유는 있을 때 외부단편화가 생겼다고 한다.

메모리 단편화 해결방법

메모리 단편화에 대한 해결방법은 압축/통합/페이징/세그먼트/메모리풀 이 있다. 좀더 구체적으로 살펴보겠다.

압축(Compaction)

메모리 공간들을 재배치 하여, 단편화로 인해 분산되어 있는 메모리공간들을 하나로 합치는 기법이다.

통합(Coalescing)

단편화로 인해 분산된 메모리공간들을 인접해 있는 것끼리 통합시켜 큰 메모리 공간으로 합치는 기법이다. 압축은 재배치가 일어나지만 통합은 인접한 공간들끼리 통합된다는 차이가 있다.

페이징(Paging) - 가상 메모리 사용, 외부 단편화 해결

보조기억장치를 이용한 가상 메모리(Virtual Memory)를 같은 크기의 블록으로 나눈 것을 페이지(Page)라고 한다.

주 기억장치를 페이지와 같은 크기로 나눈 것을 프레임(Frame)이라고 한다.

페이징 기법이란 사용하지 않는 프레임을 페이지에 옮기고(swap-out), 필요한 메모리를 페이지 단위로 프레임에 옮기는(swap-in) 기법이다(중기 스케줄링). 외부 단편화는 해결이 되지만 내부 단편화는 해결되지 않는다.

세그멘테이션(Segmentation) - 가상 메모리 사용, 내부 단편화 해결

가상메모리를 사용한다는 것으로는 페이징 기법과 유사하지만 같은 크기로 나누지 않고 서로 다른 크기로 나누고 단위는 세그먼트(Segment)라고 하며, 이를 이용한 메모리 관리 기법을 세그멘테이션 기법이라고 한다. 내부 단편화는 해결이 되지만 외부 단편화는 해결되지 않는다.

메모리 풀(Memory pool) - 내부 단편화, 외부 단편화 해결

동적 할당과 비슷한 개념이지만 필요한 메모리 공간을 필요한 크기, 갯수만큼 사용자가 직접 지정하여 미리 할당받아 놓는다는 점에서 차이가 있다. 미리 할당받아서 메모리 풀을 만들어 놓고 필요할 때마다 사용하고 반납하는 것이 메모리 풀 기법이다. 

 

메모리 풀 없이 동적할당과 해제를 반복하면 랜덤한 위치에 할당과 해제가 반복되면서 단편화를 일으킬 수 있지만 미리 공간을 할당해 놓는다면 필요할 때마다 할당받았던 메모리 공간을 가져다 쓰고 반납하기 때문에 메모리 할당과 해제로 인한 외부 단편화가 생기지 않는다. 필요한 크기만큼 할당을 해놓기 때문에 내부 단편화 또한 생기지 않는다는 장점이 있다. 하지만 메모리 단편화로 인한 메모리 낭비량보다 메모리 풀을 만들었지만 쓰이지 않는 메모리의 양이 큰 경우에는 사용하지 않아야 한다.

 

사전상의 의미인 내부 단편화와 외부 단편화는 생기지 않지만 미리 할당해 놓고 사용하지 않는 순간에도 역시 메모리 누수가 일어나는 것이므로 잦은 동적할당과 해제가 일어날 경우에 사용하는 것이 바람직하다.

 

연관정보 : 캐시메모리 개념과 매핑기법

 

캐시메모리의 개념과 매핑기법에 대한 설명

Cache Memory는 메인 메모리와 CPU간의 데이터 속도 향상을 위한 중간 버퍼 역할을 하는 CPU내 또는 외에 존재하는 메모리이다. 전체 시스템의 성능의 개선을 시킬 수 있는 메모리이다. 이번 포스팅에

gguljaem.tistory.com

연관정보 : CPU 구성 알아보기

 

CPU 구성에 대하여 알아보자.

CPU는 컴퓨터 시스템의 주요 구조로서 컴퓨터의 두되에 해당하는 부분이다. CPU의 구성과 종류에 대하여 자세히 알아보겠다. CPU에 대한 기본 개요 폰노이만 구조 컴퓨터 시스템을 이루는 3대 구성

gguljaem.tistory.com

 

댓글