운영체제 - 메모리관리(3)
2020-10-14
OS를 공부하면서 정리를 한 내용들 입니다.
물리적인 메모리의 관리 기법에 대한 포스팅입니다.
메모리는 일반적으로 두 영역으로 나뉘어 사용됩니다.
하나는 OS 상주 영역
, 다른 하나는 사용자 프로세스 영역
입니다.
OS 상주 영역
- interrupt vector와 함께 낮은 주소 영역에는 운영체제 커널이 항상 상주하게 됩니다.
사용자 프로세스 영역
- OS 상주 영역 이외의 영역으로 높은 주소 영역을 사용합니다.
사용자 프로세스 영역의 할당 방법(관리 방법)
Contiguous allocation(연속 할당)
-
각각의 프로세스가 메모리의 연속적인 공간에 적재되도록 하는 방식
Fixed partition allocation
: 물리적 메모리를 고정 크기의 분할로 나누어 두는 방식Variable partition allocation
: 프로그램 실행, 종료 순서에 따라 분할을 관리하는 방식
Fixed partition allocation(고정 분할 방식)
물리 메모리를 주어진 개수만큼의 영구적 분할로 나누어 각 분할에 하나의 프로세스를 적재해 실행시킬 수 있게 합니다.
하나의 분할에는 하나의 프로그램만을 적재할 수 있습니다.
- 동시에 메모리에 적재할 수 있는 프로그램의 수가 고정되어 있다
- 수행 가능한 프로그램의 최대 크기가 제한된다.
외부 단편화 / 내부 단편화가 발생할 수 있습니다.
외부 단편화 : 프로그램의 크기보다 파티션의 크기가 작은 경우 적재하지 못해서 발생하는 메모리 공간
내부 단편화 : 프로그램의 크기보다 파티션의 크기가 큰 경우 파티션에 적재하고 남는 메모리 공간
Variable partition allocation(가변 분할 방식)
메모리에 적재되는 프로그램의 크기에 따라 파티션의 크기와 개수가 동적으로 변하는 방식입니다.
내부 단편화는 발생하지 않으나, 외부 단편화는 발생할 수 있습니다.
동적 메모리 할당 문제
물리적 메모리 내의 가용 공간 중 어떤 위치에 적재할 것인가? 프로세스의 주소 공간 전체를 담을 수 있는 가용 공간을 찾아야 합니다.
가용공간(Hole) 이란?
- 말 그대로 사용할 수 있는 메모리 공간으로 다양한 크기의 Hole들이 여러 곳에 흩어져 있음
- 프로세스가 도착하면 수용간으한 Hole을 할당
- 운영체제는 다음의 정보를 유지 (a : 할당공간, b : 가용 공간(hole))
해결 방법
최초 적합 방법 (first-fit)
프로세스의 크기보다 큰 가용 공간 중 가장 먼저 찾아지는 곳에 할당하는 방법
- 시간적 측면에서 효율적
최적 적합 방법 (best-fit)
프로세스의 크기보다 큰 가용 공간 중 가장 작은 가용 공간을 찾아 할당하는 방법
- 시간적 오버헤드 발생
- 다수의 매우 작은 가용 공간이 생성됨
- 공간적 측면에서 효율적
최악 적합 방법 (worst-fit)
가용 공간 중 가장 큰 곳에 프로세스를 할당하는 방법
- 시간적 오버헤드
- 큰 가용 공간의 소비
- 상대적으로 아주 큰 가용 공간이 생성됨.
Compaction
- external fragmentation 문제를 해결하는 한가지 방법
- 사용 중인 메모리 영역을 한군데로 몰고 가용공간들을 다른 한 곳으로 몰아 큰 block을 만드는 것
- 매우 비용이 많이 드는 방법
- 최소한의 메모리 이동으로 compaction하는 방법(매우 복잡한 방법)
- Compaction은 프로세스의 주소가 실행 시간에 동적으로 재배치 가능한 경우에만 수행 될 수 있습니다.
-참고 KOCW 이화여자 대학교 반효경 교수님 : 운영체제 강의