본문 바로가기
이론 공부 내용 정리

OS-메모리 관리 전략

by mazayong 2021. 7. 19.

목적 : 메모리 용량이 증가함에 따라 프로그램의 크기가 계속 증가하고 있어서 메모리가 언제나 부족하기 때문.

정의 : 제한된 물리 메모리의 효율적 사용과 메모리 참조 방식을 제공하기 위한 전략.

효과적 메모리 사용을 위한 방법

  1. 메모리 낭비 방지
  • 동적 적재(Dynamic Loading)모든 루틴과 데이터는 항상 사용하지 않고, 실행 시 필요하다면 해당 부분을 메모리에 적재.
  • 프로그램 실행에 반드시 필요한 루틴과 데이터만 적재하는 기법.
  • 동적 연결(Dynamic Linking) - 설명 추가 예정.
  • 라이브러리 루틴연결을 컴파일 시점에 하는 것이 아닌 실행 시점가지 미루는 기법.
  • 스와핑(Swapping)메모리 공간 확보는 효율적.-스와핑의 순서-
    1. 시스템은 실행 준비가 끝난 프로세스들을 준비완료 큐에 대기시킨다.
    2. CPU스케쥴러는 다음 프로세스를 고를 때 Dispatcher를 호출한다.
    3. Dispatcher는 이 큐에 있는 다음 프로세스가 메모리에 적재되어있는지 확인하고, 만약 올라와 있지 않다면 디스크에서 불러들여야 함.
    4. 프로세스들을 불러들이기 위한 공간이 메모리에 부족하면 현재 메모리에 적재된 프로세스들을 내보내고(swap out) 원하는 프로세스를 불러들인다.(swap in)
    5. 그 후, CPU의 모든 레지스터를 실행해야 할 프로세스의 것으로 다시 적재 후 제어를 프로세스에게 넘긴다.
     Context-switching time로 인한 오버헤드 발생 + 현재 메모리의 프로세스가 휴지상태(idle)임을 확인해야 함.ex) 평상시에는 작동하지 않다가 자유 메모리가 임계량보다 부족하게 될 경우 작동을 시작, 프로세스 일부만 스와핑해 Contest-switching time을 줄일 수도 있음.
  • 현재 OS는 기본 스와핑은 사용하지 않지만 변현된 스와핑 방식 이용하기도 함.
  • CPU에서 실행중이지 않는 프로세스는 저장장치의 Swap영역으로 이동해서 메모리를 확보.

메모리 관리 전략

  1. 연속 메모리 할당

프로세스를 메모리에 연속적으로 할당하는 기법.

할당과 제거를 반복하면 Scattered Holes가 생겨나고 외부 단편화가 발생. (설명 추가)

(1) 연속 메모리 할당에서 외부 단편화를 줄이기 위한 할당 방식

  • 최초 적합(First Fit)속도가 빠름.
  • 가장 처음 만나는 빈 메모리 공간에 프로세스 할당.
  • 최적 적합(Best fit)
  • 빈 메모리 공간의 크기와 프로세스의 크기 차이가 가장 적은 곳에 프로세스 할당.
  • 최악 적합(Worst fit)이렇게 생긴 빈 메모리 공간에 또다른 프로세스를 할당할 수 있을 것이라는 가정에 기인.
  • 빈 메모리 공간의 크기와 프로세스의 크기 차이가 가장 큰 곳에 프로세스 할당.
  1. 페이징

메모리 공간이 연속적으로 할당되어야 하는 제약조건을 없애는 메모리 관리 전략.

논리 메모리는 고정크기의 페이지, 물리메모리는 고정크기의 프레임 블록으로 나누어 관리.

프로세스가 사용하는 공간을 논리 메모리에서 여러 개의 페이지로 나눠 관리하고 개별 페이지는 순서에 상관없이 물리 메모리에 있는 프레임에 매핑되어 저장.

MMU의 재배치 레지스터 방식을 활용해 CPU가 마치 프로세스가 연속된 메모리에 할당된 것처럼 인식하도록 함.

내부 단편화 발생.

  1. 세그멘테이션(Segmentation)

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

외부 단편화 발생.

  1. 세그멘테이션 페이징 혼용 기법

페이징과 세그멘테이션도 각각 내부 단편화와 외부 단편화 발생.

페이징과 세그멘테이션을 혼용해 단편화를 최대한 줄이는 전략

프로세스를 세그먼트로 나눈 다음 세그먼트를 페이지 단위로 나눠 관리.

매핑 테이블을 2번 거쳐야 하므로 속도가 느려짐.

단편화(Fragmentation)

메모리 공간이 충분함에도 불구하고 프로세스가 메모리에 적재되지 못해 메모리가 낭비되는 현상.

  1. 외부 단편화(External Fragmentation)

가변 분할 방식에서 메모리에 프로세스가 적재되고 제거되는 일이 반복되면서 여유공간이 충분함에도 불구하고 여유 공간들이 Scattered Holes로 되어 있어서 메모리에 프로세스가 적재되지 못함. → 메모리가 낭비됨.

  1. 내부 단편화(Internal Fragmentation)

고정 분할 방식에서 프로세스가 실제 사용해야할 메모리보다 더 큰 메모리를 할당받아 메모리가 낭비되는 현상.

  1. 압축(Compaction)

외부 단편화를 해소하기 위한 방법으로 Scattered Holes를 모으는 방법.

Scattered Holes를 합치는 과정에서 메모리에 적재된 프로세스를 정지시키고 한쪽으로 이동시키는 작업이 필요해 비효율적.

Scattered Holes를 어느 자유공간으로 모을지 결정하는 알고리즘이 모호.

[운영체제]메모리 관리 전략(Memory Management Strategy)

메모리 관리 전략(1)