Continuous Memory Allocation
- 프로세스(context)를 하나의 연속된 메모리 공간에 할당하는 정책
- 메모리 구성 정책
- 메모리에 동시에 올라갈 수 있는 프로세스 수
- 각 프로세스에게 할당되는 메모리 공간 크기
- 메모리 분할 방법
Uni-programming
- 하나의 프로세스만 메모리 상에 존재, 가장 간단한 메모리 관리 기법
- 문제점1 : 프로그램의 크기 > 메모리 크기, 프로그램을 쪼개야 함(사용자, 개발자의 역할)
- 해결법1 : Overlay structure
- 메모리에 현재 필요한 영역만 적재하는 방식
- 사용자가 프로그램의 흐름 및 자료구조를 모두 알고 있어야함
- 문제점 2 : 커널 보호
- 해결법2 : 경계 레지스터(boundary register) 사용, 경계 주소를 적어 놓고 침범하지 않도록 방지
Uni-Programming의 문제점 : 하나만 올리기 때문에 남아있는 공간이 생김 ➡ 시스템 및 자원의 활용도가 낮음, 시스템 포퍼먼스가 낮음
📌 Fixed partition Multi-programming (FPM)
- 메모리 공간을 고정된 크기로 분할, 미리 분할되어 있음
- 각 프로세스는 하나의 partition(분할)에 적재
- Partition의 수 = Multiprogramming degree의 수
- Partition(State) table을 만듬 (partion이름, 크기, 프로세스 이름)
- 경계 레지스터를 사용하여 커널 및 사용자 영역 보호
📌Fragmentation (단편화)
내부 단편화 (Internal fragmentation)
- Partition 크기 > Process 크기 ➡ 메모리 낭비
외부 단편화 (External fragmentation)
- 남은 메모리 크기 > process 크기 지만, 연속된 공간이 아니라서 적재 불가능
➡ 메모리 낭비
- 요약 : 고정 된 크기로 메모리 미리 분할, 관리가 간편함, 자원이 낭비 될 수 있음
📌 Vaiable(유동적) partition Multi-programming (VPM)
- 초기에는 전체가 하나의 영역
- 프로세스를 처리하는 과정에서 메모리 공간이 동적으로 분할 됨 ➡ NO internal fragmentation
- 배치 선택 !
배치 전략 - VPM
- First-fit (최초 적합)
- 충분한 크기를 가진 첫 번째 파티션을 선택
- 간단하고 오버헤드가 적음 ↔ 공간 활용도가 떨어질 수 있음.
- Best-fit (최적 적합)
- Process가 들어갈 수 있는 partition 중 가장 작은 곳 선택
- 탐색시간이 오래걸려서 오버헤드가 크다.(모든 파티션 탐색)
- 크기가 큰 partition을 유지할 수 있음 ↔ 작은 크기의 partition이 많이 발생함(너무 작은 파티션만 남음)
- Worst-fit (최악 적합)
- partition 중 가장 큰 곳 선택
- 작은 크기의 파티션 발생을 줄일 수 있음! ↔ 큰 크기의 파티션 확보가 어려움
- Next-fit (순차 최초 적합)
- 최초적합 전략과 유사
- state table에서 마지막으로 탐색한 위치부터 탐색
- 메모리 영역의 사용 빈도 균등화, 오버헤드 작음
Extanal fragmentation 이슈
- Coalescing holes (공간 통합)
- Process가 memory를 release하고 나가면 인접한 빈 영역을 하나의 partition으로 통합
- 오버헤드가 적음
- Storage Compaction (메모리 압축)
- 모든 빈 공간을 하나로 통합
- 프로세스 처리에 필요한 적재 공간 확보가 필요할 때 수행
- High overhead, 모든 프로세스 중지 후 재비치, 많은 자원을 소비 ➡ 자주❌
정리
uni programming의 문제점을 해결하기 위해 파티션공간을 미리 분할
1. 고정 파티션 분할 ➡ 공간 낭비
2. 동적 파티션 분할 (배치전략, 외부 단편화 이슈 해결)
->📌 성능 이슈(new 생성)가 있을 때 Memory pool을 만들어서 FPM, VPM을 구현함
https://youtu.be/EdTtGv9w2sA [Course] Operating System (CPA310) - 운영체제 강의. HPC Lab. KOREATEC