📚CS/⚙OS

(운영체제, OS)단편화와 단편화 해결법

PangLog 2023. 3. 4. 17:20
단편화(Fragmentation)란 ?
  • 기억장치의 빈공간이 여러개의 조각으로 나뉘는 현상
  • 이는 기억장치의 사용 가능한 공간을 줄이거나, 읽기/쓰기의 수행속도를 늦춤

내부 단편화

  • 메모리를 할당 할 때 프로세스가 필요한 양보다 더 큰 메모리가 할당되어서 메모리 공간이 낭비되는 현상

외부 단편화

  • 메모리가 할당 및 해제 작업의 반복으로 메모리 중간중간에 사용하지 않는 메모리가 생기고 이를 합쳤을 때는 메모리가 충분하지만 실제로는 할당할 수 없는 상황

단편화 해결방법

  • 통합기법
    • 단편화로 인해 분산된 메모리공간들을 인접해 있는 것들끼리 통합 시킴(재배치 필요x)
  • 외부단편화 해결법 - 압축
    • 주기억장치에 분산되어 있는 단편화된 공간들을 통합하여 하나의 공간으로 만듦(재배치 필요)
    • 비용이 많이 들어 자주쓰지 않고 정해진 주기에 따라서 실행
    • 가비지컬렉션 작업이라고도 함
  • 페이징(Paging)
    • ``가상메모리`` 사용, `외부단편화` 해결
    - Page : 보조기억장치를 이용한 가상메모리를 같은 크기의 블록으로 나눈 것
    - Frame : 주 기억장치를 페이지와 같은 크기로 나눈 것
    • 사용하지 않는 프레임을 페이지에 옮기고(swap-out), 필요한 메모리를 페이지 단위로 프레임에 옮기는(swap-in)기법 => 중기 스케줄링
    • 페이지단위에 꽉 맞춰 쓰는게 아니라 내부 단편화 문제는 남아 있음
  • 세그멘테이션(Segmentation)
    • `가상메모리`사용, `내부단편화` 해결
    • 가상메모리를 서로 크키가 다른 논리적단위인 세그먼트로 분할하고 메모리를 할당하여 실제 메모리 주소로 변환
    • 각 세그멘트는 연속적인 공간에 저장되어 있음
    • 세그먼트들의 크기가 다르기 때문에 미리 분할할 수 없고 메모리에 적재될 때 빈공간을 찾아 할당
  • 메모리 풀(Memory poo)
    • `내부 단편화`, `외부 단편화` 해결
    • 필요한 메모리 공간을 필요한 크기, 갯수만큼 직접 지정하여 미리 할당받아 놓고 필요할 때 마다 사용하고 반납하는 기법
    • 단순히 동적할당과 해제만을 반복하면 랜덤한 위치에 할당과 해제가 반복되면서 단편화를 일으킬 수 있지만 미리 공간을 할당 해놓는다면 단편화가 생기지 않음
    • 그러나 단편화로 인한 메모리 낭비보다 메모리 풀을 만들고 사용하지 않았을 때의 메모리양이 커진 다면 오히려 손해(즉, 실제로 사용하지 않는 순간에도 할당되어 있기 떄문에 메모리 누수가 발생함)
    • => 메모리 할당, 해제가 잦다면 메모리 풀을 쓰면 효과적

 

참고

https://junsday.tistory.com/36

 

메모리 단편화(Memory Fragmentation)

메모리 단편화(Memory Fragmentation)란? 주 기억장치에서 메모리의 공간이 작은 조각으로 나뉘어져서, 사용하기에 충분한 양의 메모리가 존재는 하지만 사실상 사용이 불가능한 경우 메모리 단편화

junsday.tistory.com

 

반응형