연속 메모리 할당
프로세스에 연속적인 메모리 공간을 할당
스와핑
현재 사용되지 않는 프로세스들을 보조기억장치의 일부 영역으로 쫓아내고
그렇게 생긴 빈 공간에 새 프로세스 적재
실제 메모리 크기 보다 프로세스들이 요구하는 메모리 공간 크기 크더라도 가능
메모리 할당 방식
프로세스는 메모리의 빈 공간에 할당되어야 한다
빈 공간이 여러 개라면 세가지 방식을 통해 할당한다
- 최초 적합 (first-fit)
운영체제가 메모리 내의 빈 공간을 순서대로 검색하다
적재할 수 있는 공간을 발견하면
그 공간에 프로세스를 배치하는 방식
장점) 검색 최소화, 빠른 할당
- 최적 적합 (best-fit)
운영체제가 빈 공간을 모두 검색해본 뒤,
적재 가능한 가장 작은 공간에 할당
- 최악 적합 (worst-fit)
운영체제가 빈 공간을 모두 검색해본 뒤, 적재 가능한 가장 큰 공간에 할당
외부 단편화 (external fragmentation)
사실, 프로세스를 연속적으로 메모리에 할당하는 방식은
메모리를 효율적으로 사용하는 방법이 아니다
외부 단편화라는 문제가 발생하기 때문이다
프로세스들이 실행되고 종료되길 반복하며 메모리 사이사이에 빈 공간 발생
프로세스를 할당하기 어려울 만큼 작은 메모리 공간들로 인해
메모리가 낭비되는 현상
외부 단편화 vs. 내부 단편화
외부 단편화는
연속 메모리 할당 방식으로 인해
프로세스들이 흩어져서 다른 프로세스가 실행되지 못해 메모리가 낭비되는 것을 의미한다
내부 단편화는
(다음 장에 나오는) 페이징 방식으로 인해
마지막 페이지에 남은 공간이 생겨 메모리가 낭비되는 것을 의미한다
외부 단편화 해결
1. 메모리 압축 (compaction)
여기저기 흩어져 있는 빈 공간들을 하나로 모으는 방식
프로세스를 적당히 재배치시켜 흩어져 있는 작은 빈 공간들을
하나의 큰 빈 공간으로 만드는 방법
단점: 프로세스를 합치고 재배치하는 과정에서 많은 오버헤드를 야기하고
프로세스들은 본인의 일을 제대로 수행하지 못 함
또한, 어떤 상황에서 프로세스와 빈공간을 배치해야 하는지 최소한의 오버헤드를
발생시키는지 명확하게 특정짓기 힘듦
따라서, 운영체제가 가장 보편적인 방식으로 쓰는 2번 방법이 있다
2. 가상 메모리 기법, 페이징
'CS > [혼자 공부하는] 운영체제' 카테고리의 다른 글
6-3] 가상 메모리: 쓰기 시 복사와 계층적 페이징 (0) | 2023.06.09 |
---|---|
6-2] 가상 메모리: 페이징을 통한 가상 메모리 관리 (0) | 2023.06.09 |
5-2] 교착상태: 교착 상태 해결 방법 (0) | 2023.06.08 |
5-1] 교착상태: 교착 상태란 (0) | 2023.06.07 |
4-2] 프로세스 동기화: 동기화 기법 (0) | 2023.06.07 |