연속 메모리 할당
프로세스에 연속적인 메모리 공간을 할당
스와핑
현재 사용되지 않는 프로세스들을 보조기억장치의 일부 영역으로 쫓아내고
그렇게 생긴 빈 공간에 새 프로세스 적재
실제 메모리 크기 보다 프로세스들이 요구하는 메모리 공간 크기 크더라도 가능
메모리 할당 방식
프로세스는 메모리의 빈 공간에 할당되어야 한다
빈 공간이 여러 개라면 세가지 방식을 통해 할당한다
- 최초 적합 (first-fit)
운영체제가 메모리 내의 빈 공간을 순서대로 검색하다 적재할 수 있는 공간을
발견하면 그 공간에 프로세스를 배치하는 방식
검색 최소화, 빠른 할당
- 최적 적합 (best-fit)
운영체제가 빈 공간을 모두 검색해본 뒤, 적재 가능한 가장 작은 공간에 할당
- 최악 적합 (worst-fit)
운영체제가 빈 공간을 모두 검색해본 뒤, 적재 가능한 가장 큰 공간에 할당
외부 단편화 (external fragmentation)
사실, 프로세스를 연속적으로 메모리에 할당하는 방식은
메모리를 효율적으로 사용하는 방법이 아니다
외부 단편화라는 문제가 발생하기 때문이다
프로세스들이 실행되고 종료되길 반복하며 메모리 사이사이에 빈 공간 발생
프로세스를 할당하기 어려울 만큼 작은 메모리 공간들로 인해
메모리가 낭비되는 현상
외부 단편화 해결
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 |