본문 바로가기

Tech/운영체제

[운영체제] 메모리 관리

메모리 관리가 필요한 이유

  • 프로그램의 실행(프로세스)를 위해서는 메모리를 할당해야 함
  • 메모리는 한정된 자원이기 때문에 멀티 프로그래밍 시스템에서는 여러 프로세스들이 메모리를 효율적으로 이용할 수 있도록 관리가 필요함
  • 효율적인 메모리 참조(논리 - 물리 주소 변환) - 프로세스가 메모리 주소를 직접 참조하는 것이 아니라 프로세스의 주소 공간이란 것과 메모리의 주소 공간이란 것을 구분하고 있기 때문에 좀 더 빠르게 메모리 주소를 참조할 수 있는 관리 방법도 추가적으로 필요함.

스와핑(Swapping)

CPU에서 실행되지 않는 프로세스 중 일부를 메모리가 아닌 디스크에 저장하는 기법

  • swap in : 디스크 → 메모리
  • swap out : 메모리 → 디스크

가상 메모리 기법의 핵심으로 디스크를 활용하여 큰 메모리가 있는 것처럼 효율적으로 사용할 수 있는 기법

하지만, Context Switching 비용이 크다. → 디스크 내 별도의 스왑 공간을 사용하거나 실제로 사용하는 부분만 스왑하도록 최적화 필요

2. 연속 메모리 할당(Contiguous Memory Allocation)

프로세스를 메모리에 연속으로 할당하는 기법. 프로세스를 RAM에 적재할 때 프로세스가 올라간 시작 주소만 알고 있다면 프로세스가 사용하는 모든 코드나 함수 또는 변수들의 위치를 쉽게 바인딩 가능하다.

  • 최초 적합(first-fit) : 요청한 크기를 만족하는 첫번째 가용 공간에 할당
  • 최적 적합(best-fit) : 요청한 크기를 만족하는 가용 공간 중 가장 적은 공간에 할당
  • 최악 적합(worst-fit) : 가장 큰 가용 공간에 할당

단편화?

동적 메모리의 할당의 큰 문제점은 메모리에 짜투리 공간이 발생한다는 것. 짜투리 공간의 크기가 작아 어떤 프로세스에게도 할당되지 않는 메모리의 낭비가 발생하는데 이를 단편화라고 함

외부 단편화(external fragmentation)

프로세스들이 메모리를 차지하는 과정에서 외부에 여러 개로 작게 나누어진 공백이 생겨서 메모리를 할당할 수 없는 상태가 되는 것

내부 단편화(internal fragmentation)

프로세스를 고정된 크기의 페이지로 분할할 때, 프로세스 메모리 크기가 페이지 단위와 나누어 떨어지지 않으면 할당된 마지막 프레임이 가득차지 않는 현상

해결 방법

메모리 압축

  • 짜투리 메모리들을 하나로 합쳐 큰 메모리로 확보 (== 디스크 조각 모음)
  • 외부 단편화 해결 가능
  • 꽤 시간이 필요한 작업이기 때문에 비효율적

페이징(paging)

  • 메모리 공간이 연속적이어야 한다는 제약 없앰
  • 한 프로세스의 논리 주소 공간을 여러 개로 분할하여 비연속적인 물리 메모리 공간에 할당
  • 외부 단편화 해결, 내부 단편화 해결x

세그먼테이션(Segmentation)

  • 페이징에서 처럼 논리, 물리 메모리를 같은 크기의 블록이 아닌, 서로 다른 크기의 논리적 단위인 세그먼트로 분할
  • 외부 단편화 해결x, 내부 단편화 해결

메모리 풀(Memory Pool)

  • 필요한 메모리 공간을 필요한 크기, 개수만큼 사용자가 직접 지정하여 미리 할당받고 필요할 때마다 사용, 반납하는 기법
  • 메모리 할당, 해제가 잦은 경우 효과적
  • 외부 단편화, 내부 단편화 발생 x
  • 메모리 풀을 만들었지만 쓰지 않았을 때도 계속 할당된 상태이므로 메모리 누수가 발생한다.

[참고]

 

7. 메모리 관리 기법(2) - 스와핑, 연속 메모리 할당

메모리 관리 기법 메모리 관리의 목적 제한된 물리 메모리의 효율적인 사용이 목적 (할당) - 여러개의 프로세스에게 효율적으로 할당 해야 한다. 효율적인 메모리 참조 (논리 - 물리 주소 변환) -

goodmilktea.tistory.com

 

[운영체제 OS] 메모리 관리란? - 이유, 방법

※ 메모리란? : 메인 메모리, RAM을 뜻한다. 프로그램 실행 시 필요한 주소, 정보들을 저장하고 가져다 사용할 수 있게 만드는 공간.  즉, 작업을 위해 사용되는 공간. 메모리 관리가 필요한 이유

technote-mezza.tistory.com

 

반응형