단편화
주기억 장치에서 메모리의 할당과 반납이 발생하여 메모리가 작은 조각으로 나눠져 새로운 메모리를 할당할 때 사용가능한 메모리가 충분하지만 조각이 작아서 할당이 불가능한 상태
내부 단편화
실제 실행되는 프로그램보다 할당된 메모리가 더 커서 사용되지 않는 메모리 조각 발생
외부 단편화
남아있는 메모리 총 크기는 할당될 프로그램 보다 크지만 작은 조각으로 나뉘어져 있어 할당하지 못하는 현
해결방안
- Paging : 아래에서 설명
- Segmentation : 아래에서 설명
- Coalescing(통합) : 인접한 두개의 빈 분할 공간을 통합
- Storage Compaction(압축) : 주기억장치 내 비어있는 작은 조각들을 하나로 모으는 방법
- Placement Strategy(배치 전략) : 단편화가 최대한 일어나지 않게끔 새로 할당될 메모리의 위치를 정하는 전략을 세움
- Memory pool : 처음부터 필요한 메모리 공간을 할당해놓고 필요할 때마다 사용하고 반납하는 방법, 내부 단편화, 외부 단편화 모두 해결 가능하지만 실제 사용하는 순간을 제외하고도 메모리가 할당되어 있기 때문에 메모리 낭비 발생
Paging
- 프로세스의 가상 메모리 공간을 page라는 같은 크기의 단위로 Pysical memory를 page와 같은 크기인 frame으로 나눈 후 각각 Address mapping하는 방법.
- Address binging을 위해 모든 프로세스는 각각의 page table을 가진다.
- 프로세스의 논리적 메모리 공간과 물리적 메모리가 page 단위로 나뉘어져서 외부 단편화 문제는 해결가능하다.
- 각 프로세스의 마지막 page에서는 내부 단편화가 일어날 가능성이 있다.
Sementation
- 프로세스의 가상 메모리 공간을 논리적 의미 단위(segment)로 나누어 불연속적인 Pysical memory에 할당하는 방법.
- 보통 Code, Data, Heap, Stack 등의 기능 단위로 segment가 정의됨
- 모든 프로세스는 각각의 segment table을 가짐
- offset이 각 limit를 넘으면 segment fault가 발생
- segment 크기만큼 메모리를 할당하기 때문에 내부 단편화 문제는 해결, 크기가 다양한 segment들이 메모리에 할당되고 제거되면 외부 단편화 문제 발
Paged Segmentation
- Segment 단위로 나눈 후 다시 같은 크기의 page로 나누는 방법이다.
- segment의 크기를 page의 크기의 배수로 한다.
- 외부 단편화 문제를 해결할 수 있다.
'OS' 카테고리의 다른 글
[OS] Process (0) | 2023.02.07 |
---|