메모리 연속 할당 (Fixed, Variable)
물리 메모리 영역
물리 메모리는 2개의 영역으로 나뉘어 사용된다.
OS 상주 영역
: 낮은 주소 영역을 사용사용자 프로세스 영역
: 높은 주소 영역을 사용
사용자 프로세스 영역 할당 방법
연속 할당(Contiguous Allocation)
: 프로그램 전체를 사용자 프로세스 영역의 메모리에 할당받는 방식각각의 프로세스가 메모리에 연속적으로 적재된다.
고정 분할(Fixed Partition Allocation)
,가변 분할(Variable Partition Allocation)
이 있다
불연속 할당(Noncontiguous Allocation)
: 프로그램의 주소 공간을 작게 쪼개어 사용자 프로세스 영역의 여러 부분에 분산하여 할당하는 방식하나의 프로세스가 메모리의 여러 영역에 분산되어 적재된다.
Paging
,Segmentation
,Paged Segmentation
이 있다.
연속 할당(Contiguous Allocation)
고정 분할 방식
고정 분할 방식
프로그램이 할당될 메모리 영역을 partition으로 미리 나누어 놓는 방식
외부 조각(External Fragmentation), 내부 조각(Internal Fragmentation) 문제가 발생한다.
외부 조각 문제
: 프로그램의 크기가 partition(외부 조각)의 크기보다 커서 메모리에 올라갈 수 없는 문제내부 조각 문제
: 할당된 프로그램 크기보다 partition의 크기가 커서 사용되지 않는 작은 메모리 조각(내부 조각)이 발생하는 문제
가변 분할 방식
가변 분할 방식
partition을 미리 나누어 놓지 않고 프로그램이 시작될 때마다 메모리에 차곡차곡 할당하는 방식
메모리에 적재되는 프로그램의 크기에 따라 partition의 크기, 개수가 동적으로 변한다.
프로세스가 중간에 수행을 마치면
외부 조각 문제
가 발생한다.
가변 분할 방식을 사용하면 Hole(비어있는 가용 메모리 공간)이 여러 곳에 흩어져 생기는 문제가 있다 (외부 조각 문제)
해결법1 : 새로운 프로그램을 적재할 적절한 Hole을 선택하여 외부 조각 문제를 해결한다(Dynamic Storage-Allocation Problem)
First-Fit
: 크기가 n 이상인 Hole들 중 최초로 찾아지는 Hole에 할당Best-Fit
: 크기가 n 이상인 Hole들 중 가장 작은 Hole에 할당Hole들이 크기 순으로 정렬되어 있지 않다면, 모든 Hole 리스트를 탐색해야 한다.
문제점 : 아주 작은 Hole들이 많이 생긴다
Worst-Fit
: 크기가 n 이상인 Hole들 중 가장 큰 Hole에 할당문제점 : 아주 큰 Hole들이 생성된다.
해결법2 : Compaction을 활용하여 외부 조각 문제를 해결한다
사용중인 메모리 영역을 한 군데로 몰아두고 Hole을 다른 한 곳으로 몰아 큰 block을 만드는 기법이다.
외부 조각 문제를 해결하는 한가지 방법으로 매우 비용이 많이 든다.
Compaction은 Runtime Binding에서만 수행할 수 있다.
불연속 할당(Noncontiguous Allocation)
Last updated