본문 바로가기

운영체제

메모리 관리 3 - 메모리 단편화(Memory Fragmentation)

728x90
반응형

Goal

  • 내부 단편화, 외부 단편화에 대해 설명할 수 있다.
  • 메모리 단편화 해결 방법에 어떤 것들이 있는지 설명할 수 있다.

메모리 단편화(Memory Fragmentation)란?

메모리 단편화란 메모리 공간이 비효율적으로 사용되어 저장 공간이 낭비되는 것을 말한다.

 

메모리 단편화로 일어날 수 있는 현상

  • 총 메모리 공간은 충분 하지만 실제 사용이 불가능할 수 있다.
  • 실제 사용 가능한 공간이 줄어들어 시스템 성능의 저하를 일으킬 수 있다.
    • 실제 사용할 수 있는 공간을 찾는 과정이 필요
    • 잦은 페이지 교체
    • swapping

 

메모리 단편화의 종류로 내부 단편화, 외부 단편화가 있다.

 

내부 단편화(Internal fragmentation)

할당한 영역 중 사용되지 않는 공간으로 인해 공간이 낭비되는 것을 의미한다.

'내부'라는 용어는 할당한 영역 내부에 사용되지 않는 공간이 있다는 것을 뜻한다.

 

ex)

  • 페이징 기법에서 한 페이지를 크게 할 경우 내부 단편화가 발생할 수 있다.
  • 배열을 너무 크게 잡은 경우

 

외부 단편화(External fragmentation)

메모리 여유 공간이 띄엄 띄엄 존재해서 실제로 사용할 수 없는 경우를 의미한다.

'외부'라는 용어는 사용할 수 없는 기억 장소가 할당된 영역 밖에 있다는 것을 뜻한다.

 

ex)

  • 동적 메모리 할당 해제를 자주 하는 경우

 

메모리 단편화 해결 기법

페이징/세그멘테이션 혼용

  • 페이징(paing) : 외부 단편화 해결, 내부 단편화 존재
  • 세그멘테이션(sementation) : 내부 단편화 해결, 외부 단편화 존재

운영체제에서 사용하는 방법이다.

 

메모리 풀(memory pool)

미리 고정된 크기의 메모리를 할당받아 메모리 동적 할당을 가능하게 해준다.

new, delete와 같이 할당/해제의 기능을 제공한다.

하지만, 처음 미리 할당 받은 공간에 대해서 일정 크기 블록을 나눠주고 회수하는 방식이라 단편화가 발생하지 않는다.

 

잦은 동적 할당/해제가 필요한 경우 사용하는 방식이며, 프로그래머가 직접 구현해서 사용할 수 있는 방식이다.

 

장점

  • 실행 시간으로 단편화 없이 메모리를 할당할 수 있다.
  • 실행 시간(run-time)에 블록을 할당하고 해제하는데 적은 비용이 든다. (잦은 동적 할당/해제에 비해)
  • 다른 크기를 관리하는 여러개의 할당자를 두고 관리할 수 있다.

 

단점

  • 사용하는 공간보다 더 많은 공간을 할당 받은 경우 낭비가 발생할 수 있다. (내부 단편화)

 

통합과 압축

일반적인 단편화 해결 방법으로 내부, 외부 단편화 모두 해결 가능하다.

 

통합(coalescing) : 인접한 둘 이상의 공백을 그들 사이의 경계를 없애고 하나의 공백으로 합치는 것

coalescing

 

 

압축(compaction) : 사용중인 영역과 빈 영역을 각각 한쪽으로 몰아 빈 영역들을 하나로 모으는 것

ex) 디스크 조각 모음

compaction

 

728x90
반응형

'운영체제' 카테고리의 다른 글

가상 메모리(virtual memory)  (2) 2020.11.25
메모리 관리 2 - 메모리 관리 전략  (0) 2020.11.23
메모리 관리 1 - 주소 바인딩  (0) 2020.11.20
교착 상태(Dead Lock)  (0) 2020.11.19
동기화(Synchronization)  (0) 2020.11.13