연속 메모리 할당
메모리에 프로세스를 그냥 통째로 순서대로 넣는 방법
간단하긴 한데..
메모리에 연속적으로 프로세스를 할당하는 방식에는 문제가 있다. 프로세스를 연속적으로 채워서 실행하다가, 일부 프로세스의 실행이 끝나고 빈 공간이 작게 분산되어 생기게 된다면, 큰 프로세스가 들어갈 수 없게 되어 공간이 낭비된다. 이런 현상을 외부 단편화 라고 한다.
외부 단편화를 해결하기 위해 메모리를 압축할 수 있다. 프로세스를 적당히 재배치시켜 빈 공간을 한 군데로 모으는 방식이다. 하지만 말로만 들어도 번거롭고 오래 걸릴것 같다.
메모리의 빈 공간이 여러개일 때, 프로세스를 어떤 공간에 배치할 지 결정하는 대표적인 방식으로는 최초 적합, 최적 적합, 최악 적합 방식이 있다.
그런데 어떤 프로세스는 잘 쓰이지도 않는데 계속 공간을 차지하고 있어서 다른 프로세스가 들어갈 수 없다. 얘네를 그냥 둬야할까?
스와핑 이란?
메모리에 있는 프로세스 중 현재 실행되지 않는 프로세스는 임시로 보조 기억 장치로 쫓아낸다. 이렇게 해서 생긴 빈 공간에 또 다른 프로세스를 적재하는 방식이다.
하지만 이렇게 열심히 쫓아내고 어쩌고 해도 결국 연속 할당 방식으로는 메모리보다 용량이 큰 프로세스를 적재할 수 없다. 이런 문제점들을 해결하기 위해 현대에는 페이징 이라는 기법이 널리 사용되고 있다.