[ CS / OS ] Fragmentation (단편화)

황승환·2022년 7월 18일
0

CS

목록 보기
51/60

Fragmentation (단편화)

단편화란 기억장치의 빈 공간 또는 자료가 여러 개의 조각으로 나뉘는 현상을 말한다.

External fragmentation (외부 단편화)

  • 할당된 메모리 간의 프로그램이 들어갈 수 없을 정도의 남는 메모리 공간이 발생하는 것을 말한다.
    • 이 경우, 해당 공간에 프로그램을 적재할 수 없기 때문에 메모리 낭비를 초래한다.
  • 어떠한 프로그램도 적재되지 않았지만, 사용할 수 없는 공간이 발생한다.
  • 해결 방법: Paging

Internal fragmentation (내부 단편화)

  • 할당된 메모리보다 적재되는 프로그램의 크기가 작아 메모리 공간이 남는 것을 말한다.
    • 이 경우, 남는 메모리 공간에 프로그램을 적재할 수 없기 때문에 메모리 낭비를 초래한다.
  • 할당된 메모리 내부의 사용하지 못하는 공간이 발생한다.
  • 해결 방법: Segmentation

Compaction (압축)

  • 외부 단편화를 해결하기 위해 프로세스가 사용하는 메모리 공간을 한쪽으로 몰아, 남는 메모리 공간을 사용할 수 있도록 하는 방법론이다.
  • 작업 효율이 좋지 않다는 단점이 있다.

Swapping

  • 내부적인 우선순위에 따라 다른 프로세스를 사용하기 위해 메모리 상의 프로세스의 주소 공간 전체를 디스크로 내리는 방법이다. 이때 디스크 상의 스왑 공간을 활용한다.
  • 프로세스의 종료에 의해 디스크로 내려가는 것이 아니라, 특정한 이유로 실행중인 프로세스를 내리는 것이다.
    • 스왑 인: 디스크 -> 메모리
    • 스왑 아웃: 메모리 -> 디스크

OS의 메모리 관리

프로그램을 메모리에 할당하는 것은 OS가 내부적으로 처리하는 일이다. 이에 대한 방법으로 크게 연속 할당 방식과 불연속 할당 방식이 있다.

가상 메모리

  • 실제 물리 메모리와 사용자의 논리 메모리 개념을 분리한 것이다.
  • 실제 물리 메모리의 크기는 한정적이기 때문에 이보다 더 많은 공간이 필요할 경우, 스와핑과 같은 기술을 통해 해결해야한다.
  • 가상 메모리는 실제 물리 메모리보다 큰 프로세스라도 가상 메모리를 통해 구동할 수 있다.
  • 전체 프로그램이 물리 메모리에 올라와 있지 않아도 된다.
  • 더 많은 프로그램을 동시에 실행할 수 있다.
  • 다중 프로그래밍을 실현하기 위해 물리 메모리의 제약을 완화하고, 프로세스 전체를 메모리에 올리지 않고도 실행 가능하도록 한다.

연속 할당 방식

  • 각각의 프로세스를 메모리의 연속적인 공간에 적재하는 방식이다.
    • 고정 분할 방식
      • 물리적 메모리를 주어진 개수만큼의 영구적인 조각으로 미리 분할하고, 각 조각에 하나의 프로세스를 적재하여 실행하는 방식이다. (고정적인 크기로 분할)
      • 내부 단편화 문제를 초래한다.
    • 가변 분할 방식
      • 메모리에 적제되는 프로세스의 크기에 따라 조각의 크기, 개수가 동적으로 변하도록 분할하는 방식이다. (가변적인 크기로 분할)
      • 외부 단편화 문제를 초래한다.

불연속 할당 방식


페이징

세크멘테이션

  • 하나의 프로세스를 물리적 메모리의 여러 영역에 분산하여 적재하는 방식이다. 이는 가상메모리 방식을 적용하기 때문에 가능하다.
    • Paging (페이징)
      • 프로세스를 동일한 크기의 Page로 나눈다.
        • Page: 고정 사이즈의 가상 메모리 내 프로세스 조각
        • Frame: 페이지 크기와 같은 물리 메모리의 조각
      • 외부 단편화 문제를 해결할 수 있다. (동일한 크기의 Page를 사용하여 물리 메모리의 남는 Frame에 적절히 적재되기 때문에 Frame 간의 잉여 공간이 발생하지 않는다.)
      • 내부 단편화 문제를 초래한다.
    • Segmentation (세그멘테이션)
      • 프로세스를 서로 다른 크기의 논리적 블록 단위인 Segment로 나눈다.
        • Segment: 논리적인 단위로 분할된 프로세스 조각
      • 내부 단편화 문제를 해결할 수 있다. (Segment를 통해 필요한 크기만큼만 할당할 수 있기 때문에 Segment 내부의 잉여 공간이 발생하지 않는다.)
      • 외부 단편화 문제를 초래한다.
profile
꾸준함을 꿈꾸는 SW 전공 학부생의 개발 일기

0개의 댓글