내 잡다한 노트

챕터7. 다중 프로그래밍 환경에서의 메모리 할당 본문

운영체제

챕터7. 다중 프로그래밍 환경에서의 메모리 할당

peanutwalnut 2022. 9. 9. 16:19

여러개의 프로세스를 사용할 때 메모리를 할당하는 방식이 존재한다.

바로 가변 분할 방식과 고정분할 방식이다. 

 

가변 분할 방식은 프로세스를 한 덩어리처럼 프로세스의 크기대로 할당하는 방식으로 연속적이다.

프로세스마다 크기가 다르다보니 사용하던 프로세스가 종료가 돼 메모리에서 나갔을 때, 그 남은 공간보다

다음에 들어온 프로세스가 더 크다면 메모리에 들어가지 못하게 되고 그 남은 공간은 낭비가 된다.

이것을 외부 단편화라고 한다.

이 외부 단편화를 해결하기 위해선 조각 모음을 통해 사용중이던 프로세스를 잠시 중단하고 앞으로 이동시켜

남은 공간을 없애준다.

이런 외부단편화같은 것때문에 메모리를 관리하는게 복잡하다 조각모음처럼 부가적인 작업이 필요하기 때문에

조각 모음 말고도 외부 단편화 문제를 해결하기 위한 메모리 배치 방식으로는 

최초 배치, 최적 배치, 최악 배치, 버디 시스템이 존재한다.

최초는 메모리에 첫번째로, 최적는 남는 공간을 다 살펴서 낭비가 가장 안되는 공간에, 최악은 가장 크게 남는 공간에

들어가서 그 남는 공간을 다른 프로세스도 쓸 수 있게끔 한다.

 

고정 분할 방식은 메모리를 사용할 수 있는 크기를 정해 각 프로세스마다 쪼개서 그 크기대로 메모리를 사용할 수 있도록 한다.

그러다보니 비연속적이지만 크기가 딱딱 정해져있어서 메모리 관리가 편하다.

사용할 수 있도록 쪼개진 메모리보다 작은 프로세스가 들어올 때 남는 공간이 생기고 낭비가 발생할 수 있다.

이걸 내부 단편화라고 한다. 

현대 운영체제에서 메모리 관리는 기본적으로 고정 분할 방식을 사용하면서 일부분은 가변 분할 방식을 사용한다. 

 

버디 시스템

고정과 가변 분할 방식과 유사한 점들을 가지고 있다.