오래 못 할 짓 하지 않기

[ 운영체제 ] 12. 메모리 할당 본문

3학년 1학기/운영체제 (OS)

[ 운영체제 ] 12. 메모리 할당

쫑알bot 2024. 1. 14. 18:12
728x90

연속 메모리 할당

: 프로세스에 연속적인 메모리 공간을 할당

메모리에 프로세스 A의 크기만큼 할당 → 그 다음 B만큼 할당...

 

공간을 여러 개로 나누지 않고, 물리적 메모리 한 곳에 연속적으로 = 차곡차곡 적재하는 방식

 

 


스와핑

: 현재 사용되지 않는 프로세스들 → 보조 기억 장치의 일부 영역 ( = 스왑 영역 )

  그렇게 생겨난 빈 공간에 새로운 프로세스들 적재 하는 것

 

 

- 안 쓰는 것들은 메모리에 빼두고, 지금 쓸 것들만 메모리에 두기 때문에 

  효율적인 관리가 가능하다.

   * 안 쓰는 거 쫓아내는 거 = 스왑 아웃 / 쓸 거 메모리에 데려오는 거 = 스왑 인

 

 

Case)

[ 프로세스들이 요구하는 메모리 공간 크기 > 실제 메모리 크기 ] 일 때

( 적재 순서 A - B - C - D )

메모리에 프로세스 A 적재

▶ 메모리에 프로세스 B 적재

▶ 메모리에 프로세스 C 적재

 

▶ 메모리에 프로세스 D를 적재하려고 하는데 공간이 없음

     - 당장 실행될 필요 없는 B를 스왑 아웃 시키고 D를 적재

 

▶ 메모리에 프로세스 B를 적재하려고 하는데 공간이 없음

     - 당장 실행될 필요 없는 A를 스왑 아웃 시키고 B를 스왑 인 시킨다.

 


메모리 할당

: 프로세스는 메모리의 빈 공간에 할당되어야 한다.

 

 

만약 빈 공간이 여러 개 있다면??

 

● 할당 방식

 

1. 최초 적합 (first-fit)

: Os 가 메모리 내의 빈 공간을 순서대로 검색하다가

적재할 수 있는 공간을 발견하면, 그 공간에 프로세스를 적재

 

- 특징 : 검색 최소화 / 빠른 할당 가능

 

■ 위 사진에서는 메모리에서 A에 적재된다.

 

2. 최적 적합

: Os가 빈 공간을 모두 검색한 뒤, 적재 가능한 가장 작은 공간에 적재

 

■ 위 사진에서는 메모리에서 C에 적재된다.

 

3. 최악 적합

: Os가 빈 공간을 모두 검색한 뒤, 적재 가능한 가장 큰 공간에 적재

 

■ 위 사진에서는 메모리에서 B에 적재된다.

 


외부 단편화

 

하지만 이렇게 연속적으로 메모리에 할당하는 것은

효율적인 방법이 아니다.

외부 단편화 문제가 발생하기 때문

 

 

● 외부 단편화란

: 프로세스를 할당하기 어려울만큼 작은 메모리 공간들로 인해 메모리가 낭비되는 현상

 

 

위와 같이 프로세스들이 적재되어 있다.

▶ 프로세스 B와 D가 끝나서 해당 메모리 할당이 해제되었다.

▶ 30MB + 20MB = 50MB 공간이 생겼다.

▶ 하지만 50MB 프로세스는 할당할 수 없다 ㅠㅠ

     왜냐면 총 공간이 50MB 생겼지만, 어떤 공간도 50MB을 감당할 수는 없기 때문이다.

 

외부 단편화 예시)

 

 

● 외부 단편화 해결 방법

1. 메모리 압축 (Compaction)

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

 

  - 프로세스를 적당히 재배치 ▶ 흩어져 있는 작은 빈 공간들을 하나의 큰 빈 공간으로 만드는 방법이다.

 

● 단점 

[ 흩어져 있는 빈공간을 하나로 합치는 과정 ][ 실행되고 있는 프로세스들을 재배치하는 과정 ] 에서

많은 Overhead 야기할 수 있고,  그동안 프로세스들이 일을 제대로 수행하지 못할 수도 있다. 

 

→ 따라서 해결법으로 가상 메모리 기법, 페이징을 사용한다.

 

 

(출처)

유튜브 한빛미디어