Starbucks Caramel Frappuccino
본문 바로가기
  • 그래 그렇게 조금씩
Computer Science/운영체제

11. 연속 메모리 할당(적합, 외부 단편화, 압축)

by Toughie 2023. 9. 3.

🖥️ 운영체제 🖥️ 

프로세스들이 메모리 내에서 연속적으로 할당되는 것.

프로세스 A,B,C,D의 합이 물리 메모리의 크기보다 크더라도, 스와핑을 통해서 동시에 실행할 수 있음.(스왑인, 스왑아웃 반복)

연속 메모리 할당의 3가지 방식

최초 적합, 최적 적합, 최악 적합

but 프로세스를 연속적으로 메모리에 할당하는 방식은 메모리를 효율적으로 사용하는 방법이 아님.

'외부 단편화(external fragmentation)'이라는 문제가 발생하기 때문이다.

위와 같이 사용자 영역이 200MB라고 생각해 보자.

여기서 프로세스 A(50MB), 프로세스 B(30MB), 프로세스 C(100MB), 프로세스 D(20MB)를 차례대로 적재해야 한다면?

그리고 프로세스 B와 D가 실행이 끝나서 메모리에서 해제된다. (남은 공간은 50MB)

남은 공간의 총 합이 50MB이지만.. 쪼개져 있어서 50MB 짜리 프로세스를 할당할 수가 없다!

외부 단편화

프로세스들이 실행되고 종료되길 반복하면서 메모리 사이 사이에 빈 공간이 발생

외부 단편화란 프로세스를 할당하기 어려울 만큼 작은 메모리 공간들로 인해 '메모리가 낭비'되는 현상

(연속 메모리 할당의 치명적인 단점)

우측 예시는 최초 적합 시 외부 단편화 발생 케이스

외부 단편화 해결 방법

 

1. 메모리 압축(compaction)

여기저기 흩어져 있는 빈 공간들을 하나로 모으는 방식.

프로세스들을 적당히 재배치시켜 흩어져 있는 작은 빈 공간들을 '하나의 큰 빈 공간'으로 만드는 방법

(메모리 조각 모음을 생각해 보자.)

다만 빈 공간을 찾아서 합치고, 실행중인 프로세스를 재배치하는 과정에서 오버헤드가 야기됨.

-> 더 나은 방법이 나옴

 

가상 메모리 기법, 페이징 기법.

 

학습 출처: https://www.youtube.com/watch?v=bls_GjX-4U8&list=PLVsNizTWUw7FCS83JhC1vflK8OcLRG0Hl