Related to: Operating System

참조

https://dheldh77.tistory.com/entry/운영체제메모리-관리-전략Memory-Management-Strategy

메모리 관리 전략이란?

메모리 용량이 증가함에 따라 프로그램의 크기 또한 계속 증가하고 있기 떄문에 메모리는 언제나 부족합니다.

메모리 관리 전략은 제한된 물리 메모리의 효율적인 사용과 메모리 참조 방식을 제공하기 위한 전략입니다.

1) 연속 메모리 할당

  • 프로세스를 메모리에 연속적으로 할당하는 기법
  • 할당과 제거를 반복하다보면 Scattered Holes가 생겨나고 이로 인한 외부 단편화가 발생
  • 연속 메모리 할당에서 외부 단편화를 줄이기 위한 할당 방식
    • 최초 적합(First fit)
      • 가장 처음 만나는 빈 메모리 공간에 프로세스를 할당
      • 빠름
    • 최적 적합(Best fit)
      • 빈 메모리 공간의 크기와 프로세스의 크기 차이가 가장 적은 곳에 프로세스를 할당
    • 최악 적합(Worst fit)
      • 빈 메모리 공간의 크기와 프로세스의 크기 차이가 가장 큰 곳에 프로세스를 할당
      • 이렇게 생긴 빈 메모리 공간에 또 다른 프로세스를 할당할 수 있을 거라는 가정에 기인

2) 페이징(Paging)

  • 메모리 공간이 연속적으로 할당되어야 한다는 제약조건을 없애는 메모리 관리 전략
  • 논리 메모리는 고정크기의 페이지, 물리메모리는 고정크기의 프레임 블록으로 나누어 관리
  • 프로세스가 사용하는 공간을 논리 메모리에서 여러 개의 페이지로 나누어 관리하고, 개별 페이지는 순서에 상관없이 물리 메모리에 있는 프레임에 매핑되어 저장
  • MMU(Memory Management Unit)의 재배치 레지스터 방식을 활용해 CPU가 마치 프로세스가 연속된 메모리에 할당된 것처럼 인식하도록 함
  • 내부 단편화 발생

3) 세그멘테이션(Segmentation)

  • 페이징 기법과 반대로 논리 메모리와 물리 메모리를 같은 크기의 블록이 아닌, 서로 다른 크기의 논리적 단위인 세그먼트로 분할
  • 외부 단편화 발생

4) 세그멘테이션 페이징 혼용 기법

  • 페이징과 세그멘테이션도 각각 내부 단편화와 외부 단편화가 발생
  • 페이징과 세그멘테이션을 혼용해 이러한 단편화를 최대한 줄이는 전략
  • 프로세스를 세그먼트(논리적 기능 단위)로 나눈 다음 세그먼트를 다시 페이지 단위로 나누어 관리
  • 매핑 테이블을 두 번 거쳐야하므로 속도가 느려짐

효과적인 메모리 사용

(1) 동적 적재(Dynamic Loading)

  • 프로그램 실행에 반드시 필요한 루틴과 데이터만 적재하는 기법
  • 모든 루틴(ex. 오류처리)과 데이터(ex. 배열)는 항상 사용하지 않고, 실행 시 필요하다면 그때 해당 부분을 메모리에 적재

(2) 동적 연결(Dynamic Linking)

  • 라이브러리 루틴연결을 컴파일 시점에 하는 것이 아닌 실행 시점까지 미루는 기법

(3) 스와핑(Swapping)

  • CPU에서 실행중이지 않는 프로세스는 저장장치의 Swap 영역으로 이동(Swap in/Swap out)해 메모리를 확보
  • 문맥 교환으로 인한 오버헤드가 발생할 수 있고 속도가 느려지지만, 메모리 공간 확보에는 효율적