본문 바로가기

CS Study/Operating System

메모리 관리 - 메모리 단편화, 페이징, 세그멘테이션

메모리 단편화

RAM 에서 메모리의 공간이 작은 조각으로 나뉘어져 사용 가능한 메모리가 공간이 실제로는 충분히 존재하지만 사용이 불가능한 상태.

  1. 내부 단편화 : 메모리를 할당할 때 프로세스가 필요한 메모리보다 더 큰 메모리가 할당되어 프로세스에서 사용하는 메모리 공간이 낭비되는 현상. 예를 들어, 메모리를 할당하는 최소 블록 크기가 10K인데 프로세스는 5K만 필요한 상태면 5K가 낭비된다
  2. 외부 단편화 : 메모리가 할당 및 해제 작업을 반복하여 작은 메모리가 띄엄띄엄 존재할때 사용하지 않는 메모리가 존재하는 경우로총 메모리 공간은 충분하지만 실제로 사용이 불가능한 상태.

메모리 단편화 해결 방법

1. Paging 기법

  • 메모리 공간이 연속적으로 할당되어야 한다는 제약조건을 없애는 메모리 관리 전략.
  • 프로세스를 일정 크기인 페이지로 잘라서 메모리에 적재하는 방식.
  • 가상메모리 사용
  • 외부 단편화 해결, 내부 단편화 존재
  • 대부분 Paging 기법 사용

보조기억장치를 이용한 가상메모리를 같은 크기의 블록으로 나눈 것을 page라고 하고 RAM을 페이지와 같은 크기로 다시 나누것을 frame이라고 할 때, 사용하지 않는 프레임을 페이지에 옮기고 필요한 메모리를 페이지 단위로 프레임에 옮기는 기법입니다.

1.1 Paging 테이블

프로세스의 각 페이지에 해당하는 프레임의 위치를 관리하는 테이블입니다. 즉, 하나의 프로세스 당 하나의 페이지 테이블을 갖고 있습니다.

페이지 테이블은 메인메모리에 적재되어있는 페이지 번호와 패당 페이지가 위치한 메인메모리 프레임의 시작 주소를 가지고 있습니다.

1.2 Paging 시스템 구조

  • 가상 주소 v = (p,d)
    • p : 가상 메모리 페이지 번호
    • d : p안에서 처음부터 얼마나 떨어진 위치인지를 나타낸다. (offset 개념)
  • paging system 동작
    해당 프로세스에서 특정 가상 주소에 접근하려면 해당 프로세스의 page table에서 가상 주소가 포함된 page 번호가 있는지 확인한다. 이 page 번호가 있다면 page가 맵핑된 첫번째 물리주소(p')를 알아내고 p' + d 가 실제 물리주소로 변환된다.

    ex) P1의 가상주소 = (1, 222) 이면 페이지 테이블을 찾아 페이지1의 프레임이 12인걸 찾는다. 즉, (12, 222)이고 프레임이 1KB일때 물리주소는 1KB * 12 + 222

2. Segmentation 기법

  • 논리적 단위인 세그먼트로 분할하여 메모리에 적재하는 방식.
  • 가상메모리 사용
  • 내부 단편화 해결, 외부 단편화 존재

페이징기법에서는 가상메모리를 같은 크기의 단위로 분할했지만 세그멘테이션 기법에서는 가상메모리를 논리적 단위인 세그먼트로 분할하여 메모리를 할당하고 실제 메모리 주소로 변환을 하게 된다.

세그먼트들의 크기가 다르기 때문에 메모리에 적재될 때 빈공간을 찾아 할당하는 기법이다.

 

3. 메모리 풀

  • 내부/외부 단편화 해결
  • 메모리 낭비량보다 메모리 풀을 만들었지만 사용하지 않을 경우 문제가된다.
  • 메모리의 할당, 해제가 빈번할때 메모리 풀 방식이 효과적이다.

필요한 메모리 공간을 필요한 크기, 개수 만큼 사용자가 직접 지정하여 미리 할당받아 놓고 필요할 때마다 사용하고 반납하는 기법이다. (미리 할당해놓기 때문에 사용하지 않을때 메모리 누수가 있다.)

메모리 풀 없이 동적할당과 해제를 반복하면 메모리의 랜덤한 위치에 할당과 해제가 반복되면서 단편화가 발생할 수 있지만 미리 공간을 할당해놓고 사용한 다음 반납하기 때문에 이로 인한 외부 단편화는 발생하지 않는다. 또한 필요한 크기만큼 할당을 하기 때문에 내부 단편화도 존재하지 않는다.