메모리 연속 할당 (Fixed, Variable)

물리 메모리 영역

물리 메모리는 2개의 영역으로 나뉘어 사용된다.

  1. OS 상주 영역 : 낮은 주소 영역을 사용

  2. 사용자 프로세스 영역 : 높은 주소 영역을 사용

사용자 프로세스 영역 할당 방법

  1. 연속 할당(Contiguous Allocation) : 프로그램 전체를 사용자 프로세스 영역의 메모리에 할당받는 방식

    • 각각의 프로세스가 메모리에 연속적으로 적재된다.

    • 고정 분할(Fixed Partition Allocation), 가변 분할(Variable Partition Allocation)이 있다

  2. 불연속 할당(Noncontiguous Allocation) : 프로그램의 주소 공간을 작게 쪼개어 사용자 프로세스 영역의 여러 부분에 분산하여 할당하는 방식

    • 하나의 프로세스가 메모리의 여러 영역에 분산되어 적재된다.

    • Paging, Segmentation, Paged Segmentation이 있다.

연속 할당(Contiguous Allocation)

고정 분할 방식

프로그램이 할당될 메모리 영역을 partition으로 미리 나누어 놓는 방식

  • 외부 조각(External Fragmentation), 내부 조각(Internal Fragmentation) 문제가 발생한다.

    • 외부 조각 문제 : 프로그램의 크기가 partition(외부 조각)의 크기보다 커서 메모리에 올라갈 수 없는 문제

    • 내부 조각 문제 : 할당된 프로그램 크기보다 partition의 크기가 커서 사용되지 않는 작은 메모리 조각(내부 조각)이 발생하는 문제

가변 분할 방식

partition을 미리 나누어 놓지 않고 프로그램이 시작될 때마다 메모리에 차곡차곡 할당하는 방식

  • 메모리에 적재되는 프로그램의 크기에 따라 partition의 크기, 개수가 동적으로 변한다.

  • 프로세스가 중간에 수행을 마치면 외부 조각 문제가 발생한다.

가변 분할 방식을 사용하면 Hole(비어있는 가용 메모리 공간)이 여러 곳에 흩어져 생기는 문제가 있다 (외부 조각 문제)

해결법1 : 새로운 프로그램을 적재할 적절한 Hole을 선택하여 외부 조각 문제를 해결한다(Dynamic Storage-Allocation Problem)

  1. First-Fit : 크기가 n 이상인 Hole들 중 최초로 찾아지는 Hole에 할당

  2. Best-Fit : 크기가 n 이상인 Hole들 중 가장 작은 Hole에 할당

    • Hole들이 크기 순으로 정렬되어 있지 않다면, 모든 Hole 리스트를 탐색해야 한다.

    • 문제점 : 아주 작은 Hole들이 많이 생긴다

  3. Worst-Fit : 크기가 n 이상인 Hole들 중 가장 큰 Hole에 할당

    • 문제점 : 아주 큰 Hole들이 생성된다.

해결법2 : Compaction을 활용하여 외부 조각 문제를 해결한다

  • 사용중인 메모리 영역을 한 군데로 몰아두고 Hole을 다른 한 곳으로 몰아 큰 block을 만드는 기법이다.

  • 외부 조각 문제를 해결하는 한가지 방법으로 매우 비용이 많이 든다.

  • Compaction은 Runtime Binding에서만 수행할 수 있다.

불연속 할당(Noncontiguous Allocation)

메모리 불연속 할당.md 참고

Last updated