메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

메모리 단편화: 두 판 사이의 차이

noriwiki
새 문서: 분류: 메모리 관리 == 개요 == 가용 메모리에 사용할 수 없는 불필요한 공간이 생기는 현상을 말한다. # 내부 단편화 (Internal Fragmentation): 세그멘테이션이나 페이징과 같이 메모리를 여러개로 쪼갤경우 외부적으로 보기에는 단편화가 없어 보이지만, 각각의 영역안에서는 내부 단편화가 발생하게 된다. 각각의 세그멘테이션 혹은 페이지 안에서 사용되지 않는 공간...
 
편집 요약 없음
 
2번째 줄: 2번째 줄:


== 개요 ==
== 개요 ==
가용 메모리에 사용할 수 없는 불필요한 공간이 생기는 현상을 말한다.
'''단편화(Fragmentation)'''는 운영체제에서 메모리를 효율적으로 관리하지 못해, 실제로는 가용 메모리가 충분함에도 불구하고 메모리 할당이 불가능해지는 현상을 의미한다. 이로 인해 가용 메모리 내에 사용되지 않는 불필요한 공간이 발생하며, 전체적인 메모리 활용률이 저하된다. 단편화는 크게 두 가지 유형으로 분류된다:


# 내부 단편화 (Internal Fragmentation): 세그멘테이션이나 페이징과 같이 메모리를 여러개로 쪼갤경우 외부적으로 보기에는 단편화가 없어 보이지만, 각각의 영역안에서는 내부 단편화가 발생하게 된다. 각각의 세그멘테이션 혹은 페이지 안에서 사용되지 않는 공간이 생길 경우 이를 내부적으로 단편화가 일어났다고 한다.
=== 내부 단편화 (Internal Fragmentation) ===
# 외부 단편화 (External Fragmentation): 메모리에 가용한 영역이 있지만, 메모리 영역에 띠엄 띠엄 배치되어 있어서, 하나의 큰 block을 할당하지 못할때 외부적으로 단편화 되었다고 한다. 예를 들어서 세그멘테이션을 이용하여 100MB메모리를 5개로 나눌경우, 30MB까지 block을 연속된 세그멘테이션에 할당하지 못하는 경우가 생길 수 있다.
내부 단편화는 메모리를 고정 크기의 블록 또는 단위(예: 페이지, 세그먼트)로 나눠 사용하는 방식에서 발생한다. 메모리 블록이 프로세스의 요구량보다 클 경우, 할당된 블록 내에서 일부 공간이 비어 있는 채로 남게 되며 이 공간은 다른 프로세스가 사용할 수 없다.
 
; 예시 
: 4KB 크기의 페이지 단위로 메모리를 나누고, 한 프로세스가 6KB의 메모리를 요청한 경우, 두 개의 페이지가 할당된다. 이때 실제 사용되는 공간은 6KB지만, 할당된 공간은 8KB로, 2KB가 사용되지 않고 남게 되며 이는 내부 단편화에 해당한다.
 
=== 외부 단편화 (External Fragmentation) ===
외부 단편화는 가변 크기의 블록을 사용하는 경우 발생한다. 메모리 내에 사용 가능한 공간은 존재하지만, 이 공간이 연속적이지 않고 조각나 있어, 큰 크기의 메모리 블록을 할당할 수 없는 상황을 말한다.
 
; 예시 
: 100MB의 메모리 공간이 존재하나, 그 공간이 10MB, 20MB, 15MB, 30MB, 25MB와 같이 불연속적으로 나뉘어 있을 경우, 총 100MB가 남아 있음에도 불구하고 50MB의 연속된 공간을 할당하지 못하게 되는 현상이 발생한다. 이는 외부 단편화의 전형적인 예이다.
 
=== 단편화 발생 원인 ===
* 메모리의 동적 할당 및 해제
* 프로세스 생성/종료 반복
* 메모리 요청 크기의 다양성
* 세그멘테이션 또는 가변 할당 전략의 비효율성
 
