Shared Page

: RO code들..(text, compiler,window system)
> Thread 들 공유 + RW data로 상호작용
>> 원래) 4frame * 3 =12 frame 필요
<> 공유) 4frame * 1 = 4frema
> 3배 절약
Page Table
수많은 process 들을 한번에Processer의 코어의 갯수만큼 실행하며
Context Swithching 을 통해 여러process들을 처리한다.
각 process들은 개별적인 메모리공간(virtual)을 가지며,
그 크기는 32bit CPU의 경우 4GB 이다.
또한 각각의 PageTable을 갖고있는데,
Context Switching시 OS는 CPU내의 MMU가 참조하는 PageTable을 현재 Process의 PageTable로 바꿔주기 때문.
>>>
따라서 Proecess_1의 0x1000 과 Process_2의 0x1000 은 숫자만 같을뿐 다르며
물리주소도 다르게 mapping 된다.
ex) 32bit CPU logical > 2^32 = 4gb
page size > 2^12 = 4kb
> 2^20 = 1M page (logical)
> Page Table)
> PTE (Entry size) = 각 page 당 freme number + 플래그(protection bit,,)
ex) 4byte..
>> PageTable size = 4MB
Hierachical PageTable

simple Two-level PageTable
// PT 에 PT가 또있음
Two-level PageTable

// ~= 전화번호부
ex) 1100 1010 1111 1110 1011 1010 1011 1110
> 10bit(outer) + 10bit(inner) + 12bit(offset,d)
>> outer 10bit -> inner 시작주소
> inner 10bit -> offset 시작주소
> + offset만큼
offset : 해당 페이지 내 실제 위치
ex) 12bit 로 표현시..
> 0000 0000 0000 ~ 1111 1111 1111 까지 다 표현될수 있어야하므로
> Page Size : 2^12 = 4KB
>> offset: 10bit -> PageSize = 1KB
<> 64bit CPU : many outer,inner >오히려 비효율 -> 일부로 48bit 정도로 줄임