본문 바로가기
CS/운영체제

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

by s0ojin 2023. 3. 14.

단편화 (Fragmentation)란?


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

 

내부 단편화(Internal Fragmentation)

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

 

외부 단편화(External Fragmentation)

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

 

 

 

 

메모리 관리 방법


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

 

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

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

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

 

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

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

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

 

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

 

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

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

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

 

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

 

 

 

Reference


 

 

 

댓글