메모리 관리 전략

배한빈·2023년 3월 26일
1
post-thumbnail
post-custom-banner

목적

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

정의

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

방법

  • 메모리 할당(고정 분할, 가변 분할)
  • 페이징
  • 세그멘테이션
  • 세그멘테이션 페이징 혼용 기법

고정 분할 방식

  • 프로세스의 크기와 상관없이 메모리를 같은 크기로 나누는 것
  • 물리적 메모리를 몇 개의 영구적 분할로 나눈다
  • 분할된 구역당 하나의 프로그램을 적재
  • 내부/외부 단편화 발생
    • 내부 단편화 : 프로그램의 크기보다 분할의 크기가 작은 경우, 아무 프로그램에도 배정되지 않은 빈 공간이지만 프로그램이 올라갈 수 없는 작은 분할
    • 외부 단편화 : 프로그램 크기보다 분할의 크기가 큰 경우, 특정 프로그램에 배정되었지만 사용되지 않는 공간

내부 단편화(Internal fragmentation)의 해결 방안

  1. Segmentation : 가변 길이 방식의 대표 유형
  2. 메모리 풀 : 동적 할당의 방식 중 하나. 미리 필요한 만큼 할당 받아서 만들어 둔다.

외부 단편화(External fragmentation)의 해결 방안

  1. storage compaction(압축) : 주기적으로 삭제 공간을 회수하여 메모리 공간들을 정리하는 방식. 비용이 많이 들어 자주 쓸 수 없는 것이 단점이다
  2. Coalescing(통합): 단편화로 인해 쪼개진 공간들 중 인접한 공간들을 합쳐서 더 크게 만드는 방식이다.
  3. placement strategy(배치 전략): 배치를 잘하는 방식을 사용하여 단편화의 발생 가능성을 최대한 줄이는 방식이다(best-fit, first-fit, worst-fit)
  4. paging 기법 사용

가변 분할 방식

  • 프로그램의 크기를 고려해서 할당
  • 분할의 개수, 크기가 동적으로 변함
  • 외부 단편화가 발생함

😅 성능 면에선 더 좋을 것 같지만 귀찮음이 발생

고정 분할 방식

  • 프로세스의 크기에 상관없이 메모리가 같은 크기로 나뉘며, 큰 프로세스가 메모리에 올라오면 여러 조각으로 나뉘어 배치
  • 한 프로세스가 분산되어 배치되기 때문에 비연속 메모리 할당이라고 한다.
  • 💡 관리가 용이하지만 메모리 낭비 발생

가변 분할 방식

  • 프로세스의 크기에 맞게 메모리가 분할되므로 메모리의 영역이 각각 다르다.
  • 한 프로세스가 연속된 공간에 배치되기 때문에 연속 메모리 할당이라고 한다.
  • 💡 연속된 공감에 배치 가능하지만 메모리 관리 복잡

Hole

  • 가용 메모리 공간
  • 다양한 크기의 Hole 들이 메모리 여러 곳에 존재
  • 프로세스가 도착하면 수용 가능한 hole을 할당
  • 운영체제는 할당 공간, 가용 공간(hole) 정보를 유지
  • Hole을 관리하는 것 = 메모리 관리 전략

메모리 할당 알고리즘(배치 전략)

first-fit

  • 최초로 할당받을 수 있는 크기의 공간에 무조건 할당된다.

Best-fit

  • 공간을 모두 탐색하고 할당할 메모리 크기보다 크고 그중에 가장 작은 공간을 찾아 할당한다.
  • 일반적인 환경에서 외부 단편화가 제일 적게 일어난다.

Worst-fit

  • 공간을 모두 탐색하고 가장 큰 공간을 찾아 할당한다.
  • 일반적인 환경에서 외부 단편화가 가장 많이 일어난다.

효율성

  • First-fit이 다른 알고리즘에 비해 시간복잡도가 적다.
    • Best-fit과 Worst-fit은 메모리 공간을 전체를 탐색해야 하지만 First-fit은 모두 탐색하지 않아도 공간이 나온다면 바로 넣으면 된다.
  • 일반적인 환경에서는 First-fit과 Best-fit의 성능은 비슷하고 Worst-fit은 성능이 떨어진다.

Noncontiguous allocation (불연속 할당)

하나의 프로세스가 메모리의 여러 영역에 분산되어 올라간다.

페이징

  • 메모리 공간이 연속적으로 할당되어야 한다는 제약조건을 없애는 메모리 관리 전략
  • 논리 메모리는 고정크기의 페이지, 물리메모리는 고정크기의 프레임 블록으로 나누어 관리
  • 내부 단편화가 발생

세그멘테이션

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

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

  • 페이징과 세그멘테이션도 각각 내부 단편화와 외부 단편화가 발생
  • 페이징과 세그멘테이션을 혼용해 이러한 단편화를 최대한 줄이는 전략

출처

https://velog.io/@chappi/OS%EB%8A%94-%ED%95%A0%EA%BB%80%EB%8D%B0-%ED%95%B5%EC%8B%AC%EB%A7%8C-%ED%95%A9%EB%8B%88%EB%8B%A4.-13%ED%8E%B8-%EA%B0%80%EB%B3%80-%EB%B6%84%ED%95%A0-%EB%A9%94%EB%AA%A8%EB%A6%AC%EC%99%80-%EA%B3%A0%EC%A0%95-%EB%B6%84%ED%95%A0-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EB%8B%A8%ED%8E%B8%ED%99%94

profile
성장을 즐기는 개발자, 배한빈입니다.
post-custom-banner

0개의 댓글