메모리 낭비 방지 기법과 연속 메모리 할당

Woosung Kim·2022년 1월 21일
0

메모리 낭비 방지 기법

동적 적재 (Dynamic Loading)

프로그램 실행에 반드시 필요한 루틴/데이터만 적재

ex) 오류 처리 루틴은 오류가 발생하면 그때 적재한다.

동적 연결 (Dynamic Linking)

여러 프로그램에 공통 사용되는 라이브러리의 루틴 연결을 실행 시(런타임)에 진행

  • cf) 정적 연결 (Static Linking) : 실행파일이 만들어지기 전(컴파일 타임)에 링킹

스와핑(Swapping)

메모리에 적재되어 있으나 현재 사용되지 않고 있는 프로세스 이미지를 하드디스크의 특정공간인 Backing Store (= Swap Device)로 이동

  • swap-out : 메모리 -> Backing Store
  • swap-in : Backing Store -> 메모리

연속 메모리 할당

고정 분할 vs 가변 분할

고정 분할

  • OS가 동일한 크기로 메모리 파티션을 나누어 할당한다.
  • 실행하고자 하는 프로세스의 크기가 파티션 크기보다 크면 해당 프로세스는 실행될 수 없다.
  • 프로세스에 할당된 파티션은 남은 공간이 있을지라도 다른 프로세스 할당을 위한 영역으로 쓰일 수 없다.

가변 분할(동적 분할)

  • OS가 일정 크기의 메모리 파티션을 나누지 않고 동적으로 메모리를 할당한다
  • 비어있는 연속 메모리 공간을 hole이라 하는데, 프로세스를 실행하고자 할 때 OS는 해당 프로세스가 들어설 수 있는 크기의 hole을 찾아 앞부분부터 차곡차곡 넣는다.
  • 프로세스가 할당되고도 남은 hole 공간은 다른 프로세스의 할당 공간으로 사용될 수 있다.

👉 hole 선택 기준은?

  • 최초 적합(First-Fit)
    - 첫번째로 찾은 적정 hole을 선택하고 조건에 부합하는 hole을 찾았으면 탐색을 중단한다.
  • 최적 적합(Best-Fit)
    - 프로세스 크기에 가장 꼭 맞는 hole을 선택한다. 프로세스가 할당되고도 남을 잔여 공간이 제일 작아야 한다.
  • 최악 적합(Worst-Fit)
    - 프로세스가 들어서고도 남을 잔여 공간이 제일 큰 hole을 선택한다.
  • 🐾 성능 비교

    속도 : 최초 적합 👍
    메모리 이용률 : 최초 적합, 최적 적합 👍

메모리 단편화 (Memory Fragmentation)

  • 프로세스의 적재와 해제가 반복되면서 Hole 들이 불연속하게 흩어져있는(Scattered Hole) 현상

🐾 내부 단편화 (Internal Fragementation)
프로세스에 할당되었으나, 프로세스가 사용하지 않아 메모리 공간이 낭비되었을 경우

🐾 외부 단편화(External Fragmentation)
프로세스에 할당되지 않았으나, 메모리 공간 크기가 작아서 프로세스가 적재될 수 없는 경우


참고 및 이미지 출처 : KOCW 운영체제 12: 동적 적재, 동적 연결, 연속 메모리 할당, 메모리 단편화 | 작성자 큐 Queue

profile
개발하는 강아지

0개의 댓글