• 23. 다중 프로그래밍 환경에서의 메모리 할당

    2021. 9. 22.

    by. ahntree

    728x90

    1. 메모리 분할 방식

    메모리에 여러 프로세스를 배치하는 방법은 크게 가변 분할 방식고정 분할 방식으로 나뉜다.

     

     

    가변 분할 방식

    프로세스의 크기에 맞게 메모리가 분할된다. 따라서 분할된 메모리의 영역의 크기가 각각 다르다. 한 프로세스가 연속된 공간에 배치되기 때문에 연속 메모리 할당이라고도 한다.

     

    하나의 프로세스를 연속적인 공간에 배치할 수 있다는 장점이 있지만, 메모리 관리가 복잡하다는 단점이 있다.

     

     

    고정 분할 방식

    프로세스의 크기에 상관없이 메모리를 같은 크기로 나눈다. 한 프로세스가 불연속적인 공간에 분산되어 배치될 수 있기 때문에 비연속 메모리 할당이라고도 한다.

     

    메모리 관리가 수월하다는 장점이 있지만, 메모리 낭비가 발생할 수 있다는 단점이 있다. 현대 운영체제는 기본적으로 고정 분할 방식을 사용하면서 일부분은 가변 분할 방식과 혼합하고 있다.

     

     

     

    2. 가변 분할 방식의 메모리 관리

    가상 메모리 시스템에서는 가변 분할 방식을 세그먼테이션 기법이라고도 한다.

     

     

    프로세스 배치와 외부 단편화

    가변 분할 방식은 연속적으로 프로세스를 배치한다. 그렇기 때문에 빈 공간이 불연속적으로 나뉘어 있을 경우 비어 있는 메모리 > 프로세스 용량 인 상황이라도 프로세스를 배치하지 못하는 상황이 발생한다.

     

    이렇게 작은 조각들이 발생하는 현상을 단편화(fragmentation)라고 하며 특히 가변 분할 방식으로 인해 발생한 작은 공간을 외부 단편화라고 한다. 프로세스의 바깥쪽에 조각이 발생하기 때문이다.

     

    이를 해결하기 위해 메모리 배치 방식이나 조각 모음을 사용한다. 메모리 배치 방식은 작은 조각이 생기지 않도록 프로세스를 배치하는 것이고 조각 모음은 작은 조각들을 모아서 하나의 큰 덩어리로 만드는 작업이다.

     

     

    메모리 배치 방식

    작은 조각이 생기지 않도록 프로세스를 배치하는 것이다.

     

    (1) 최초 배치

    적재 가능한 곳 중 첫 번째로 발견한 공간에 프로세스를 배치한다.

     

    (2) 최적 배치

    적재 가능한 곳 중 가장 작은 공간에 프로세스를 배치한다.

     

    (3) 최악 배치

    적재 가능한 곳 중 가장 큰 공간에 프로세스를 배치한다.

     

     

    조각 모음

    이미 배치된 프로세스들을 옆으로 옮겨 작은 조각들을 하나의 큰 덩어리로 만드는 것이다. 다음과 같은 순서로 진행된다.

     

    1. 이동할 프로세스의 동작을 멈춘다.
    2. 프로세스를 적당한 위치로 이동한다. 프로세스의 상대 주소값을 변경한다.
    3. 프로세스를 다시 시작한다.

     

    프로세스를 중단하고, 이동하고, 다시 시작하는 과정이 수반되기 때문에 많은 시간이 걸린다.

     

     

     

    3. 고정 분할 방식의 메모리 관리

    가상 메모리 시스템에서는 고정 분할 방식을 페이징이라고도 한다.

     

     

    프로세스 배치와 내부 단편화

    일정하게 나뉜 메모리의 크기보다 작은 프로세스가 배치될 경우 낭비되는 공간이 생긴다. 일정한 크기로 나뉜 파티션의 안쪽에서 작은 조각이 발생하기 때문에 내부 단편화라고 한다.

     

    내부 단편화를 해결하기 위해서는 적절한 크기로 메모리를 분할해야 한다. 너무 작으면 프로세스가 여러 영역으로 나뉘어 관리하기 어렵고, 너무 크면 내부 단편화가 자주 발생하기 때문에 적절한 크기로 설정하는 것이 중요하다.

     

     

     

    4. 버디 시스템

    외부 단편화를 완화하는 방법 중 하나다. 기본적으로 가변 분할 방식이지만 고정 분할 방식과 유사한 점이 있다.

     

     

    작동 방식

    1. 프로세스의 크기에 맞을 때까지 메모리를 1/2로 자른다.
    2. 나뉜 메모리의 구역에 1개의 프로세스를 배치한다.
    3. 프로세스가 종료되면 주변의 빈 조각과 합쳐서 하나의 큰 덩어리를 만든다.

     

     

    특징

    가변 분할 방식처럼 메모리가 프로세스 크기대로 나뉘며, 고정 분할 방식처럼 하나의 구역에 하나의 프로세스만 배치해 내부 단편화가 발생한다.

     

    버디 시스템은 가변 분할 방식보다 메모리 관리가 수월하다. 비슷한 크기의 메모리 영역이 모여 있기 때문이다. 하지만 고정 분할 방식과는 효율성이 비슷하기 때문에 상대적으로 메모리 관리가 단순한 고정 분할 방식이 많이 사용되고 있다.

    728x90

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

    댓글