본문 바로가기

OS

[운영체제] 메모리 관리 전략

728x90

※ 메모리란?

메인 메모리, RAM을 뜻한다. 프로그램 실행 시 필요한 주소, 정보들을 저장하고 가져다 사용할 수 있게 만드는 공간. 

 즉, 작업을 위해 사용되는 공간.

 

메모리 관리 전략이 필요한 이유? 

멀티프로그래밍 환경으로 변화하면서 한정된 메모리를 효율적으로 사용해야 했고, 운영체제가 이를 어떻게 관리하는지에 대한 관리방법이 중요해졌다. 

 

🤔 왜 운영체제가 관리하는가? 

각각의 프로세스는 독립된 메모리 공간을 갖고, 운영체제 혹은 다른 프로세스의 메모리 공간에 접근할 수 없는 제한이 걸려있다.

단지, 운영체제만이 운영체제 메모리 영역과 사용자 메모리 영역의 접근에 제약을 받지 않기 때문에 운영체제에서 메모리를 관리한다.

 

운영체제의 역할

실행파일이 로더에 의해 메모리에 올라오고 운영체제는 이 실행파일을 메모리의 어느 부분에 올릴지 결정한다.

 


Swapping

메모리의 관리를 위해 사용되는 기법.

메모리에 적재되어 있으나 현재 사용되지 않고 있는 프로세스를 관리하는 역할

 

표준 Swapping 방식으로는 round-robin과 같은 스케줄링의 다중 프로그래밍 환경에서 CPU 할당 시간이 끝난 프로세스의 메모리를 backing store(보조기억장치 , e.g 하드디스크)로 내보내고 다른 프로세스의 메모리를 불러 들일 수 있다.. 

 

 

→ 이 과정을 swap (스왑시킨다) 이라 한다. 주 기억장치(RAM)로 불러오는 과정을 swap-in, 보조 기억장치로 내보내는 과정을 swap-out 이라 한다. swap 에는 큰 디스크 전송시간이 필요하기 때문에 현재 메모리 공간이 부족할 때 Swapping이 시작된다.

 


단편화 (Fragmentation)

스와핑 과정 중 발생하는 현상으로,

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

 

1) 외부 단편화 (External Fragmentation)

가변 분할 방식에서 메모리에 프로세스가 적재되고 제거되는 일이 반복되면서 여유 공간이 충분함에도 불구하고 이러한 여유 공간들이 조각으로 흩어져 있어 (Scarttered Holes) 메모리에 프로세스를 적재하지 못해 메모리가 낭비되는 현상

 

 

2) 내부 단편화 (Internal Fragmentation)

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

 

 

*압축 (Compaction)

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

✔️ Scattered Holes를 합치는 과정에서 메모리에 적재된 프로세스를 정지시키고

✔️ 한쪽으로 이동시키는 작업이 필요해 비효율적이다.

 

또한, Scattered Holes를 어느 자유 공간을 기준으로 모으는지에 대한 알고리즘도 모호하다. 


메모리 관리 전략

1) 연속 메모리 할당 

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

 

할당과 제거를 반복하다보면 Scattered Holes가 생겨나고 이로 인한 외부 단편화가 발생

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

 

a. 최초 적합 (First fit)

- 가장 처음 만나는 빈 메모리 공간에 프로세스를 할당

- 빠르다

 

b. 최적 적합 (Best fit)

- 빈 메모리 공간의 크기와 프로세스의 크기 차이가 가장 적은 곳에 프로세스를 할당

 

c. 최악 적합 (Worst fit)

- 빈 메모리 공간의 크기와 프로세스의 크기 차이가 가장 큰 곳에 프로세스를 할당

- 이렇게 생긴 빈 메모리 공간에 또 다른 프로세스를 할당할 수 있을 거라는 가정에 기인

 

 

2) 페이징 

가상메모리사용, 외부 단편화 해결, 내부 단편화 존재

 

하나의 프로세스가 사용하는 메모리 공간이 연속적이어야 한다는 제약을 없앤 메모리 관리 방법이다.

 

외부 단편화와 압축 작업을 해소하기 위해 생긴 방법론으로, 

물리 메모리는 Frame 이라는 고정 크기로 분리되어 있고, 

논리 메모리(프로세스가 점유하는)는 페이지라 불리는 고정 크기의 블록으로 분리된다.(페이지 교체 알고리즘에 들어가는 페이지)

 

페이징 기법을 사용함으로써 논리 메모리는 물리 메모리에 저장될 때, 연속되어 저장될 필요가 없고 물리 메모리의 남는 프레임에 적절히 배치됨으로 외부 단편화를 해결할 수 있는 큰 장점이 있다.

하나의 프로세스가 사용하는 공간은 여러 개의 페이지로 나뉘어서 관리되고(논리 메모리에서), 개별 페이지는 순서에 상관없이 물리 메모리에 있는 프레임에 mapping 되어 저장된다고 볼 수 있다.

 

🔴 단점 : 내부 단편화 문제의 비중이 늘어나게 된다. 예를들어 페이지 크기가 1,024B이고 프로세스 A 가 3,172B 의 메모리를 요구한다면 3 개의 페이지 프레임(1,024 * 3 = 3,072) 하고도 100B 가 남기 때문에 총 4 개의 페이지 프레임이 필요한 것이다. 결론적으로 4 번째 페이지 프레임에는 924B(1,024 - 100)의 여유 공간이 남게 되는 내부 단편화 문제가 발생하는 것이다.

 

 

3) 세그먼테이션(Segmentation)

가상메모리사용, 내부 단편화 해결, 외부 단편화 존재

 

페이징에서처럼 논리 메모리와 물리 메모리를 같은 크기의 블록이 아닌, 서로 다른 크기의 논리적 단위인 세그먼트(Segment)로 분할 

사용자가 두 개의 주소로 지정(세그먼트 번호 + 변위) 세그먼트 테이블에는 각 세그먼트의 기준(세그먼트의 시작 물리 주소)과 한계(세그먼트의 길이)를 저장

 

🔴 단점 : 서로 다른 크기의 세그먼트들이 메모리에 적재되고 제거되는 일이 반복되다 보면, 자유 공간들이 많은 수의 작은 조각들로 나누어져 못 쓰게 될 수도 있다.(외부 단편화)

 

 

4) 세그먼테이션 - 페이징 혼용 기법 

페이징과 세그먼테이션도 각각 내부 단편화와 외부 단편화가 발생하므로 두 가지 방법을 혼용해서 이러한 단편화를 최대한 줄이는 전략 

프로세스를 세그먼트(논리적 기능 단위)로 나눈 다음에 세그먼트를 다시 페이징 단위로 나누어 관리한다.

 

🔴 단점 : 매핑 테이블을 두 번 거쳐야 하므로 속도가 느리다.

'OS' 카테고리의 다른 글

[운영체제] 캐시  (0) 2022.09.20
[운영체제] Deadlock(교착상태)  (0) 2022.09.12
[운영체제] 프로세스 동기화 3  (1) 2022.09.12
[운영체제] 프로세스 동기화 2  (0) 2022.09.11
[운영체제] 프로세스 동기화 1  (0) 2022.09.11