공간을 동일크기의 조각으로 분할하는 방법
(세그멘테이션 - 가변크기 분할)
고정크기의 단위를 page라고 함
페이징에선 물리 메모리도 page frame이라는 고정 크기 슬롯의 배열로 생각함
프로세스의 주소공간 사용방식과 무관하게 주소공간을 지원 가능
-> Segmentation 방식에선 프로세스가 메모리를 사용하는 방식(힙, 스택)등을 고려해서 공간을 할당해야 했음
-> 가상주소에 빈공간이 많은 경우도 효율적으로 지원
비어있는 물리 메모리 페이지의 빈 공간 리스트를 유지하고,
빈 공간 리스트의 첫 페이지부터 순서대로 필요한 갯수만큼 선택만 하면됨
(ex : 63바이트의 프로세스 주소공간, 페이지 크기 16바이트
-> 빈공간리스트 앞에서 부터 4개 선택)
페이지 테이블 접근으로 인한 시스템 성능 저하
페이지 테이블 저장으로 인한 메모리 낭비의 가능성이 존재
운영체제는 가상 페이지들의 물리 메모리 위치 기록을 위해
프로세스마다 페이지 테이블이라는 자료구조를 유지
vpn과 offset으로 구성,
해당 프로세스의 몇번째 페이지인지 나타내는 VPN을 PFN(physical frame number, 페이지의 실제 물리적인 순서를 나타냄 = PPN, physical page number)로 바꿔서 offset(페이지 내에서 원하는 메모리의 위치)에 해당하는 메모리값을 참조한다.
해당 프로세스의 몇번째 페이지인지 나타내는 값,
프로세스의 가상주소의 최상위 비트를 필요한 만큼 사용
물리 주소로의 변환 정보를 비롯한 필요한 정보들을 PTE(page table entry)라고 함
페이지 테이블은 물리메모리에 상주하거나 운영체제 가상메모리에 저장할 수 있고, 디스크에 스왑될 수도 있다.
페이지 테이블은 가상주소를 물리주소로 매핑하는데 사용되는 자료구조
임의의 자료구조도 사용가능, 가장 간단한 형태는 선형 페이지 테이블(linear page table)
-> 가상페이지 번호 VPN으로 배열의 항목에 접근
Valid bit
특정 변환의 유효 여부를 나타냄, 할당되지 않은 주소공간을 표현하기 위해 반드시 필요
ex : 힙과 스택사이의 미사용공간은 무효(invalid)로 표시됨
Protection bit
페이지가 read, write, execute가 가능한지 표시
protection bit가 허용하지 않는 방식으로 페이지에 접근 시 운영체제에 트랩을 발생
Present bit
이 페이지가 물리메모리에 있는지 디스크에 있는지(= 스왑 아웃 됬는지) 표시
Dirty bit
메모리 반입된 후 페이지가 변경되었는지 표시
Reference bit ( = Accessed bit)
페이지가 접근되었는지 추적
어떤 페이지가 인기있는지 결정, 메모리가 유지되어야 하는 페이지를 결정하는데에도 유용,
-> 페이지 교체에 매우 중요