연속 메모리 할당
연속 메모리 할당이란 메모리 영역 중에서 요구하는 메모리 크기만큼 연속적인 공간을 찾아 할당하는 방식이다.
즉, 프로세스를 연속적인 공간에 할당하는 방식을 의미한다.
스와핑
설명에 앞서, 스와핑이 무엇인지 먼저 알아야 한다. 프로그램을 실행하기 위해서는 보조기억장치에 있는 프로세스가 메모리에 적재되어야 한다. CPU는 메모리에 적재된 프로세스를 사용한다.
메모리에 적재된 프로세스 중에 현재 사용되지 않는 프로세스 또는 IO작업으로 인해 대기 상태인 프로세스가 있을 수 있다. 오랫동안 사용되지 않는다면 굳이 메모리에 상주할 필요가 없다. 메모리의 크기는 한정적이기 때문에 효율적으로 사용해야 한다.
이때, 사용되지 않는 프로세스를 메모리에서 보조기억장치로 보내는 것을 스왑아웃(swap-out)이라 하고, 프로세스를 사용하기 위해 보조기억장치 -> 메모리로 적재하는 과정을 스왑인(swap-in)이라고 한다.
메모리를 할당하는 2가지 방법
프로세스를 메모리에 적재시키는 방법으로는 고정 분할 방식과 가변 분할 방식 2가지가 있다. 공통점으로는 프로세스 자체를 물리 메모리에 그대로 할당한다. 즉, 프로세스를 쪼개지 않고 그 자체를 물리 메모리에 적재한다.
고정 분할 방식
물리 메모리를 미리 고정된 크기로 나누고, 나누어진 공간에 프로세스를 적재하는 방식이다. 물론 하나의 메모리 공간에는 하나의 프로세스만 적재할 수 있다. 이러한 특징 때문에 단편화 문제가 발생한다.
내부 단편화
물리 메모리 영역이 프로세스 크기보다 크다면(물리 메모리 > 프로세스) 내부 단편화가 발생한다. 사진을 보면 프로세스 B의 크기가 분할된 물리 메모리 공간보다 작기 때문에 여유 공간이 생긴다. 이 여유공간을 내부 단편화가 발생한다고 하는데, 하나의 메모리 공간에는 하나의 프로세스만 적재될 수 있기 때문에 해당 공간을 사용하지 못하고 낭비된다.
외부 단편화
물리 메모리 영역이 프로세스 크기보다 작다면(물리 메모리 < 프로세스) 외부 단편화가 발생한다. 내부 단편화와 달리 프로세스의 크기가 비어있는 물리 메모리가 공간보다 커서 적재될 수 없다.
예를 들어, 프로세스 B가 보조기억장치로 스왑아웃되고 프로세스 D가 스왑인하는 과정을 생각해보자. 프로세스 B가 사용하던 공간이 비어있게 되고, 해당 공간을 프로세스 D를 적재하려고 했으나 메모리의 공간이 작아 적재할 수 없는 상황이 된다.
외부 단편화는 왜 발생할까? 프로세스가 실행되고 종료되기를 반복하면서 메모리 사이의 빈 공간이 생긴다. 이때, 새로운 프로세스의 크기가 메모리의 빈 공간보다 크기 때문에 적재될 수 없기 때문이다.
이처럼 비어있는 메모리 공간이 있음에도 프로세스의 크기가 더 커서 적재되지 못하는 물리 메모리 영역을 외부 단편화가 발생했다고 한다.
동적 분할 방식
고정 분할 방식의 경우 프로세스의 크기를 고려하지 않고 고정된 크기로 물리 메모리를 여러 개로 쪼개었다. 이와 달리, 동적 분할 방식은 프로세스의 크기에 맞춰 물리 메모리 공간을 쪼개어 프로세스를 적재한다.
사진을 보면 프로세스 A와 D가 물리 메모리에 할당된 공간의 크기가 다르다. 여기서도 외부 단편화, 내부 단편화가 발생한다.
동적 분할 방식에서는 프로세스를 메모리에 적재시키기 위해 최초 적합, 최적 적합, 최악 적합 3가지 방식이 존재한다.
- 최초 적합: 메모리를 적재할 수 있는 공간을 찾으면 그곳에 적재
- 최적 적합: 메모리를 적재할 수 있는 공간 중에서 프로세스를 적재하였을 때 남는 메모리 공간이 가장 적은 곳에 적재
- 최악 적합: 최적 적합과 달리 프로세스를 적재하였을 때 남는 메모리 공간이 가장 많은 곳에 적재
최초 적합
프로세스 3이 적재될 수 있는 공간이 2곳(45kb, 80kb)이 존재한다. 순차적으로 확인하였을 때, 45kb의 크기인 메모리에 프로세스를 적재할 수 있으므로 이곳에 적재한다.
최적 적합
마찬가지로 프로세스 3이 적재될 수 있는 공간이 2곳이 존재한다. 둘 중에 45kb 크기를 갖는 메모리에 적재해야 남는 공간이 5kb이므로 이곳에 적재해야 메모리 공간을 최소한으로 남길 수 있다.
최악 적합
프로세스 3을 적재할 수 있는 메모리 공간 2곳 중에 메모리 공간이 가장 많이 남는 공간에 프로세스를 적재한다.
다음글 : https://server-technology.tistory.com/342