목적
메모리 용량이 증가함에 따라 프로그램의 크기가 계속 증가하고 있어서 메모리가 언제나 부족하기 때문.
정의
제한된 물리 메모리의 효율적 사용과 메모리 참조 방식을 제공하기 위한 전략
방법
- 메모리 할당(고정 분할, 가변 분할)
- 페이징
- 세그멘테이션
- 세그멘테이션 페이징 혼용 기법
고정 분할 방식
- 프로세스의 크기와 상관없이 메모리를 같은 크기로 나누는 것
- 물리적 메모리를 몇 개의 영구적 분할로 나눈다
- 분할된 구역당 하나의 프로그램을 적재
- 내부/외부 단편화 발생
- 내부 단편화 : 프로그램의 크기보다 분할의 크기가 작은 경우, 아무 프로그램에도 배정되지 않은 빈 공간이지만 프로그램이 올라갈 수 없는 작은 분할
- 외부 단편화 : 프로그램 크기보다 분할의 크기가 큰 경우, 특정 프로그램에 배정되었지만 사용되지 않는 공간
내부 단편화(Internal fragmentation)의 해결 방안
- Segmentation : 가변 길이 방식의 대표 유형
- 메모리 풀 : 동적 할당의 방식 중 하나. 미리 필요한 만큼 할당 받아서 만들어 둔다.
외부 단편화(External fragmentation)의 해결 방안
- storage compaction(압축) : 주기적으로 삭제 공간을 회수하여 메모리 공간들을 정리하는 방식. 비용이 많이 들어 자주 쓸 수 없는 것이 단점이다
- Coalescing(통합): 단편화로 인해 쪼개진 공간들 중 인접한 공간들을 합쳐서 더 크게 만드는 방식이다.
- placement strategy(배치 전략): 배치를 잘하는 방식을 사용하여 단편화의 발생 가능성을 최대한 줄이는 방식이다(best-fit, first-fit, worst-fit)
- paging 기법 사용
가변 분할 방식
- 프로그램의 크기를 고려해서 할당
- 분할의 개수, 크기가 동적으로 변함
- 외부 단편화가 발생함
😅 성능 면에선 더 좋을 것 같지만 귀찮음이 발생
고정 분할 방식
- 프로세스의 크기에 상관없이 메모리가 같은 크기로 나뉘며, 큰 프로세스가 메모리에 올라오면 여러 조각으로 나뉘어 배치
- 한 프로세스가 분산되어 배치되기 때문에 비연속 메모리 할당이라고 한다.
- 💡 관리가 용이하지만 메모리 낭비 발생
가변 분할 방식
- 프로세스의 크기에 맞게 메모리가 분할되므로 메모리의 영역이 각각 다르다.
- 한 프로세스가 연속된 공간에 배치되기 때문에 연속 메모리 할당이라고 한다.
- 💡 연속된 공감에 배치 가능하지만 메모리 관리 복잡
Hole
- 가용 메모리 공간
- 다양한 크기의 Hole 들이 메모리 여러 곳에 존재
- 프로세스가 도착하면 수용 가능한 hole을 할당
- 운영체제는 할당 공간, 가용 공간(hole) 정보를 유지
- Hole을 관리하는 것 = 메모리 관리 전략
메모리 할당 알고리즘(배치 전략)
first-fit
- 최초로 할당받을 수 있는 크기의 공간에 무조건 할당된다.
Best-fit
- 공간을 모두 탐색하고 할당할 메모리 크기보다 크고 그중에 가장 작은 공간을 찾아 할당한다.
- 일반적인 환경에서 외부 단편화가 제일 적게 일어난다.
Worst-fit
- 공간을 모두 탐색하고 가장 큰 공간을 찾아 할당한다.
- 일반적인 환경에서 외부 단편화가 가장 많이 일어난다.
효율성
- First-fit이 다른 알고리즘에 비해 시간복잡도가 적다.
- Best-fit과 Worst-fit은 메모리 공간을 전체를 탐색해야 하지만 First-fit은 모두 탐색하지 않아도 공간이 나온다면 바로 넣으면 된다.
- 일반적인 환경에서는 First-fit과 Best-fit의 성능은 비슷하고 Worst-fit은 성능이 떨어진다.
Noncontiguous allocation (불연속 할당)
하나의 프로세스가 메모리의 여러 영역에 분산되어 올라간다.
페이징
- 메모리 공간이 연속적으로 할당되어야 한다는 제약조건을 없애는 메모리 관리 전략
- 논리 메모리는 고정크기의 페이지, 물리메모리는 고정크기의 프레임 블록으로 나누어 관리
- 내부 단편화가 발생
세그멘테이션
- 페이징 기법과 반대로 논리 메모리와 물리 메모리를 같은 크기의 블록이 아닌, 서로 다른 크기의 논리적 단위인 세그먼트로 분할
- 외부 단편화가 발생
세그멘테이션 페이징 혼용 기법
- 페이징과 세그멘테이션도 각각 내부 단편화와 외부 단편화가 발생
- 페이징과 세그멘테이션을 혼용해 이러한 단편화를 최대한 줄이는 전략
출처
https://velog.io/@chappi/OS%EB%8A%94-%ED%95%A0%EA%BB%80%EB%8D%B0-%ED%95%B5%EC%8B%AC%EB%A7%8C-%ED%95%A9%EB%8B%88%EB%8B%A4.-13%ED%8E%B8-%EA%B0%80%EB%B3%80-%EB%B6%84%ED%95%A0-%EB%A9%94%EB%AA%A8%EB%A6%AC%EC%99%80-%EA%B3%A0%EC%A0%95-%EB%B6%84%ED%95%A0-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EB%8B%A8%ED%8E%B8%ED%99%94