주기억장치 할당 방법
1. 연속 할당 방법
- 단일분할 할당
- 오버레이
- 스와핑
- 메모리 분할 할당
2. 분산 할당 방법
- 페이징
- 세그멘테이션
메모리 오버레이 Memory Overlay
오버레이(Overlay)
프로그램의 메모리가 주기억장치보다 클 때, 하나의 프로그램을 여러 개의 조각으로 분할한 후 필요한 조각을 순서대로 주기억장치에 적재하여 프로그램을 실행. 주기억장치의 메모리가 부족하면 불필요한 조각이 있는 곳에 새로운 조각을 중첩하여 적재한다
스왑 Swap
스와핑(Swapping)
주기억장치에 적재한 하나의 프로그램과 보조기억장치에 적재한 다른 프로그램의 메모리를 교체함. 더 나아가 가상 메모리 페이징 기능으로 발전됨.
Swap Out: 주기억장치에 있는 프로그램 -> 보조기억장치로 이동
Swap In: 보조기억장치에 있는 프로그램 -> 주기억장치로 이동
메모리 분할 방식(가변 분할, 고정 분할)
가변 분할 할당
프로그램을 주기억장치에 적재할 때 필요한 크기로 영역을 분할하는 기법. 고정 분할 기법의 단편화를 줄일 수 있음.
장점) 주기억장치 효율 증가, 다중프로그래밍 정도 증가
고정 분할 할당 (정적 할당 기법)
주기억장치의 USER 영역을 여러 개의 고정 크기로 분할하여 사용하는 기법.
프로그램 전체가 주기억장치에 적재되고, 프로그램이 분할 영역보다 크면 분할 영역을 사용할 수 없어서 빈 공간으로 남은 전체 영역을 사용하는 외부 단편화가 발생한다. 반대로 분할 영역보다 크기가 작은 프로그램을 적재하였을 때 내부 단편화가 발생한다
장점) 초기에 다중프로그래밍을 위해 사용
단편화(Fragmentation)
할당하고 반납하는 과정에서 발생하는 사용하지 않는 작은 조각
내부 단편화: 분할 영역보다 적재한 크기가 작을 때 사용하지 않는 작은 조각
외부 단편화: 프로그램 크기가 분할 영역보다 커서 사용하지 않는 분할 영역
버디 시스템 Buddy System
버디 시스템
외부단편화를 해결하기 위한 방법으로, 버디는 버퍼가 나누어 질 때 각각의 공간을 가리킨다.
큰 버퍼들을 반복적으로 반으로 나우어 작은 버퍼들을 만들며, 가능할 때마다 인접한 자유로운 버퍼들을 합치는 과정을 반복한다.
외부단편화를 해결하는 방법
특히 외부단편화는 큰 크기의 페이지 프레임을 할당해 달라는 요청을 받았을 때, 자잘한 프레임만 많이 남아있어 큰 크기의 연속적인 프레임을 할당해줄 수 없는 문제를 말한다. 이 문제를 해결하기 위한 방법이 버디시스템이다.
1. 페이징 회로를 활용하여 불연속적인 여유 페이지 프레임의 그룹을 연속된 가상 주소 구간에 매핑한다.
2. 남아있는 연속된 여유 페이지 프레임 블록을 관리하는 적절한 기법을 개발하여, 작은 블록을 요청할 때 큰 여유 블록을 쪼개서 할당하는 경우를 가능한 한 줄인다.
'CS > 운영체제' 카테고리의 다른 글
[운영체제] 13. 가상 메모리 관리 (0) | 2022.08.20 |
---|---|
[운영체제 12] 가상메모리 (0) | 2022.08.18 |
[운영체제] 10. 프로세스 간 통신 (0) | 2022.08.15 |
[운영체제] 9. CPU 스케줄링 (0) | 2022.08.13 |
[운영체제] 8. 프로세스의 구조 (0) | 2022.08.13 |