Memory allocation
더보기
Continuous memory allocation (연속할당)
- Uni programming
- Multi programming
- Fixed partition multi programming (FPM)
- Variable partition multi programming (VPM)
Non continuous memory allocation -> Lecture 9 (비연속할당)
Continuous Memory Allocation
Variable Partition Multiprogramming
- 초기에는 전체가 하나의 영역임.
- 프로세스를 처리하는 과정에서 메모리 공간을 동적으로 분할
- 케이크를 잘라서 나눠주는 것과 같이 생각
어떻게 작동될지 예시를 살펴보자 - VPM Example
Memory space: 120 MB
파티션이 요청한 크기에 맞추서 동적으로 나누어짐
Internal Fragmentation이 발생하지 않음.
B가 나가면 파티션이 나누어진 공간이 남음..
10MB의 빈공간에 넣을 수 없으니 D다음에 할당
시간이 지나면서 빈 공간이 발생함.
Internal fragmentation issue
프로세스가 들어오면 어디에 배치할 것인가 (1)?
10MB, 20MB, 30MB 중 어디에 배치할 것인가?
Placement strategies (배치전략)
First fit (최초 적합)
- 충분한 크기를 가진 첫 번째 partition을 선택 (처음으로 만나는 알맞은 공간에 배치)
- Simple and low overhead
- 공간 활용률이 떨어질 수 있음 (16KB공백에 15KB를 넣는다고 하면 1KB 빈공간이 발생하는데 이 공간이 사용될 것 같지 않음 => 공간활용률이 떨어질 수 있음)
Best fit (최적 적합)
- 프로세스가 들어갈 수 있는 partition 중 가장 작은 곳 선택
- 탐색시간이 오래걸림 (모든 파티션을 다 살펴봐야 함) => overhead 가 크다..
- 크기가 큰 파티션을 유지할 수 있음
- 활용하기 적은 작은 크기의 파티션들이 많이 발생
Worst fit (최악 적합)
- 프로세스가 들어갈 수 있는 파티션 중 가장 큰 곳 선택
- 탐색시간이 오래 걸림 (모든 파티션을 살펴봐야 함)
- 작은 크기기의 파티션 발생을 줄일 수 있음
- 큰 크기의 partiotion 확보가 어려움 (큰 프로세스에게 필요한)
Next fit (순차 최초 적합)
- 최초 적합 전략과 유사
- State table에서 마지막으로 탐색한 위치부터 탐색
- 메모리 영역의 사용 빈도 균등화
- Low overhead
External fragmentation issue
프로세스가 들어오면 어디에 배치할 것인가 (2) ?
Coalescing holes (공간통합)
인접한 빈 영역을 하나의 파티션으로 통합
- 프로세스가 메모리를 release하고 나가면 수행함
- Low overhead
- 50MB의 프로그램이 실행되기 위해서 대기하고 있다가 30MB가 나가면 빈공간이 55MB가 되기 때문에 들어가서 실행할 수 있음
만약 프로그램이 빠르게 메모리상에 들어가고 싶을 때 해결 방법이 있다.
Storage Compaction (메모리 압축)
- 프로세스 처리에 필요한 적재 공간 확보가 필요할 때 수행
C와 E를 중지해서 빈공간을 없애기 위해 프로세스를 재배치 할 수 있다.
이때 프로세스를 중지하기 때문에 큰 오버헤드가 발생한다. (많은 시스템 자원을 소비)
자주해주면 좋지 않고 일정 기간, 또는 요청이 있을 때에만 수행한다.
메모리 관리 요약
- Backgrounds
- Memory allocation
- Continuous memory allocation
- Uni programming
- Multi programming
- Fixed partition multi programming (FPM)
- Variable partition multi programming (VPM)
- Continuous memory allocation
운영체제를 공부하는 이유, 어디에 쓰는가?
본 포스트는 KOREATECH의 HPC LAB. Duksu Kim 교수님 OS강의를 기반으로 정리한 내용입니다.
상업적 의도가 아닌 공부한 것을 정리해 놓은 목적으로 게시한 포스트입니다.
아래의 출처에서 자세한 내용을 수강하실 수 있습니다.
https://www.youtube.com/playlist?list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN
'CS > OS' 카테고리의 다른 글
[OS] 9. Virtual Memory - Paging system (0) | 2022.04.17 |
---|---|
[OS] 9. Virtual Memory - Non-continuous allocation (0) | 2022.04.15 |
[OS] 8. 메모리 관리 - Fixed Partition Multi-programming (0) | 2022.04.11 |
[OS] 8. 메모리 관리 - Backgrounds, address binding (0) | 2022.04.10 |
[OS] 7. Deadlock - Detection and Recovery (0) | 2022.04.07 |