[운영체제] 메모리 관리

변지현·2021년 1월 24일
0

운영체제

목록 보기
4/5

메모리 관리 배경

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

 메모리는 한정된 자원이기 때문에 사용하다 보면 당연히 공간이 부족하게 된다. 따라서 메모리 공간을 효율적으로 사용하기 위한 여러 방법이 존재 하는데 아래에서 설명할 pagingsegmentation이 그 예시이다. 또한 메모리 관리 기법에 따라 사용하지 못할 만한 작은 자유 공간이 생기는 단편화(Fragmentation)이 발생하기도 한다.

단편화(Fragmentation)

 프로세스들이 차지하는 메모리 틈 사이에 사용하지 못할 만큼의 자유 공간들이 생기는 현상, 외부 단편화(External Fragmentaion)와, 내부 단편화(Internal Fragmentation)로 나뉜다.

외부 단편화(External Fragmentation)

 메모리 공간 중 할당된 공간 사이에 작아서 사용하지 못하게 되는 일부분이 생기는 현상. 남는 공간들을 모두 합치면 충분한 공간이 되는 부분들이 분산되어 있을 때 발생한다. 메모리 압축(compaction)을 통해 해결한다.

메모리 압축(compaction)

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

내부 단편화(Internal Fragmentaion)

 프로세스가 사용하는 메모리 공간에 포함된 남는 부분이 생기는 현상. 예를 들어 프로세스에 할당된 공간이 100이라고 할 때, 실제 사용하는 공간이 80이면 20만큼의 공간이 남게 되는데 이러한 현상을 내부 단편화라고 한다.

페이징(paging)

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

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

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

단점

  내부 단편화가 자주 발생한다. 예를 들어, page의 크기가 1,024B이고 프로세스 A가 3,172B의 메모리를 요구한다면 3개의 page(1,024 * 3 = 3,072)를 사용하고도 100B가 모자르기 때문에 총 4개의 page가 필요한 것이다. 따라서 4번째 page에는 1,024B - 100B = 924B의 공간이 남게되는 내부 단편화 문제가 발생한다.

세그멘테이션(segmentation)

 논리 메모리와 물리 메모리를 같은 크기의 블록이 아닌, 서로 다른 크기의 논리적 단위인 세그먼트(segment)로 메모리를 할당한다.

단점

  외부 단편화가 발생한다.

profile
23살 개발자 변지점프의 더 나은 사람 되기 프로젝트

0개의 댓글