[ CS / OS ] 메모리 관리 전략

황승환·2022년 2월 21일
0

CS

목록 보기
33/60

메모리 관리 전략

메모리 관리 배경

각각의 프로세스는 독립된 메모리 공간을 가지고, 운영체제 혹은 다른 프로세스의 메모리 공간에 접근할 수 없다. 오직 운영체제만이 운영체제의 메모리 영역과 사용자 메모리 영역에 모두 접근할 수 있다.

Swapping


메모리의 관리를 위해 사용되는 기법으로 Round-Robin과 같은 스케줄링의 다중 프로그래밍 환경에서 CPU 할당 시간이 끝난 프로세스의 메모리를 보조 기억장치(하드디스크 등)로 내보내고, 다른 프로세스의 메모리를 불러 들이는 것이다. 즉, Swapping은 메모리의 공간이 부족할 경우, 특정한 우선순위를 가지고 우선순위 순으로 메모리 상의 프로세스를 디스크로 내리는 과정이다.

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

단편화 (Fragmentation)

프로세스들이 메모리에 적재되고 제거되는 과정이 반복되면, 메모리 상의 프로세스 간의 작은 빈 공간들이 생기게 되는데 이를 단편화라고 한다.

외부 단편화


메모리 공간 중 사용하지 못하게 되는 일부분. 물리 메모리(RAM)에서 사이사이 남는 공간들을 모두 합치면 충분한 공간이 되는 부분들이 분산되어 있을 때 발생한다.
-> 메모리 상의 프로세스와 프로세스 간의 사용하지 못하고 낭비되는 작은 공간

내부 단편화


프로세스가 사용하는 메모리 공간에 포함된 남는 부분. 예를 들어 메모리 분할 자유 공간이 10,000B가 있고, Process A가 9,998B를 사용하면 2B라는 차이가 생기게 되는데 이를 내부 단편화라고 한다.
-> 프로세스가 사용하고 남은 작은 공간

압축

외부 단편화를 해소하기 위해 프로세스가 사용하는 공간들을 한쪽으로 몰아 자유공간을 확보하는 방법론이지만, 작업 효율이 좋지 않다.

페이징 (Paging)


하나의 프로세스가 사용하는 메모리 공간이 연속적이어야 한다는 제약을 없애는 메모리 관리 방법이다. 외부 단편화와 압축 작업을 해소하기 위해 생긴 방법론으로, 물리 메모리는 Frame이라는 고정 크기로 분리되어 있고, 논리 메모리(프로세스가 점유하는)는 페이지라 불리는 고정 크기의 블록으로 분리된다.

페이징 기법을 사용함으로써 논리 메모리는 물리 메모리에 저장될 때, 연속되어 저장될 필요가 없고 물리 메모리의 남는 프레임에 적절히 배치됨으로써 외부 단편화를 해결할 수 있다.

하나의 프로세스가 사용하는 공간은 여러 개의 페이지로 나뉘어서 관리되고 (논리 메모리), 개별 페이지는 순서에 상관 없이 물리 메모리에 있는 프레임에 mapping되어 저장된다.

즉, 논리 메모리는 고정 크기의 페이지로, 물리 메모리는 고정 크기의 프레임으로 나눠서 관리하도록 하고, 하나의 프로세스가 가지는 여러 개의 페이지들은 물리 메모리의 프레임에 연속적이지 않게 올라갈 수 있다. 이렇게 되면 외부 단편화를 해소할 수 있게 된다.

단점

내부 단편화 문제의 비중이 늘어나게 된다. 예를 들어 페이지 크기가 1,024B이고 프로세스 A가 3,172B의 메모리를 요구한다면 3개의 페이지 프레임 (1,024 * 3 = 3,072)하고도 100B가 더 필요하기 때문에 4개의 페이지 프레임이 필요하게 된다. 이 경우, 4번째 페이지 프레임은 924B의 여유 공간을 가지게 된다. 즉, 내부 단편화가 발생한다.
-> 페이지와 프레임을 고정 크기로 나눠서 관리하기 때문에 발생한 문제

Segmentation


페이징에서처럼 논리 메모리와 물리 메모리를 같은 크기의 블록이 아닌, 서로 다른 크기의 논리적 단위인 세그먼트(Segment)로 분할하는 방법이다.

사용자는 두 개의 주소(세그먼트 번호+변위)로 지정하고 세그먼트 테이블에는 각 세그먼트의 기준(세그먼트의 시작 물리 주소)과 한계(세그먼트의 길이)를 저장한다.

단점

서로 다른 크기의 세그먼트들이 메모리에 적재되고 제거되는 일이 반복되다 보면, 자유 공간들이 많은 수의 작은 조각들로 나눠져 사용하지 못하게 된다. 즉, 외부 단편화가 발생한다.

profile
꾸준함을 꿈꾸는 SW 전공 학부생의 개발 일기

0개의 댓글