티스토리 뷰
[OS] 가상기억장치 (Virtual Memory) 개념과 구현 방법 (페이징 / 세그멘테이션)
틔틔 2022. 9. 6. 22:52가상기억장치 (Virtual Memory)
: 주기억장치의 용량이 부족해 보조기억장치의 일부를 주기억장치처럼 사용함
프로그램을 작은 블록 단위로 나누어 가상(보조)기억장치에 보관 후,
프로그램 실행 시 요구되는 블록만 주기억장치에 불연속적으로 할당함
연속 할당 방식에서 발생하는 단편화 해결
기억장치의 활용도, 다중 프로그래밍 효율을 높임
단편화 (Fragmentation)
고정(정적) 분할 기억장치는 주기억장치 사용자 영역을 여러 개의 고정된 크기로 분할하여 관리함
내부 단편화 (Internal Fragmentation)
하나의 분할 영역에 작업을 할당하고 남은 공간
ex) 100MB 메모리에 70MB의 프로세스를 로드하면 20MB의 내부 단편화 발생
외부 단편화(External Fragmentation)
해당 요구를 만족시킬 전체 기억 공간은 남아있지만 공간이 연속되어 있지 않을 때 발생
ex) 50MB의 메모리 공간이 불연속적으로 두 개가 남아있다면 70MB의 프로세스를 할당할 수 없음
가상기억장치 구현 방법
1. 페이징 기법
: 프로그램을 페이지로 분할, 주기억장치 영역을 페이지와 동일한 크기로 나눈 페이지 프레임에 로드하여 실행
- 최적 적합 배치 기법이 필요 없음
- 내부 단편화 발생 가능
- 주소 변환을 위해 페이지의 주소 정보를 가지는 페이지 맵 테이블 필요
- 비용 증가, 속도 감소 (페이지 맵 테이블 사용)
- 페이지는 프로그램에 상응하는 논리적 의미를 갖지 못하므로 공유, 보호를 지원하기 어려움
2. 세그멘테이션 기법
: 프로그램을 가변적인 크기의 세그멘트로 나눈 후 주기억장치에 로드하여 실행
- 세그먼트는 각자 고유한 이름과 크기를 가짐
- 최적 적합 배치 기업 필요함
- 외부 단편화 발생 가능
- 주소 변환을 위해 세그멘트의 주소 정보를 가지는 세그멘트 맵 테이블 필요
- 프로그램을 세그멘트(서브루틴)로 나누는 일은 프로그래머가 함
- 세그멘트 크기가 가변적이기 때문에 세그먼트 영역이 다른 세그먼트 영역을 침범하지 않기 위해 하드웨어 관리가 필요함
'Computer Science > Operating System' 카테고리의 다른 글
[OS] Paging 교체 방법 / 페이지 테이블 오버헤드 / 쓰레싱 (Thrashing) (0) | 2022.09.08 |
---|