메모리 할당
프로그램을 실행하기 위해 주기억장치에 메모리 할당 필요
- 메모리에 프로그램 할당시 시작 메모리 위치와 메모리의 할당 크기 기반으로 할당
- 연속 할당/불연속 할당으로 나뉨
연속 할당
- 메모리에 프로그램 전체를 연속적으로 공간 할당
- 고정 분할 방식/가변 분할 방식으로 나뉨
고정 분할 방식 fixed partition allocation
- 미리 메모리를 고정된 파티션으로 분할해 관리
- 융통성 없음
- 내부 단편화 발생
가변 분할 방식 variable partition allocation
- 매 시점 프로그램의 크기에 맞는 동적 파티션을 생성해 사용
- 외부 단편화 발생
- 최초적합, 최적적합, 최악적합
- 최초적합: 위쪽이나 아래쪽부터 시삭해서 홀을 찾으면 바로 할당
- 최적적합: 프로세스의 크기 이상인 공간 중 작은 홀부터 할당
- 최악적합: 프로세스의 크기와 가장 많이 차이가 나는 홀에 할당
홀
- 할당할 수 있는 빈 메모리 공간
불연속 할당
- 메모리에 프로그램 전체를 연속적으로 할당하지 않음
- 현대 운영체제가 쓰는 방법
- 페이징/세그멘테이션
페이징 Paging
- 동일한 크기의 페이지(보통 4KB) 단위로 나누어 메모리의 서로 다른 위치에 프로세스 할당
- 주소 변환 복잡함
- 내부 단편화 존재
페이지
- 고정 사이즈의 작은 프로세스 조각
프레임
- 페이지 크기와 같은 주기억장치 메모리 조각
세그멘테이션 Segmentation
- 페이지 단위가 아닌 의미 단위인 세그먼트로 나누는 방식
- 공유와 보안 측면에서 좋음
- 외부 단편화 존재
페이지드 세그멘테이션 Paged Segmentation
- 공유나 보안을 세그먼트로 나누고 물리적 메모리는 페이지로 나눔