CS/OperatingSystem

메모리 관리 전략

whyWhale 2021. 4. 22.

메모리 관리


각각의 프로세스는 독립된 메모리 공간을 갖고, OS 혹은 다른 프로세스의 메모리 공간에 접근할 수 없다. 단지, OS만이 운영체제 메모리 영역과 사용자 메모리 영역의 접근에 제약을 받지 않는다.

 

연속 메모리 관리

  • 프로그램 천제가 메모리에 연속적으로 할당하는 기법.
    • 고정 분할 기법 : 메모리가 고정된 파티션으로 분할하는 방법.(내부 단편화)
    • 동적 분할 기법 : 파티션들이 동적 생성되면 자신의 크기와 같은 파티션에 적재(외부 단편환)

불연속 메모리 관리

  • 프로그램의 일부가 서로 다른 주소 공간에 할당될 수 있는 기법.
  • 페이지 : 프로세스를 고정된 크기의 작은 블록으로 나누었을 때 , 해당 블록을 페이지라고 함.
  • 프레임 :  페이지의 크기와 같은 주기억 장치 메모리 블록(실제 주소)
  • 세그먼트 : 서로 다른 크기의 논리적 단위

 

Swapping : 메모리의 관리를 위해 사용되는 기법. 표준 Swapping 방식으로는 round-robin과 같은 스케줄링의 다중 프로그래밍 환경에서 CPU 할당 시간이 끝난 프로세스의 메모리를 보조 기억장치(e.g 하드디스크)로 내보내고 다른 프로세스의 메모리를 불러 들일 수 있다.

주 기억장치(RAM)으로 불러오는 과정을 swap-in, 보조 기억장치로 내보내는 과정을 swap-out 이라 한다. swap에는 큰 디스크 전송시간이 필요하기 때문에 현재에는 메모리 공간이 부족할 때 Swapping 이 시작된다.

 

단편화(Fragmentation) : 프로세스들이 메모리에 적재되고 제거되는 일이 반복되다보면, 프로세스들이 차지하는 메모리 틈 사이에 사용 하지 못할 만큼의 작은 자유공간들이 늘어나게 되는데, 이것이 단편화이다. 

 

  • 외부 단편화
    • 메모리 공간 중 사용하지 못하게 되는 일부분. 물리 메모리(RAM)에서 사이사이 남는 공간들을 모두 합치면 충분한 공간이 되는 부분들이 분산되어 있을 때 발생.
  • 내부 단편화
    • 프로세스가 사용하는 메모리 공간보다 적게 사용하는 경우에 발생.
  • ※ 압축 : 외부 단편화를 해소하기 위해 프로세스가 사용하는 공간들을 한쪽으로 몰아, 자유공간을 확보하는 방법론
    • 작업 효율이 좋지 못하다.
      • Scattered Holes 합치는 과정에서 메모리에 적재된 프로세스를 중지시키고 한쪽으로 이동시키는 작업이 필요하다.
      • 어느 공간을 기준으로 모을지 결정하는 알고리즘 또한 모호하다.

 

페이징


  • 하나의 프로세스가 사용하는 메모리 공간이 연속적이어야 한다는 제약을 없애는 메모리 관리 방법.
  • 외부 단편화와 압축 작업을 해소하기 위해 생긴 방법론으로, 물리 메모리는 Frame이라는 고정 크기로 분리되어 있으며, 논리 메모리(프로세스 점유)는 페이지라 불리는 고정 크기의 블록으로 분리된다.(페이지 교체 알고리즘 내포되어 있음)
  • 페이징 기법을 사용함으로써 논리 메모리는 물리 메모리에 저장될 때, 연속되어 저장될 필요가 없고 물리 메모리의 남는 프레임에 적절히 배치됨으로 외부 단편화를 해결할 수 있는 큰 장점이 있다.
  • 하나의 프로세스가 사용하는 공간은 여러개의 페이지로 나뉘어서 관리되고(논리 메모리 영역), 개별 페이지는 순서에 상관없이 물리 메모리에 있는 프레임에 mapping되어 저장된다.

단점

  • 내부 단편화 문제가 자주 발생한다.
    • 페이지의 크기가 1024B이고 프로세스 A가 3,172B의 메모리를 요구한다면 3개의 페이지 프레임(1024*3=3072)을 할당받고 100B가 비게 되기 때문에 총 4개의 페이지가 필요하다. 4번째 프레임은 924B가 남게 되어 내부 단편화가 발생하게 된다.

 

 

 

세그먼트


페이징에서 처럼 논리 메모리와 물리 메모리를 같은 크기의 블록이 아닌, 서로 다른 크기의 논리적 단위인 세그먼트로 분할하여 사용자가 두 개의 주소로 지정(세그먼트 번호+변위)하고 세그먼트 테이블에는 각 세그먼트의 기준(세그먼트의 시작 물리주소와) 한계(세그먼트 길이)를 저장한다.

 

단점

  • 서로 다른 크기의 세그먼트들이 메모리에 적재되고 제거되는 일이 반복되다 보면, 자유 공간들이 많은 수의 작은 조각들로 나누어져 못 쓰게 되는 외부 단편화 문제가 발생 할 수 있다.

'CS > OperatingSystem' 카테고리의 다른 글

캐시의 지역성  (0) 2021.04.25
가상메모리  (0) 2021.04.23
프로세스 동기화  (0) 2021.04.21
Blocking, Non-Blocking and Async  (0) 2021.04.21
스케줄러 알고리즘  (0) 2021.04.19

댓글