본문 바로가기

OS

[OS] 단편화, Paging, Segmentation

단편화

주기억 장치에서 메모리의 할당과 반납이 발생하여 메모리가 작은 조각으로 나눠져 새로운 메모리를 할당할 때 사용가능한 메모리가 충분하지만 조각이 작아서 할당이 불가능한 상태

내부 단편화

실제 실행되는 프로그램보다 할당된 메모리가 더 커서 사용되지 않는 메모리 조각 발생

 

외부 단편화

남아있는 메모리 총 크기는 할당될 프로그램 보다 크지만 작은 조각으로 나뉘어져 있어 할당하지 못하는 현

 

해결방안

  • Paging : 아래에서 설명
  • Segmentation : 아래에서 설명
  • Coalescing(통합) : 인접한 두개의 빈 분할 공간을 통합
  • Storage Compaction(압축) : 주기억장치 내 비어있는 작은 조각들을 하나로 모으는 방법 
  • Placement Strategy(배치 전략) : 단편화가 최대한 일어나지 않게끔 새로 할당될 메모리의 위치를 정하는 전략을 세움
  • Memory pool : 처음부터 필요한 메모리 공간을 할당해놓고 필요할 때마다 사용하고 반납하는 방법, 내부 단편화, 외부 단편화 모두 해결 가능하지만 실제 사용하는 순간을 제외하고도 메모리가 할당되어 있기 때문에 메모리 낭비 발생

Paging

 

 

  • 프로세스의 가상 메모리 공간을 page라는 같은 크기의 단위로 Pysical memory를 page와 같은 크기인 frame으로 나눈 후 각각 Address mapping하는 방법. 
  • Address binging을 위해 모든 프로세스는 각각의 page table을 가진다.
  • 프로세스의 논리적 메모리 공간과 물리적 메모리가 page 단위로 나뉘어져서 외부 단편화 문제는 해결가능하다.
  • 각 프로세스의 마지막 page에서는 내부 단편화가 일어날 가능성이 있다.

Sementation

https://www.geeksforgeeks.org/segmentation-in-operating-system/

  • 프로세스의 가상 메모리 공간을 논리적 의미 단위(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