Continuous Memory Allocation(연속 메모리 할당)

프로세스에 연속적인 메모리 공간을 할당하는 방식

스와핑(Swapping)

입출력 작업으로 대기 상태가 된 프로세스라던가, 오랫동안 사용되지 않은 프로세스들 같이 메모리에 올라와 있지만 실행되지 않는 프로세스들이 존재하는데, 이러한 프로세스들을 임시로 보조기억장치 일부 영역으로 내보내고 그 자리에 다른 프로세스를 적재하여 실행하는 방식을 스와핑이라고 한다.

  • 스왑 영역(swap space): 프로세스들이 스와핑되어 보내지는 보조기억장치의 일부 영역

  • 스왑 아웃(swap-out): 프로세스를 스왑 영역으로 내보내는 작업

  • 스왑 인(swap-in): 스왑 영역에 있던 프로세스를 메모리로 가져오는 작업

프로세스는 스왑 아웃으로 스왑 영역에 보내지고, 스왑 인으로 다시 메모리로 가져오게 되는데, 다시 스왑 인될 때는 그 전 물리 주소와 다른 주소에 적재될 수 있다.

메모리 할당

위처럼 스왑 인될때나 프로세스가 생성될 때 메모리에 적재될 수 있는데, 이때 메모리에 할당하는 방식으로 최초 적합/최적 적합/최악 적합 방식이 있다.

  • 최초 적합(first fit): 메모리의 처음부터 탐색하여 프로세스가 들어갈 수 있는 공간을 찾아 적재, 빠른 할당 가능

  • 최적 적합(best fit): 프로세스가 들어갈 수 있는 공간 중 가장 작은 공간에 적재, 메모리의 낭비를 최소화

  • 최악 적합(worst fit): 프로세스가 들어갈 수 있는 공간 중 가장 큰 공간에 적재

외부 단편화(external fragmentation)

프로세스를 메모리에 연속적으로 배치하는 연속 메모리 할당은 효율적으로 느껴질 수 있지만, 아래의 시나리오가 발생하여 외부 단편화 문제가 발생할 수 있다.

  1. 프로세스들을 메모리에 계속해서 적재

  2. 프로세스들이 메모리에 적재되고 제거되는 과정에서 중간 중간 빈 공간들이 생김

  3. 생긴 빈 공간들이 연속적으로 존재하지 않음

  4. 결국 전체 빈 공간이 충분함에도 빈 공간들에 큰 프로세스를 적재할 수 없게 됨

  5. 메모리 낭비로 이어짐(= 외부 단편화)

외부 단편화를 해결하기 위한 대표적인 방안으론 메모리 압축 기법이 존재하는데, 그 방법은 아래와 같다.(= 실제론 잘 사용되지 않음)

  • 흩어져 있는 프로세스들을 적당히 재배치시켜 연속적으로 배치시키는 방법

  • 프로세스들의 주소를 모두 변경해야 하므로 오버헤드가 매우 큼

오버헤드 크다는 단점이 존재하기 때문에 가상 메모리 기법 중 페이징 기법을 사용하게 된다.

참고자료

Last updated