리눅스를 예로 하나의 프로세스당 4GB가 부여된다 하지만 통상 메모리는 8GB,16GB인데 많이 부족해보인다.
가상 메모리는 메모리 용량 부족 이슈, 프로세스 메모리 영역간에 침법이슈등 여러 프로세스를 동시에 실행하기 위해 필요하다. 만약 하나의 프로세스만 실행 가능한 시스템 (배치 처리 시스템)일 경우 필요 없다.
가상 메모리 : 메모리가 실제 메모리보다 많아 보이게 하는 기술
프로세스는 가상 주소를 사용하고, 실제 해당 주소에서 데이터를 읽고 쓸때만 물리 주소로 바꿔주는 아이디어.
MMU (Memory Management Unit)
cpu에서 코드 실행시, 가상 주소 메모리 접근이 필요할 때 해당 주소를 물리 주소로 변환해주는 하드웨어 장치

페이지를 비트로 구분해 단계를 나눈다.
page table에는 가상 주소와 물리 주소간 매핑 정보가 있다.
페이징 정보를 단계를 나누어 생성해 필요없는 페이지는 생성하지 않으며, 공간 절약이 가능하다.
TLB : 페이지 정보 캐쉬
MMU가 물리 주소를 확인하기 위해 메모리를 갔다와야 하는데 TLB를 이용해 최근 접근한 가상주소에 물리주소가 저장되어 있어 시간 절약이 가능하다.
프로세스 모든 데이터를 메모리에 적재하지 않고, 실행 중 필요한 시점에서만 메모리로 적재함, 선행 페이징의 반대 개념이다. 언제 필요한건지는 페이지 폴트에 의해 결정
선행 페이징 : 미리 프로세스 관련 모든 데이터를 메모리에 올려놓고 실행하는 개념
페이지 폴트
인터럽트 : 미리 정의되어 각각 번호와 실행코드를 가르키는 주소가 기록되어 있음
특정 페이지를 물리 메모리에 올려야 하는데 물리 메모리가 다 찼다면 기존 페이지 중 하나를 물리 메모리에서 자장 매체로 내리고 새로운 페이지를 해당 물리 메모리 공간에 올린다.
반복적으로 페이지 폴트가 발생해서, 과도하게 페이지 교체 작업이 일어나, 실제로는 아무일도 하지 못하는 현상