메모리 관리는 프로세스의 물리 주소 공간이 연속적이어야 한다고 생각했다.
많은 이점을 제공하기 때문에
대형 서버용 시스템에서부터 모바일 장치용 시스템까지 대부분의 운영체제에서 다향한 형태의 페이징이 사용된다.
++페이징은 운영체제와 컴퓨터 하드웨어 간의 협력을 통해 구현된다.
• Physical address space of a process can be noncontiguous;
process is allocated physical memory whenever the latter is available
1. Avoids external fragmentation
2. Avoids problem of varying sized memory chunks
• Divide physical memory into fixed-sized blocks called frames
Size is power of 2, between 512 bytes and 16 Mbytes
• Divide logical memory into blocks of same size called pages
• Keep track of all free frames
• To run a program of size N pages, need to find N free frames and load program
• Set up a page table to translate logical to physical addresses
• Backing store likewise split into pages
• Still have Internal fragmentation
프로세스가 실행될 때 그 프로세스의 페이지는 파일 시스템 또는 예비 저장장치로부터 가용한 메인 메모리 프레임으로 적재된다.
예비 저장장치는 메모리 프레임 혹은 프레임의 묶음인 클러스터와 동일한 크기의 고정 크기 블록으로 나누어진다.
예를 들자면
논리 주소 공간은 물리 주소 공간으로부터 완전히 분리되었기 때문에 물리 메모리의 크기가 2^64바이트보다 적게 장착된 시스템에서도 프로세스는 64비트로 이루어진 논리 주소 공간을 사용할 수 있다.
**CPU에서 나오는 모든 주소는 페이지 번호와 페이지 오프셋 부분으로 나누어진다.
Address generated by CPU is divided into:
• Page number (p) – used as an index into a page table which contains base address of each page in physical memory
• Page offset (d) – combined with base address to define the physical memory address that is sent to the memory unit

더 알아보자
그니까 페이징 자체는 일종의 동적 재배치다.
모든 논리 주소는 페이징 하드웨어에 의해 실제 주소로 바인딩된다.
페이징을 사용하는 것은 각 메모리 프레임마다 하나씩 기준 레지스터를 테이블로 유지하는 것과 유사하다.
**페이지 메모리 시스템에서 물리 메모리의 크기는 프로세스의 최대 논리적인 크기와는 다르다는 것을 알고있자.

다시 보고 생각해보자