- 물리적 메모리가 이미 나누어져 있으므로 동시에 메모리에 적재할 수 있는 프로세스 수가 정해져 있다.
- 분할된 크기에 의해 수행 가능한 프로세스의 크기 또한 제한 된다.
- 내부단편화 발생: 프로세스의 크기보다 분할 된 프레임의 크기가 클 경우 해당 분할에 프로세스를 적재하고 남는 내부 조각
→ 단편화는 추후에 메모리가 남아있음에도 불구하고 필요한 프로그램에 할당하지 못하는 현상이 발생할 수 있다.
- 외부단편화 발생: 프로그램의 크기보다 분할된 크기가 작아 메모리 공간이 비었음에도 프로그램을 적재하지 못하는 경우
→ 작은 메모리들의 합인 총 메모리 공간은 충분하지만 연속적으로 할당 가능한 공간은 부족하여 할당할 수 없는 상황
- 외부 단편화를 최소화하고 메모리 할당을 효율적으로 관리하기 위해 최초적합, 최적적합, 최악적합과 같은 메모리 할당 알고리즘을 사용
- 최초적합: 위쪽 또는 아래쪽부터 탐색을 시작해 홀을 찾으면 즉시 할당
- 최적적합: 필요한 메모리 크기 이상인 공간 중에서 가장 작은 홀부터 할당
- 최악적합: 필요한 메모리 크기와 가장 차이가 많이 나는 홀부터 할당
프로그램이 필요로 하는 메모리를 여러 개의 분산된 위치에 할당하는 메모리 관리 방식으로 현대 운영체제에서 사용하는 방법이다.
Paging: 프로세스의 주소 공간을 동일한 크기의 페이지로 나누어 물리적 메모리의 서로 다른 공간에 할당하는 메모리 관리 기법
- 물리적 메모리를 페이지와 동일한 크기의 프레임으로 미리 나누어 둔다.
→ 빈 프레임이 있으면 어떤 위치에서든 프레임을 할당할 수 있으므로 외부 단편화를 해결- 프로그램의 크기가 페이지의 배수가 아닐 수 있으므로 내부 단편화 발생 가능성이 있다.
- 페이지 테이블을 사용하여 주소 변환을 수행
Segmentation: 프로세스의 주소 공간을 의미 단위인 Segment로 나누어 물리적 메모리의 서로 다른 공간에 할당하는 메모리 관리 기법
- 프로세스는 스택, 힙, 데이터, 코드 영역을 구분할 수 있는데 보통 해당 기능 단위로 세그먼트를 정의한다.
→ Segment의 크기가 균일하지 않아 외부 단편화가 발생할 수 있다.- 각각의 Segment를 메모리에 할당 하게 될 때, segment table을 활용한다.
→ segment table: 각 세그먼트에 대한 번호, 시작 주소, 크기 및 기타 필요한 관련 정보를 entry로 가진다.
Paged segmentation: 프로세스의 주소공간을 Segment 단위로 나누지만 모두 같은 크기로 나눈다.
→ 두 단계 주소 변환: 세그먼트 번호로 페이지 테이블을 찾고 페이지 내의 오프셋을 사용하여 실제 물리 주소를 계산해야 하므로, 주소 변환을 위한 시간을 더 많이 필요로 하며 성능 저하가 발생할 수 있다.