ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 메모리 분할 방식
    운영체제 2022. 7. 8. 00:20

    가변 분할 방식

    프로세스의 크기에 맞춰서 연속적인 메모리를 할당하는 방식이다.


    장점

    각 프로세스를 연속된 메모리 공간에 배치할 수 있다는 장점이 있다.


    단점 - 외부 단편화(external fragmentation)

    위 그림에서 프로세스 C를 종료한 다음 용량이 30KB인 새로운 프로세스를 실행한다고 가정하자. 전체 빈 공간의 크기는 40KB이지만, 20KB 크기의 두 조각으로 나뉘어졌기 때문에 새로운 프로세스를 위한 공간을 할당할 수가 없다. 이와 같이 작은 조각이 발생하는 것을 단편화라 한다. 그리고 이러한 상황은 프로세스 외부에서 발생하는 단편화이기 때문에 외부 단편화라고 부른다.


    이러한 외부 단편화를 없애기 위해서는 실행중인 프로세스의 자리를 옮겨 메모리를 통합해야 할 것이다. 그러나 이러한 방법은 메모리 관리가 복잡하다.


    선처리 - 메모리 배치 방식(memory placement strategy)

    가변 분할 방식에서는 외부 단편화를 해결하기 위해 프로세스 배치 시 최초 배치, 최적 배치 등의 메모리 배치 전략을 선처리로 사용하고, 빈 조각들을 모아주는 조각 모음을 후처리로 사용한다.

    최초 배치(first fit)

    메모리에서 적재 가능한 공간 중 가장 먼저 발견한 공간에 프로세스를 배치하는 방식이다.


    최적 배치(best fit)

    적재 가능한 공간 중 가장 작은 공간에 배치하는 방식이다. 딱 맞는 공간에 들어간다면 괜찮지만, 그렇지 않은 경우 아주 작은 빈 조각이 만들어지는 단점이 있다.


    최악 배치(worst fit)

    적재 가능한 공간 중 가장 큰 공간에 배치하는 방식이다. 프로세스를 배치하고 난 이후에도 남은 공간이 크기 때문에 쓸모가 있지만, 빈 공간의 크기가 점점 줄어들면 최적 배치처럼 작은 조각이 만들어진다.


    후처리 - 조각 모음(defragmentation)

    이미 배치된 프로세스를 옮겨서 빈 공간들을 하나의 큰 공간으로 합치는 작업이다. 여러 프로세스를 중지시키고, 이동하고, 주소를 바꾸고 다시 시작하는 작업을 해야 하기 때문에 많은 시간이 걸린다.


    고정 분할 방식

    프로세스의 크기와 상관없이 메모리를 단위 크기로 나누어서 각 프로세스에 할당해주는 방식이다. 다음 그림은 단위 크기가 20KB라 가정했을 때 고정 분할 방식을 적용한 모습이다.


    장점

    메모리를 일정한 크기로 나눠 관리하기 때문에 메모리 관리가 수월하다. 메모리 통합이 필요 없다. 새로운 프로세스를 실행할 때는 크기에 맞는 개수의 빈 조각들을 찾아서 해당 공간에 프로세스를 올리고 실행하면 된다. 빈 조각들이 흩어져 있어도 된다.


    단점 - 내부 단편화(internal fragmentation)

    그러나 단위 크기로 할당된 메모리 조각 내에서 빈 공간이 발생한다. 이를 내부 단편화라 한다. "내부"가 붙은 이유는 단위 공간 내에서 단편화가 발생하기 때문이다. 내부 단편화는 외부 단편화와는 달리 조각 모음이 불가능하고, 남은 공간을 다른 프로세스에 배정할 수도 없다. 이러한 내부 단편화를 최소화하기 위해 단위 크기를 잘 조절하는 것이 중요하다.

    현대 운영체제에서는 이러한 단점을 보완하기 위해 기본적으로는 고정 분할 방식을 사용하지만, 일부분은 가변 분할 방식을 사용한다.


    버디 시스템(buddy system)

    가변 분할 방식의 외부 단편화를 완화하는 또다른 방법으로, 고정 분할 방식과 유사한 점이 있다.


    작동 방식

    a. 프로세스의 크기에 맞게 메모리를 반으로 계속 자르고 맞는 크기가 나오면 프로세스를 배치한다.
    b. 나뉜 각 구역에는 프로세스가 1개만 들어간다.
    c. 프로세스가 종료되면 주변의 빈 조각과 합쳐서 하나의 큰 조각이 된다.


    예시


    Reference

    쉽게 배우는 운영체제

    '운영체제' 카테고리의 다른 글

    페이징 기법  (0) 2022.07.15
    가상 메모리 개요  (0) 2022.07.14
    단일 프로그래밍의 메모리 할당  (0) 2022.07.06
    메모리 관리 및 메모리 주소  (0) 2022.07.03
    교착 상태 - (2) 해결 방법  (0) 2022.06.19

    댓글

Designed by Tistory.