=== 단편화 해결 방법 ===
* '''압축(Compaction):''' 외부 단편화 해결을 위해 메모리 내의 할당된 블록을 한쪽으로 몰아서 연속된 공간을 확보하는 방식. 다만, 실행 중인 프로세스를 이동시켜야 하기 때문에 오버헤드가 크다.
* '''페이징(Paging):''' 메모리를 동일한 크기의 블록으로 나누어 할당함으로써 외부 단편화를 방지할 수 있다. 하지만 내부 단편화는 여전히 발생할 수 있다.
* '''세그멘테이션(Segmentation):''' 논리적 단위로 메모리를 나누되, 각 세그먼트는 가변 크기이므로 외부 단편화 가능성이 존재한다.
* '''혼합 기법(Paging + Segmentation):''' 페이징과 세그멘테이션을 혼합하여 각각의 단점을 보완하는 방식.

2025년 4월 12일 (토) 09:33 기준 최신판


개요

단편화(Fragmentation)는 운영체제에서 메모리를 효율적으로 관리하지 못해, 실제로는 가용 메모리가 충분함에도 불구하고 메모리 할당이 불가능해지는 현상을 의미한다. 이로 인해 가용 메모리 내에 사용되지 않는 불필요한 공간이 발생하며, 전체적인 메모리 활용률이 저하된다. 단편화는 크게 두 가지 유형으로 분류된다:

내부 단편화 (Internal Fragmentation)

내부 단편화는 메모리를 고정 크기의 블록 또는 단위(예: 페이지, 세그먼트)로 나눠 사용하는 방식에서 발생한다. 메모리 블록이 프로세스의 요구량보다 클 경우, 할당된 블록 내에서 일부 공간이 비어 있는 채로 남게 되며 이 공간은 다른 프로세스가 사용할 수 없다.

예시
4KB 크기의 페이지 단위로 메모리를 나누고, 한 프로세스가 6KB의 메모리를 요청한 경우, 두 개의 페이지가 할당된다. 이때 실제 사용되는 공간은 6KB지만, 할당된 공간은 8KB로, 2KB가 사용되지 않고 남게 되며 이는 내부 단편화에 해당한다.

외부 단편화 (External Fragmentation)

외부 단편화는 가변 크기의 블록을 사용하는 경우 발생한다. 메모리 내에 사용 가능한 공간은 존재하지만, 이 공간이 연속적이지 않고 조각나 있어, 큰 크기의 메모리 블록을 할당할 수 없는 상황을 말한다.

예시
100MB의 메모리 공간이 존재하나, 그 공간이 10MB, 20MB, 15MB, 30MB, 25MB와 같이 불연속적으로 나뉘어 있을 경우, 총 100MB가 남아 있음에도 불구하고 50MB의 연속된 공간을 할당하지 못하게 되는 현상이 발생한다. 이는 외부 단편화의 전형적인 예이다.

단편화 발생 원인

  • 메모리의 동적 할당 및 해제
  • 프로세스 생성/종료 반복
  • 메모리 요청 크기의 다양성
  • 세그멘테이션 또는 가변 할당 전략의 비효율성

단편화 해결 방법

  • 압축(Compaction): 외부 단편화 해결을 위해 메모리 내의 할당된 블록을 한쪽으로 몰아서 연속된 공간을 확보하는 방식. 다만, 실행 중인 프로세스를 이동시켜야 하기 때문에 오버헤드가 크다.
  • 페이징(Paging): 메모리를 동일한 크기의 블록으로 나누어 할당함으로써 외부 단편화를 방지할 수 있다. 하지만 내부 단편화는 여전히 발생할 수 있다.
  • 세그멘테이션(Segmentation): 논리적 단위로 메모리를 나누되, 각 세그먼트는 가변 크기이므로 외부 단편화 가능성이 존재한다.
  • 혼합 기법(Paging + Segmentation): 페이징과 세그멘테이션을 혼합하여 각각의 단점을 보완하는 방식.