시스템의 프로세스는 CPU와 메인 메모리를 다른 프로세스들과 공유함
그런데 프로세스가 많아지면 메모리를 너무 많이 필요로 할테고, 그게 메모리가 수용 가능한 양을 넘어가게 되면 문제가 됨
가상 메모리 Virtual Memory
- 메모리를 보다 효율적이고 더 적은 에러를 갖도록 관리하기 위해 제공하는 메인 메모리의 추상화
- 각 프로세스에 하나의 크고 통합된, 사적 주소 공간을 제공
가상 메모리가 제공하는 세 개의 중요한 기능 —— 3, 4, 5와 연결
(1) 메인 메모리(DRAM)를 디스크에 저장된 주소공간에 대한 캐시로 취급해 메인 메모리 내 활성화 영역만 유지하고, 데이터를 디스크와 메모리 간 필요에 따라 전송하는 방법으로 메인 메모리를 효율적으로 사용
(2) 각 프로세스에 통일된 주소공간(same uniform linear address space)을 제공함으로써 메모리 관리를 단순화
- OS가 프로그램을 시작할 때마다 stack은 항상 똑같은 주소에서 시작하고, … 등등
(3) 각 프로세스의 주소공간을 다른 프로세스에 의한 손상으로부터 보호
- 프로그램은 접근이 정해져 있는 메모리 영역에만 접근할 수 있게 됨
가상 메모리가 중요한 이유
- 하드웨어 예외, 어셈블러, 링커, 로더, 공유 객체, 파일, 프로세스를 설계하는 데 중요한 역할을 수행함
- application에 메모리 블록을 생성하고 없애고, 메모리 블록을 디스크 파일의 부분으로 매핑하고, 메모리를 다른 프로세스들과 공유할 수 있게 함
- 응용프로그램이 변수를 참조하고, 포인터를 역참조하고, malloc 같은 동적 할당 패키지로 호출할 때마다 가상메모리와 상호작용함 (Segfault, Protection fault 를 피하는 데 도움이 됨)
1. 물리 및 가상주소 방식
(1) 물리주소방식
물리주소(Physical Address) : DRAM에 있는 메모리 주소