[운영체제] 연속 메모리 할당

Narcoker·2023년 6월 20일
0

운영체제

목록 보기
11/13

연속 메모리 할당

프로세스 A는 A의 크기 만큼 메모리 주소를 할당 받아 연속적으로 배치한다.
프로세스 B는 A 이후에 B의 크기만큼 연속적인 메모리 주소를 할당받아 배치한다.

이렇게 프로세스에 연속적인 메모리 공간을 할당하는 방식을 연속 메모리 할당이라고 한다.

스와핑

메모리에 적재된 프로세스들 중 현재 실행되지 않는 프로세스들을
임시로 보조기억장치 일부 영역(스왑 영역)으로 쫒아내고
이 빈공간에 새로운 프로세스를 적재하여 실행하는 방식

이때 프로세스가 스왑 영역으로 옮겨지는 것을 스왑 아웃이라고 하고
스왑 영역에 있던 프로세스가 다시 메모리로 옮겨 오는 것을 스왑 인 이라고 한다.
이때 스왑 아웃 되기전에 물리 주소와 다른 주소에 적재될 수 있다.

실행할 프로세스의 총 필요 메모리 공간이 실제 메모리 공간보다 클 경우에도
스와핑을 통해서 동시에 실행되는 것처럼 보이게 할 수 있다.

메모리 할당 방식

프로세스를 적재할 때 비어 있는 공간이 여러 곳이 있을때
어느 공간에 할당할지 선택할 방식이 필요하다.

대표적으로 최초 적합(First Fit),최적 적합(Best Fit), 최악 적합(Worst Fit) 이 있다.

최초 적합(First Fit)

hole(빈 공간)을 순서대로 순회하다가 적재할 수 있는 공간을 발견하면
그 공간에 프로세스를 배치하는 방식

검색을 최소화할 수 있고 빠른 할당이 가능하다.

최적 적합(Best Fit)

프로세스를 적재할 수 있는 hole들 중, 공간이 가장 작은 곳에 적재하는 방식

최악 적합(Worst Fit)

프로세스를 적재할 수 있는 hole들 중, 공간이 가장 큰 곳에 적재하는 방식

Best Fit 의 단점을 보안하기 위해 나오게 된 전략이다.
Best Fit은 남은 공간을 적게 만들자는 취지인데
이러한 남은 공간이 쌓이다보면 메모리 관리 효율성이 떨어진다.

이 때문에 남는 공간을 크게 만들어서 그 공간에 다른 프로세스가 할당될 수 있게 하자는
취지에서 이 전략이 나오게 됐다.

연속 메모리 할당

고정 분할 방식과 문제점

메모리를 고정된 크기로 파티셔닝하고 위치를 고정시킨 후 그 크기 안에 프로세스를 할당하는 방식
이 파티션의 크기는 모두 같을 수도 있고 다를 수도 있다.

구현이 쉽고 운영체제의 오버헤드가 적다.

내부 단편화

내부단편화란 hole의 공간이 할당된 프로세스보다 커서
이후에 사용하지 못하는 빈 공간이 생기는 현상
이 공간은 hole로 취급하지 않는다.

파티션에 할당하고 남는 공간에 다른 프로세스가 할당될 수 없다.

고정된 크기와 위치

파티션된 메모리 영역을 늘리거나 줄일 수 없고, 위치를 옮길 수 없다.

동적 분할 방식과 문제점

프로세스가 들어갈 수 있는 hole에
프로세스 크기에 딱 맞게 파티셔닝 하는 방식.
이 파티션들은 위치가 고정되어 있지 않아서 이동이 가능하다.

복잡한 메모리 할당

파티션에 새로운 프로세스를 할당할때마다 파티선의 크기가 변하고
이를 운영체제가 추적해야하기 때문에 오버헤드가 크다.

외부 단편화


hole 각각의 공간이 할당할 프로세스의 필요메모리 공간보다 작고
모든 hole 공간의 합이 할당할 프로세스의 메모리보다 큼에도 불구하고
각 hole의 공간이 프로세스의 크기보다 작아서 할당하지 못하는 문제

Compaction - 압축

흩어져 있는 hole을 하나로 모으는 방식으로
메모리 내에 적재된 프로세스들을 몰아 배치시켜
각 hole을 모아 하나의 큰 hole로 만드는 방법

하지만 메모리의 있는 내용을 옮기는 작업은 많은 오버헤드를 야기하며
어떤 프로세스를 어떻게 움직여야 오버헤드를 최소화하며 압축할 수 있는지에 대한
명확한 방법을 결정하기 어렵다.

이에 따라 외부 단편화를 없애기 위한 방법으로 페이징 기법이 등장하게 되었다.
이것이 오늘날 까지도 사용되고 있는 가상 메모리 기법, 그 중에서도 페이징 기법이다.

Collasing

인접한 hole을 하나의 hole로 모으는 방식

profile
열정, 끈기, 집념의 Frontend Developer

0개의 댓글