[OS] Lec 8. Memory Management - Backgrounds (3/3)

ChoiYongHyeun·2024년 3월 20일
0

운영체제

목록 보기
13/16

강의를 듣고 정리하기 위해

다양한 사람들의 글들을 읽어봤는데

지금 생각해보니 나는 요즘 글을 틀리지 않은 정보만을 쓰기 위해서 너무 딱딱하게 쓰고 있나 ? 하는 생각이 들었다.

내가 이해하기 위해 쓰는 글인데 너무 딱딱했던 느낌 ..

좀 더 내가 완전히 이해하고 쓸 수 있도록 해야겠다.


Variable Partition Multiprogramming

이전 FPM (Fixed Partition Multi-Programming) 방식에서는

미리 파티션의 영역을 정적으로 고정시켜 나눠두었기 때문에 구현하는데 있어서는 크게 어려움이 없었으나

파티션의 크기가 프로세스의 크기보다 클 때 발생하는 Internal fragment 문제나

남은 메모리의 용량들이 담고자 하는 프로세스의 크기보다 큼에도 불구하고

연속적인 공간들이 아니기에 프로세스를 적재하지 못하는 External fragment 의 문제들이 존재했다.

현재 나는 Continuously Allocation 에 대해만 공부하고 쓰고 있기에 모든 프로세스들은 연속된 공간에만 할당되어야 한다고 생각하고 글을 쓰고 있다.

이에 Variable Partition Multi-programming(VPM) 에서는 파티션들을

정적으로 고정시켜 나눠두지 말고 프로세스가 할당 될 때 파티션을 나누는 방법이다.

이 때 파티션들은 프로세스의 크기를 확인하고 나누기 때문에 프로세스 크기에 딱 맞춰 파티션의 크기를 나누는 것이 가능하다.

그렇기 때문에 Internal fragmentation이 존재하지 않는다.

다만 VPM 방식에서도 몇 가지 신경써야 하는 부분들도 존재한다.

프로세스들이 메모리 용량을 차지하고 해제되는 상황등을 통해

메모리에 차있는 공간과 비어있는 공간들이 교차되며 발생하는 경우가 흔히 있을 것이다.

이 때 만약 5MB 의 프로세스가 나타난다면 어느 공간에 배치하는 것이 효율적일까 ?

이에 여러 배치 전략이 존재한다. 뒤에서 생각해보자

배치하고자 하는 프로세스가 파티션보다 크기가 작을 때

First-fit (최초 적합)

First - fit 방식에서는 메모리 공간을 순차적으로 조회하다가 가장 최초로 적합한 부분이 있다면

해당 메모리에 할당하는 방식을 의미한다.

이는 속도 면에서는 평균적으로 가장 빠르게 프로세스를 할당하는게 가능 할 수 있지만 공간 활용률이 떨어질 수 있다.

예를 들어 빈 공간이 [4,3,2,1 .. ] 이런식으로 있을 때

프로세스의 크기가 3 인 경우 first fit 으로 할 경우 4 인 공간에 차게 되어 또 1 만큼의 빈 공간을

만들어내기 때문이다.

이렇게 생성된 아주 작은 공간은 활용되지 못하여 공간 활용률이 떨어질 수 있다.

Best-fit (최적 적합)

최적 적합 방식은 Process 가 들어갈 수 있는 파티션들 중 가장 작은 곳을 선택하는 기법이다.

이를 통해 크기가 큰 파티션을 최대한 유지 할 수 있다.

크기가 큰 파티션을 유지하여 추후 크기가 큰 프로세스가 들어오더라도 할당 받을 수 있도록 한다.

다만 최적 적합의 문제는 가장 최적한 파티션을 찾기 위해 모든 파티션을 순회해야 한다는 것이며

작은 크기의 파티션들이 많이 발생한다는 단점이 있다.

이렇게 너무 작은 파티션들은 프로세스들이 모두 종료되기 전까지에도 활용되지 않을 가능성이 높다.

Worst - fit (최악 적합)

최악 적합 기법은 Best-fit 과 반대로 가장 큰 파티션을 선택해 분할한다.

이를 통해 작은 크기의 파티션 발생을 줄이지만 큰 크기의 파티션 확보가 어렵다는 단점이 있다.

이 또한 모든 파티션을 조회해야 한다는 단점이 잇다.

Next-fit (순차 최초 적합)

순차 최초 적합 기법은 최초 적합을 사용하지만

순회를 시작할 부분은 파티션들의 시작점이 아닌 , 지난 최초 적합으로 선택된 파티션 을 기준으로 한다.

이를 통해 메모리 영역의 사용 빈도를 균등화 해줄 수 있다.

배치하고자 하는 프로세스의 크기가 파티션들보다 클 때

이번에는 배치하고자 하는 프로세스가 파티션의 크기보단 크고 , 파티션 크기들의 총합보단 작은 경우를 생각해보자

이 경우엔 어떻게 배치해야 할까 ?

Coalescing holes (공간 통합)

공간 통합 기법은 인접한 빈 영역들을 하나의 파티션으로 통합하는 기법이다.

이전 프로세스가 사용하고 반납하여 개별적인 파티션들로 나뉘어진 메모리 공간 들을

하나의 파티션 영역으로 통합하여 나중에 더 큰 프로세스가 할당 될 수 있도록 하는 기법이다.

이는 각 프로세스가 메모리에서 해제 될 때 수행되며

기존에 수행되고 있는 프로세스들에게 영향을 미치지 않는다.

Storage Compaction

메모리 압축은 빈 여유공간 파티션들이 연속되지 않았을 때

마치 캔을 압축 시키듯 연속된 하나의 파티션 공간과 여러 프로세스들의 공간으로

메모리를 압축시키는 기법을 의미한다 .

이는 하나의 큰 파티션 영역을 확보 할 수 있다는 장점이 있지만

압축 시키는 동안 수행되고 있는 프로세스들을 모두 재배치하기 위해 프로세스를 중지해야 한다는 오버헤드가 존재한다.

profile
빨리 가는 유일한 방법은 제대로 가는 것이다

0개의 댓글

관련 채용 정보