Machineboy空
가상 메모리 ① 연속 메모리 할당 본문
가장 일반적인 메모리 관리 방식 : 연속 메모리 할당

연속메모리 할당에서 프로세스 배치 방식
연속 메모리 할당의 부작용
운영체제의 메모리 관리 기능 중 스와핑(Swap)
- 현재 사용되지 않는 프로세스들을 보조기억장치의 일부 영역(swap 영역)으로 쫓아내고 그렇게 생긴 빈 공간에 새 프로세스를 적재
- 효율적으로 메모리 관리
- swap out: 메모리에서 스왑영역으로 쫓아내는 것
- swap in: 스왑 영역에서 메모리로 다시 적재
- 프로세스들이 요구하는 메모리 공간 크기 > 실제 메모리 크기 일 때도 프로세스를 실행할 수 있다.



연속 메모리 할당
프로세스는 메모리의 빈 공간에 할당되어야 한다. 빈 공간이 여러 개 있다면?
- 연속 메모리 할당의 방법: 어떤 빈 공간에 어떻게 할당할지
- 최초 적합(first-fit) 빈공간 A
- 운영체제가 메모리 내의 빈 공간을 순서대로 검색하다 적재할 수 있는 공간을 발견하면 그 공간에 프로세스를 배치하는 방식
- 장점
- 검색 최소화
- 빠른 할당
- 최적 적합(best-fit) 빈공간 C
- 운영체제가 빈 공간을 모두 검색해본 뒤 적재 가능한 가장 작은 공간에 할당
- 최악 적합(worts-fit) 빈공간B
- 운영체제가 빈 공간을 모두 검색해본 뒤 적재 가능한 가장 큰 공간에 할당
- 최초 적합(first-fit) 빈공간 A




외부 단편화(external fragmentation)
사실 프로세스를 연속적으로 메모리에 할당하는 방식은 메모리를 효율적으로 사용하는 방법이 아니다.
외부 단편화 잠재적 문제가 발생하기 때문



예시 상황
- 사용자 영역이 200MB일 때 아래 4가지 프로세스를 차례로 적재해야 한다면?
- 50MB인 프로세스 A
- 30MB인 프로세스 B
- 100MB인 프로세스 C
- 20MB인 프로세스 D
- 모두 적재 후 B, D가 실행이 끝났다. 빈 공간의 총 합은? B+D 50MB
- 하지만 하나의 크기가 50MB인 프로세스는 적재하지 못함
- 외부 단편화 (External Fragmentation)
- 프로세스들이 실행되고 종료되길 반복하며 메모리 사이 사이에 빈 공간이 발생한다.
- 프로세스를 할당하기 어려울 만큼 작은 메모리 공간들로 인해 메모리가 낭비되는 현상
즉 연속된 메모리 공간 할당은 외부 단편화라른 부작용을 초래한다.


외부 단편화 해결 방법
- 메모리 압축(compaction)
- 여기저기 흩어져 있는 빈 공간들을 하나로 모으는 방식
- 프로세스를 적당히 재배치시켜 흩어져 있는 작은 빈 공간들을 하나의 큰 빈 공간으로 만드는 방법
- 부작용
- 현재 실행되는 프로세스를 재배치하거나, 빈 공간을 모을 때 오버헤드가 발생

- 가상 메모리 기법 , 페이징
- 현대 운영체제가 선택하는 가장 대중적인 메모리 기법. 다음 장에
'Computer > CS' 카테고리의 다른 글
가상메모리 ③ - 쓰기 시 복사와 계층적 페이징 (1) | 2024.01.19 |
---|---|
가상메모리 ② 페이징, 페이징 테이블 엔트리 (유효,보호,참조,수정비트) (1) | 2024.01.18 |
교착 상태 해결 방법 - 예방,회피,검출 후 회복 (0) | 2024.01.17 |
교착 상태(Dead Lock) - Philosopher's Dining Problem, 교착 상태 발생 조건 4 가지 (0) | 2024.01.17 |
동기화 기법: 뮤텍스 락, 세마포, 모니터 (0) | 2024.01.16 |