[OS] Ch8. 메모리 관리 전략
스와핑
- 프로세스는 실행 중 임시로 예비 저장장치로 내보내어졌다가 다시 메모리로 돌아올 수 있다.
- 스와핑 시간은 오버헤드이다.
- 한 프로세스를 스왑 아웃 하고 싶다면 해당 프로세스는 휴지 상태에 있어야 한다.
- 이중 버퍼링 (운영체제의 버퍼와만 입출력을 함) : 오버헤드
연속 메모리 할당 (Contiguous Memory Allocation)
- 최초 적합
- 처음으로 사용 가능한 공간을 할당
- 최적 적합
- 가능한 공간 중 가장 작은 공간을 할당
- 최악 적합
- 가능한 공간 중 가장 큰 공간을 할당
- 최초 >= 최적 > 최악
단편화
- 외부 단편화 : 유휴 공간들을 합치면 충분한 공간이 되지만 분산되어 있음
- 압축(compaction)으로 해결
- 메모리 모든 내용들을 한군데로 몰고, 자유 공간을 모아 큰 블럭을 만듬
- 프로세스들의 재배치가 실행 시간에 동적으로 이루어지는 경우에만 사용 가능.
- 비용 문제도 고려해야 함
- 한 프로세스의 논리 주소 공간을 여러 개의 비연속적인 공간으로 나눔 (페이징, 세그멘테이션)
- 압축(compaction)으로 해결
- 내부 단편화 : 할당한 메모리 내부에 공간이 남음
세그멘테이션
- 세그먼트라는 논리적 단위로 나눈다.
- 외부 단편화가 발생할 수 있음.
- 메모리 압축을 통해 외부 단편화를 최소화 시킬 수 있음.
- 분할이 가변적이기 때문에 스와핑은 힘들 수 있다.
- 페이징보다 공유가 간편함.
- 페이징: 페이지 테이블의 공유 항목을 표시해야 함, 세그먼테이션: 공유한다고 선언만 하면 됨
페이징
- 물리 메모리는 프레임이라 불리는 같은 크기 블록으로 나눈다.
- 논리 메모리는 페이지라 불리는 같은 크기 블록으로 나눈다.
- 내부 단편화가 발생할 수 있음.
페이지화된 세그멘테이션
- 페이지와 세그멘테이션의 장점 결합
- 세그먼트를 페이징한다 -> 세그먼트 안에 별도의 페이지 테이블 존재
- 외부 단편화 해결
- 분할공간이 많아져 관리가 힘들 수 있다.