운영체제[반효경]/Ch08. Memory Management
Memory Management (2) 연속할당
developer-soyun
2024. 11. 10. 11:26
물리적인 메모리를 관리하는 방법
Allocation of Physical Memory
- 메모리는 일반적으로 두 영역으로 나누어서 사용
- OS 상주 영역
- interrupt vector와 함께 낮은 주소 영역 사용
- 사용자 프로세스 영역
- 높은 주소 영역 사용
- OS 상주 영역
- 사용자 프로세스 영역의 할당 방법
- Contiguous allocation
- 각각의 프로세스가 메모리의 연속적인 공간에 적재되도록 하는 것
- Fixed partition allocation
- Variable partition allocation
- Noncontiguous allocation
- 하나의 프로세스가 메모리의 여러 영역에 분산되어 올라갈 수 있음
- Paging
- Segmentation
- Paged Segmentation
- Contiguous allocation
Contiguous Allocation
- 고정분할(Fixed partition) 방식
- 물리적 메모리를 미리 몇 개의 영구적 분할(partition)으로 나눔
- 분할의 크기가 모두 동일한 방식과, 서로 다른 방식이 존재
- 분할당 하나의 프로그램 적재
- 융통성이 없다
- 동시에 메모리에 load되는 프로그램 수가 고정됨
- 최대 수행 가능 프로그램 크기 제한
- 내부 조각, 외부 조각 발생
- 프로그램 A는 분할 1, 프로그램 B는 분할 3에 할당 → 분할 3은 프로그램을 넣고 남은 공간이 발생 (내부조각) → 분할 2은 크기가 고정되어있어 이 크기보다 더 큰 프로그램은 넣을 수 없다(외부조각)
- 가변분할(Variable partition) 방식
- 프로그램의 크기를 고려해서 할당
- 분할의 크기, 개수가 동적으로 변함
- 기술적 관리 기법 필요
- 외부조각 발생
- 프로그램 ABC가 순차적으로 올라감 → B 종류 이후 D가 실행될 경우, D의 크기가 커 B가 종료되고 남은 메모리 공간에 들어갈 수 없다 → 외부조각 발생 → 또한 D를 올리고 남은 공간 역시 외부조각 이다
- Hole
- 가용 메모리 공간
- 다양한 크기의 hole들이 메모리 여러 곳에 흩어져 있음
- 프로세스가 도착하면 수용가능한 hole을 할당
- 운영체제는 다음의 정보를 유지
- 할당공간, 가용공간(hole)
- Dynamic Storage-Allocation Problem
- 가변 분할 방식에서 size n인 요청을 만족하는 가장 적절한 hole을 찾는 문제
- First-fit
- Size가 n이상인 것 중 최초로 찾아지는 hole에 할당
- Best-fit
- Size가 n이상인 가장 작은 hole을 찾아서 할당
- Hole들의 리스트가 크기순으로 정렬되지 않은 경우 모든 hole의 리스트를 탐색해야함
- 많은 수의 아주 작은 hole들이 생성됨
- Worst-fit
- 가장 큰 hole에 할당
- 역시 모든 리스트를 탐색해야한다
- 상대적으로 아주 큰 hole들이 생성됨
- First-fit과 Best-fit이 Worst-fit 보다 효율적이다
Compaction
- 외부조각 문제를 해결하는 한가지 방법
- 사용 중인 메모리 영역을 한군데로 몰고 hole들을 다른 한 곳으로 몰아 큰 block을 만드는 것
- 매우 비용이 많이 드는 복잡한 방법이다
- 프로세스의 주소가 실행 시간에 동적으로 재배치가 가능한 경우에만 Compaction 수행 가능