<쉽게 배우는 운영체제> 교재를 참고하였습니다.
메모리 분할 방식
이번에는 한 번에 여러 프로세스가 실행되는 구조의 메모리 문제
메모리 분할 방식 : 메모리를 어떤 크기로 나눌 것인지 메모리 배치 정책에 해당
메모리에 여러 개의 프로세스를 배치하는 방법
- 가변 분할 방식 : 프로세스의 크기에 따라 메모리를 나누는 것
- 고정 분할 방식 : 프로세스의 크기와 상관없이 메모리를 같은 크기로 나누는 것
식당 의자 비유
- 가변 분할 방식 : 손님의 신체 크기에 맞게 의자를 준비하는 것
- 고정 분할 방식 : 손님의 신체 크기와 상관없이 같은 크기의 의자를 준비하는 것
손님 자리 배치 비유
- 가변 분할 방식 : 어디에 앉든 제약이 없기 때문에 손님들이 알아서 편한 자리에 앉음 (관리 복잡함, 사용자 용이)
- 고정 분할 방식 : 의자를 4개씩 파티션으로 나누고 손님들의 자리를 파티션 단위로 배정(관리 용이). 함께 온 일행이 분산해서 앉는 것을 감수해야 함. (사용자 입장에서 불편). 식사 중 자리를 옮길 필요 없음 (관리 용이함)
- [그림 7-23] (a)에서 B팀 3명이 식사를 마친 후 손님 4명이 온 경우
- 4명이 함께 앉을 수 있는 빈자리가 없기 때문에 10 ~ 13번에 있는 C팀이 옆으로 이동해야 손님 4명이 앉을 수 있음
메모리 분할 방식의 구현
- 가변 분할 방식
- 프로세스의 크기에 맞게 메모리가 분할
- 메모리의 영역의 크기가 각각 다름
- 한 프로세스가 연속된 공간에 배치되기 때문에 연속 메모리 할당
- 고정 분할 방식
- 프로세스의 크기에 상관없이 메모리가 같은 크기로 나뉨
- 큰 프로세스가 메모리에 올라오면 여러 조각으로 나누어 배치
- 한 프로세스가 분산되어 배치되기 때문에 비연속 메모리 할당
- [그림 7-24] (a)에서 프로세스 B와 D가 작업을 종료하면 18KB와 17KB의 빈 공간이 생김.
- 이때 19KB 이상의 프로세스가 메모리에 올라오려고 한다면? 빈 공간이 분리되어 있기 때문에 올라올 수 없음
- 따라서 빈 공간을 하나로 합쳐야 함. 이 과정에서 프로세스 C의 자리도 이동해야 함.
- [그림 7-24] (b)에서 프로세스 B는 18KB, 프로세스 D는 17KB이므로 메모리의 한 조각인 20KB에 배치하면 공간이 남음
가변 분할 방식의 장단점
- 장점 : 프로세스를 한 덩어리로 처리하여 하나의 프로세스를 연속된 공간에 배치
- 단점 : 비어 있는 공간을 하나로 합쳐야 하며, 이 과정에서 다른 프로세스의 자리도 옮겨야 하므로 메모리 관리가 복잡함
고정 분할 방식의 장단점
- 장점 : 메모리를 일정한 크기로 나누어 관리하기 때문에 메모리 관리가 수월 (가변 분할 방식의 메모리 통합같은 부가적인 작업을 할 필요가 없음)
- 단점 : 쓸모없는 공간으로 인해 메모리 낭비가 발생할 수 있음.
가변 분할 방식의 메모리 관리
가변 분할 방식의 자리 배정 (일식집 예)
- 가상 메모리 시스템에서는 가변 분할 방식을 세그먼테이션 기법이라 함
- 프로세스 배치방법과 문제점을 학습함
- 프로세스 배치와 외부 단편화 (예 : 일식집, 의자 = 메모리, 손님 = 프로세스)
- [그림 7-26]은 A팀 3명과 D팀 1명이 식사를 마친 후, 1, 2, 3, 8, 16번 의자가 비어 있음.
- 의자 5개가 비어 있지만 4개가 연속해서 비어 있는 상태가 아니기 때문에 H팀 4명에게 자리 배정 불가함
- 이때 B팀과 C팀에게 오른쪽으로 한 자리씩 이동을 부탁하면 해결 가능하지만, 식사 도중 이동을 부탁하는 것은 어려운 일임
- 또 다른 경우, 마지막에 대기중인 I팀 2명을 먼저 빈자리에 배정할 수도 있음. 그러나 H팀이 오랫동안 기다렸다면 양보하지 않을 가능성도 있음.
- 양보해도 이런 방법은 아사 현상을 발생시킴. 인원이 많은 팀이 계속 자리를 배정받지 못하는 문제가 발생할 수 있으므로 의자가 비었다고 순서에 상관없이 아무 팀이나 자리를 배정하면 안 됨.
- [그림 7-27]은 계속해서 B팀 2명과 F팀 1명이 식사를 마친 후 1~5번 의자가 빈 상태가 되어 H팀 4명이 자리를 배정받음
- 결과적으로 5, 8, 13, 16번 자리가 있지만 I팀 2명은 계속 자리 배정을 받지 못함.
- 그림과 같이 가변 분할 방식은 빈 영역이 있어도 서로 떨어져 있으면 프로세스를 배정하지 못하는 것이 문제임.
- 때문에, 작은 조각들이 발생하는 현상을 단편화(fragmentation) 또는 조각화라고 함.
가변 분할 방식과 외부 단편화
- 프로세스 A, B, C, D, E를 순서대로 배치했을 때 프로세스 B와 D가 종료되면 18KB와 17KB의 빈 공간이 생김
- 이후 18KB보다 큰 프로세스가 들어오면 적당한 공간이 없어 메모리를 배정하지 못하는데, 가변 분할 방식에서 발생하는 이러한 작은 빈 공간을 외부 단편화(external fragmentation)라고 함
외부 단편화 해결
- 메모리 배치 방식 : 작은 조각이 발생하지 않도록 프로세스를 배치하는 것
- 조각 모음 : 조각이 발생했을 때 작은 조각들을 모아서 하나의 큰 덩어리로 만드는 작업
메모리 배치 방식
- 최초 배치first fit
- 프로세스를 메모리의 빈 공간에 배치할 때 메모리에서 적재 가능한 공간을 순서대로 찾다가 첫 번째로 발견한 공간에 프로세스를 배치하는 방법
- 최적 배치best fit
- 메모리의 빈 공간을 모두 확인한 후 적당한 크기 가운데 가장 작은 공간에 프로세스를 배치하는 방법
- 최악 배치worst fit
- 빈 공간을 모두 확인한 후 가장 큰 공간에 프로세스를 배치하는 방법
메모리 배치 방식 비교
- 최초 배치
- 빈 공간을 찾아다닐 필요 없음
- 최적 배치
- 빈 공간을 모두 확인하는 부가적인 작업이 있지만 딱 맞는 공간을 찾을 경우 단편화가 일어나지 않음
- 딱 맞는 공간이 없을 때는 아주 작은 조각을 만들어내는 단점이 있음
- 최악 배치
- 최적 배치와 반대로 접근함
- 프로세스를 배치하고 남은 공간이 크기 때문에 쓸모가 있음
- 빈 공간의 크기가 클 때는 효과적이지만 빈 공간의 크기가 점점 줄어들면 최적 배치처럼 작은 조각을 만들어 냄
조각 모음
- 최초 배치, 최적 배치, 최악 배치 방식을 사용해도 단편화 현상이 발생함
- 가변 분할 방식에는 작은 프로세스가 작업을 마치고 메모리에서 나가면 그 공간이 조각으로 남아 쓸모 없어질 가능성
- 이미 배치된 프로세스를 옆으로 옮겨 빈 공간들을 하나의 큰 덩어리로 만드는 작업
- 조각 모음 순서
- ① 조각 모음을 하기 위해 이동할 프로세스의 동작을 멈춤
- ② 프로세스를 적당한 위치로 이동 (프로세스가 원래의 위치에서 이동하기 때문에 프로세스의 상대 주소값을 바꿈)
- ③ 작업을 다 마친 후 프로세스 다시 시작
고정 분할 방식의 메모리 관리
고정 분할 방식의 자리 배정 (일식집 예)
- 가상 메모리 시스템에서는 고정 분할 방식을 페이징이라고 함
- 프로세스 크기에 상관없이 메모리를 같은 그기로 나누기 때문에 관리가 용이함
- 그러나 메모리의 여러 조각에 나뉘어 저장되는 것이 문제가 됨
- 프로세스 배치와 내부 단편화
- [그림 7-32]에서는 의자 2개씩 파티션으로 나눔. 각 팀은 하나 이상의 파티션에 앉는데 떨어져 앉을 수도 있음
- 함께 온 일행이 아니면 같은 파티션에 앉을 수 없음
- 다른 팀과 파티션을 공유하지 못하기 때문에 빈자리에 다른 팀이 앉을 수 없어 대기자가 8명이 됨
- [그림 7-25]의 가변 분할 방식에서 대기자 6명과 비교해 고정 분할 방식이 비효율적인 것처럼 보임
- 그런데 A팀 3명과 D팀 1명이 식사를 마치고 나갔을 때 가변 분할 방식에서는 대기자 6명이 모두 자리를 배정받지 못함
- 이와 반대로, 고정 분할 방식에서는 3개의 파티션이 남아 G팀 2명과, H팀 4명이 자리 배정 받음
- 이처럼 고정 분할 방식은 가변 분할보다 공간을 효율적으로 관리함
- 고정 분할 방식은 조각 모음을 할 필요가 없어 관리가 원할하며 메모리 관리 시스템의 기본 방식으로 사용됨
고정 분할 방식의 프로세스 배치
- 분할된 크기는 20KB이므로 40KB인 프로세스 A는 프로세스 A1과 A2로 나뉘어 메모리에 할당
- 30KB인 프로세스 C는 프로세스 C1과 C2로 나뉘는데, 메모리에 남은 공간이 없으므로 프로세스 C2는 스왑 영역으로 옮겨짐
고정 분할 방식과 내부 단편화
- 각 메모리 조각에 프로세스를 배치하고 공간이 남는 현상
- 고정 분할 방식은 내부 단편화를 줄이기 위해 신중하게 메모리의 크기를 결정해서 나눠야 하지만 사용하는 프로세스의 크기가 제각각이기 때문에 메모리를 얼마로 나누느냐에 관한 정답은 없음
가변 분할 방식과 고정 분할 방식의 비교
'전공 > 운영체제' 카테고리의 다른 글
[심화]Ch07. 물리 메모리 관리_05)컴파일과 메모리 관리 (0) | 2023.05.20 |
---|---|
Ch07. 물리 메모리 관리_04)다중 프로그래밍 환경에서의 메모리 할당_2 (2) | 2023.05.20 |
Ch07. 물리 메모리 관리_03)단일 프로그래밍 환경에서의 메모리 할당 (0) | 2023.05.14 |
Ch07. 물리 메모리 관리_02)메모리 주소 (1) | 2023.05.14 |
Ch07. 물리 메모리 관리_01)메모리 관리의 개요 (1) | 2023.05.13 |
댓글