Allocation of Physical Memory : 메모리 할당
메모리는 일반적으로 두 영역으로 나뉘어 사용
1) OS 상주 영역 : interrupt vector 와 함께 낮은 주소 영역 사용
2) 사용자 프로세스 영역 : 높은 주소 영역 사용
사용자 프로세스 영역의 할당 방법
1. Contiguous allocation (연속 할당)
: 각각의 프로세스가 메모리의 연속적인 공간에 적재
1) 고정 분할 방식
- 물리적 메모리를 몇 개의 영구적 분할로 나눈다
- 분할당 하나의 프로그램을 적재
- 내부/외부 조각이 발생
* 외부조각 : 프로그램의 크기보다 분할의 크기가 작은 경우,
아무 프로그램에도 배정되지 않은 빈 공간이지만 프로그램이 올라갈 수 없는 작은 분할
* 내부조각 : 프로그램 크기보다 분할의 크기가 큰 경우,
특정 프로그램에 배정되었지만 사용되지 않는 공간
2) 가변 분할 방식
- 프로그램 크기를 고려해서 할당
- 분할의 크기, 개수가 동적으로 변함
- 기술적 관리 기법 필요
* 외부조각 발생 : B가 끝나서 비어있는 공간이 발생했지만 프로그램 D가 해당 빈 공간 보다 커서 사용할 수 없음
Hole
- 가용 메모리 공간
- 다양한 크기의 Hole 들이 메모리 여러 곳에 존재
- 프로세스가 도착하면 수용가능한 hole 을 할당
- 운영체제는 다음의 정보를 유지
할당 공간, 가용 공간(hole)
Hole 을 어떻게 관리 할 것인가?
: Dynamic Storage-Allocation Problem
: 가변 분할 방식에서 size n인 요청을 만족하는 가장 적절한 hole을 찾는 문제
1) First-fit
- Size 가 n 이상인 것 중 최초로 찾아지는 hole 에 할당
2) Best-fit
- Size 가 n 이상인 가장 작은 hole을 찾아서 할당
- 많은 수의 아주 작은 hole들이 생성됨
3) Worst-fit (First-fit, Best-fit 보다 속도/공간 이용률이 비효율적)
- 가장 큰 hole에 할당
- 상대적으로 아주 큰 hole들이 생성됨
※ Compaction
- 외부 조각 문제를 해결하는 방법
- 사용 중인 메모리 영역을 한군데로 몰고 hole들을 다른 한 곳으로 몰아 큰 block을 만드는 것
- 비용이 매우 많이 드는 방법
- 최소한의 메모리 이동으로 compaction 하는 방법
- 프로세스 주소가 실행 시간에 동적으로 재배치 가능한 경우에만 수행 가능
2. Noncontiguous allocation (불연속 할당)
: 하나의 프로세스가 메모리의 여러 영역에 분산되어 올라감
1) Paging 기법
2) Segmentation 기법
※ 이화여대 반효경 교수님의 운영체제 강의 정리