CS/운영체제

[운영체제] 단편화와 메모리 관리 기법(페이징, 세그멘테이션)

s0ojin 2023. 3. 14. 20:43

단편화 (Fragmentation)란?


: 메모리의 공간이 작은 조각으로 나뉘어 사용 가능한 메모리가 충분히 존재하지만 할당(사용)이 불가능한 상태

 

내부 단편화(Internal Fragmentation)

: 할당된 공간보다 프로세스가 더 작아서 생기는 남는 부분.

 

외부 단편화(External Fragmentation)

: 프로세스들이 메모리에 할당되고 해제되는 과정이 반복되면서, 연속적이지 않은 공간들이 생기는 것.

 

 

 

 

메모리 관리 방법


: 단편화 현상을 줄이고, 적절한 swapping을 통해 효율적으로 메모리를 관리하기 위한 방법

 

1. 압축 : 외부 단편화 해결

:외부 단편화를 해소하기 위해 프로세스가 사용하는 공간들을 한쪽으로 몰아, 자유공간을 확보하는 방법론

  • 메모리에 적재된 프로세스를 정지시키고 한쪽으로 이동시키는 작업이 필요해 비효율적.
  • 어느 빈 공간을 기준으로 모을지에 대한 알고리즘도 모호함.

 

2. 페이징(Paging) : 외부 단편화 해결,  내부 단편화 존재

: 하나의 프로세스가 사용하는 메모리 공간이 연속적이어야 한다는 제약을 없애는 메모리 관리 기법으로, 프로세스를 고정된 크기로 쪼개어 빈자리에 할당하는 것.

  • 물리 메모리는 Frame 이라는 고정 크기로 분리, 논리 메모리(프로세스가 점유하는)는 페이지라 불리는 고정 크기의 블록으로 분리
  • 논리 메모리는 물리 메모리에 저장될 때, 연속되어 저장될 필요가 없고 물리 메모리의 남는 프레임에 적절히 배치됨
  • 개별 페이지의 순서와는 관계없이 페이지번호와 프레임번호를 매핑시켜주는 page table이 있다.

 

단점 : 쪼개서 저장하더라도 마지막 조각은 남을 수도 있다. 예를 들어 950을 200씩 나누면 마지막 조각은 150이 되므로 할당된 200보다 50이 비게되는 내부 단편화 문제가 여전히 발생한다.

 

3. 세그먼테이션(Segmentation) : 내부 단편화 해결,  외부 단편화 존재

: 페이징에서처럼 논리 메모리와 물리 메모리를 같은 크기의 블록이 아닌, 서로 다른 크기의 논리적 단위인 세그먼트(Segment)로 분할

  • 세그먼트 기법의 할당 방식은 페이징 방법과 유사하지만 페이지테이블이아닌 세그먼트 테이블이 존재한다.
  • 세그먼트 테이블에는 세그먼드번호, 세그먼트의 시작주소(base), 프로세스의 크기(limit)가 저장되어있다.

 

단점 : 논리적 단위에 맞추어 메모리를 할당하기 때문에 할당된 공간보다 프로세스가 더 작아서 생기는 내부단편화 문제는 발생하지 않는다. 그러나 서로 다른 크기의 세그먼트들이 메모리에 적재되고 제거되는 일이 반복되면, 자유 공간들이 많은 수의 작은 조각들로 나누어져서 프로세스 할당이 어려운 외부단편화 문제가 발생한다.

 

 

 

Reference