CS/운영체제
가상 메모리(Virtual Memory)
나디아 Nadia
2025. 6. 1. 16:24
가상 메모리 (Virtual Memory)
- 개요
- 만약 운영체제나 프로세스가 4GB 메모리에서 동작하도록 만들어졌다면 이보다 작은 메모리의 컴퓨터에서는 실행되지 않음
→ 가상 메모리가 이런 문제를 해결함 - 가상 메모리의 크기는 이론적으로는 무한대이지만, 실제로는 물리 메모리의 크기와 CPU의 비트 수로 결정됨
- ex) 32비트 CPU인 경우 표현할 수 있는 주소값
→ 가상 메모리 크기: 4GB (2의 32승)
- ex) 32비트 CPU인 경우 표현할 수 있는 주소값
- 만약 운영체제나 프로세스가 4GB 메모리에서 동작하도록 만들어졌다면 이보다 작은 메모리의 컴퓨터에서는 실행되지 않음
부족한 물리 메모리를 가상 메모리로 해결하는 방식
여러 프로세스를 실행하려는 경우
- 32비트 CPU의 경우 최대 메모리 크기가 4GB인데, 4GB를 차지하는 프로세스 5개와 운영체제를 실행시키려면
→ 운영체제를 제외하고도 적어도 20GB가 필요함
- 이럴 때 가상 메모리 시스템은
- 물리 메모리 내용의 일부를 하드디스크에 있는 스왑 영역으로 옮기고,
- 처리가 필요할 때 물리 메모리로 가져와 실행시킴
⇒ 운영체제와 프로세스 5개를 실행시킬 수 있음
- 물리 메모리 내용의 일부를 하드디스크에 있는 스왑 영역으로 옮기고,
- 이럴 때 가상 메모리 시스템은
동적 주소 변환 (Dynamic Address Translation, DAT)
: 메모리 관리자는 물리 메모리와 스왑 영역을 합쳐서 프로세스가 사용하는 가상 주소를 물리 주소로 변환함
- 동적 주소 변환을 거치면, 프로세스는 마음대로 사용자 데이터를 물리 메모리에 배치할 수 있음
가상 메모리 할당 방식
- 가상 메모리 시스템에서는 운영체제 영역을 제외한 나머지 영역을 일정한 크기로 나눠서 프로세스에게 할당함
- 할당 방식은 메모리처럼 가변 분할 방식과 고정 분할 방식으로 나뉨
- 고정 분할 방식 (Fixed Partitioning)
- 단순 고정 분할: 메모리를 몇 개의 고정 크기 구역으로 나눠서 할당
- 동적 고정 분할: 프로세스 크기에 따라 미리 정해진 고정 크기 파티션 중 적당한 곳에 할당
- 가변 분할 방식 (Variable Partitioning)
- 세그멘테이션 (Segmentation): 논리적인 단위(코드, 데이터, 스택 등)로 나눠서 할당
- 페이징 (Paging): 메모리를 같은 크기의 페이지 단위로 나눠서 할당
- 고정 분할 방식 (Fixed Partitioning)
가상 주소와 물리 주소의 매핑
- 프로세스는 메모리에 직접 접근하지 않음
→ 메모리 관리자에게 요청하면 메모리 관리자는 그 요청에 맞는 물리 메모리 위치를 찾아서 연결해줌 - 이때 프로세스가 사용하는 주소는 가상 주소임
- 가상 메모리 시스템에서 가상 주소에 해당하는 데이터는 메모리나 하드디스크의 스왑 영역에 위치함
- 메모리 관리자는 페이지 테이블이라는 표를 만들어서 가상 주소와 물리 주소를 1대1 매핑 테이블로 관리함
- CPU가 가상 주소로 명령을 실행하려고 하면
→ 페이지 테이블을 참고해서 실제 물리 주소를 찾아줌
→ 만약 메모리에 없고 디스크에 있으면, 디스크에서 메모리로 불러옴 (⇒ 페이지 폴트)
- CPU가 가상 주소로 명령을 실행하려고 하면