[Computer Architecture] 가상 메모리 (Virtual Memory)
💾 가상 메모리
가상 메모리는 물리 메모리 한계를 극복하는 메모리 관리 기법이다. 프로세스가 실제 물리 메모리 크기보다 큰 메모리 공간을 사용할 수 있도록 해주는 추상화 계층이다.
가상 메모리를 사용하면 물리 메모리보다 큰 프로그램을 실행할 수 있고, 프로세스 간 메모리를 보호할 수 있으며, 메모리를 효율적으로 공유할 수 있다.
🖥️ 운영체제별 가상 메모리 관리 방식
🪟 Windows
Windows는 Virtual Memory Manager(VMM)를 통해 가상 메모리를 관리한다.
- 기본적으로 페이징 방식을 사용하며, 메모리는 고정 크기의 페이지 단위로 나누어 관리한다.
- 메모리 예약과 커밋을 분리하여 메모리를 효율적으로 할당할 수 있다.
- 가상 메모리의 일부는 페이지 파일(pagefile.sys)에 저장되며, 물리 메모리가 부족할 때 디스크 공간을 활용하여 메모리 부족 문제를 해결한다.
- 각 페이지별로 읽기, 쓰기, 실행 권한을 설정해 메모리 보호 기능을 제공한다.
🐧 Linux
Linux도 페이징 기반 가상 메모리 관리를 사용한다.
- 프로세스별 가상 주소 공간과 물리 주소 공간은 페이지 테이블을 통해 매핑된다.
- Linux는 요구 페이징과 스왑 공간을 활용해 메모리가 부족할 때 사용하지 않는 페이지를 디스크로 옮긴다.
- 프로세스의 메모리 영역은 /proc/[pid]/maps 파일에서 확인 가능하며, 공유 메모리와 메모리 매핑 파일을 이용해 메모리를 효율적으로 사용한다.
🍎 macOS
macOS는 Mach 커널을 기반으로 가상 메모리를 관리한다.
- 페이징과 세그멘테이션 방식을 혼합하여 사용한다.
- vmmap 명령어로 프로세스의 메모리 구조와 사용량을 확인할 수 있다.
- 메모리 압축 기능이 있어 물리 메모리 사용을 줄이고 효율성을 높인다.
Leave a comment