메모리 관리 전략

.·2021년 8월 19일
0
post-thumbnail
  • 메모리 관리 배경
    - 각각의 프로세스는 독립된 메모리 공간을 갖고, OS 혹은 다른 프로세스의 메모리 공간에 접근할 수 없는 제한이 걸려 있다. 단지, OS만이 OS 메모리 영역과 사용자 메모리 영역에 대한 접근의 제약이 없다.
    - Swapping : 메모리의 관리를 위해 사용되는 기법. 표준 Swapping 방식으로는 라운드로빈과 같은 스케줄링의 다중 프로그래밍 환경에서 CPU 할당 시간이 긑난 프로세스의 메모리를 보조기억장치로 내보내고 다른 프로세스의 메모리를 불러 들일 수 있다.

    • 이 과정을 swap이라 한다. 주 기억장치로 불러오는 과정을 swap-in, 보조기억 장치로 내보내는 과정을 swap-out이라 한다. swap에는 큰 디스크 전송시간이 필요하기 때문에 현재에는 메모리 공간이 부족할 때 swapping이 시작된다.
  • 단편화(Fragmentation) : 프로세스들이 메모리에 적재되고 제거되는 일이 반복되다 보면, 프로세스들이 차지하는 메모리 틈 사이에 사용하지 못할 만큼의 작은 자유공간들이 늘어나게 되는데, 이것이 단편화 이다. 단편화는 2가지 종류로 나뉜다.

    • 외부 단편화 : 메모리 공간 중 사용하지 못하게 되는 일부분. 물리 메모리(RAM)에서 사이사이 남는 공간들을 모두 합치면 새로 프로세스를 삽입할 공간이 되는 현상. <전체적인 관점에서 보는 단편화>
    • 내부 단편화 : 프로세스가 사용하는 메모리 공간에 포함된 남는 부분. 예를들어 메모리 분할 자유공간 10,000B가 있고 ProcessA가 9,998B 사용하게 되면 2B라는 차이값이 존재하는데 이 현상을 내부 단편화라 부른다. <프로세스 관점에서, 미시적관점>
    • 압축 : 외부 단편화를 해소하기 위해 프로세스가 사용하는 공간들을 한쪽으로 몰아, 자유공간을 확보하는 방법론이지만, 작업효율이 좋지는 않다.
  • 페이징(Paging)
    - 하나의 프로세스가 사용하는 메모리 공간이 연속적이어야 한다는 제약을 없애는 메모리 관리 방법이다. 외부 단편화와 압축 작업을 해소 하기 위해 생긴 방법론으로, 물리 메모리는 Frame 이라는 고정크기로 분리 되어 있고, 논리 메모리(프로세스가 점유하는)는 Page라 불리는 고정크기의 블록으로 분리된다.(페이지 교체 알고리즘에 들어가는 페이지)
    - 페이징 기법을 사용함으로써 논리메모리가 물리 메모리에 저장 될 때, 연속되어 저장될 필요가 없고, 물리 메모리의 남는 프레임에 적절히 배치됨으로써 외부 단편화를 해결할 수 있다.
    - 하나의 프로세스가 사용하는 공간은 여러개의 페이지로 나뉘어서 관리되고(논리메모리에서), 개별 페이지는 순서에 상관없이 물리메모리에 있는 프레임에 Mapping 되어 저장된다고 볼 수 있다.

    • 단점 : 내부 단편화 문제의 비중이 늘어나게 된다. 예를 들어 페이지 크기가 1,024B 이고 프로세스 A가 3,172B 메모리를 요구한다면 3개의 페이지 프레임(1,024 * 3 = 3,072)+ 100B가 추가적으로 요구되기 때문에 총 4개의 페이지 프레임이 필요하게 된다. 결국 내부 단편화의 문제는 피해갈 수 없다.
  • 세그멘테이션(Segmentation)
    - 페이징 에서처럼 논리 메모리와 물리 메모리를 같은 크기의 블록이 아닌, 서로 다른 크기의 논리적 단위인 세그먼트로 분할하여 사용자가 두 개의 주소로 지정(세그먼트번호+ 변위)
    세그먼트 테이블에는 각 세그먼트의 기준(세그먼트의 시작 물리주소와) 변위(세그먼트의 길이)를 저장.

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

0개의 댓글