Paging의 문제점과 그 해결법, 그리고 기타 메모리 관련된 것, Segmentation 기법을 배우는 페이지이다.
* Q1. Memory Access 수, 시간
- Page-table은 Main memory에 저장된다.
- Page-table에 관려된 2가지 상태를 register에서 가져온다.
1) Page table base register(PTBR) : Page table 시작지점
2) Page table length register(PTLR) : Page table 길이
- Data를 가져오거나 특정 메모리를 지칭하기 위해서는 2단계가 필요하다.
1) Page table에 접근하여 Physical Address를 계산하는 경우
2) Main Memory를 지칭하거나 데이터를 가져오는 경우
- "Translation look-aside buffer"(TLBs)를 하드웨어 기능에 포함시킨다.
> Cache 개념으로 자주사용되거나 최근 사용된 Page와 Frame 번호를 기억해둔다.
> 이에 따라 Page table로 Memory Access하는 횟수를 줄였다.
> TLB가 적용된 memory access 그림 (Execute process를 P1이라고 가정)
ⓐ TLB에서 해당 Page의 Frame을 찾아본다.
ⓑ-1. TLB에 존재한다면, Frame번호를 가져온다.
ⓑ-2. TLB에 존재하지 않는다면, Page Table에 접근하여 Frame 번호를 가져온다.
ⓒ Frame번호와 offset 주소를 이용하여 physical address를 산출. 접근을 실시한다.
> ⓐ => ⓑ-1 => ⓒ : TLB access time + Data access time
> ⓐ => ⓑ-2 => ⓒ : TLB access time + 2*Data access time
> Effective Access Time(기대 접근 시간) = (TLB access time + memory access time)A
+ (TLB access time + 2 * memory access time)(1-A)
※ A = TLB에서 Frame 번호를 찾을 확률
* Memory Protection
- Process가 접근하는 Memory 영역을 통제
- Page table에 Valid / inValid bit을 두워서 관리
- Memory 접근에 대한 조건이 늘어날 수록 bit수를 증가시키면된다.
* Page의 장점
1) External Fragment가 없다.
2) Shared Page : memory관리가 쉽다. memory 효율을 증가시킬 수 있다.
> 여러 사용자가 사용하는 process를 관리
> Thread의 Shared Memory관리
* Q2. Memory size
- Logical Address가 커질수록 page Table의 크기가 커진다. 이는 접근 속도와 Page의 수에 영향을 준다.
- 해결책
1) Hierarchical Page Table
- Logical Address를 여러개의 Page Table로 표현
- Page Table의 Page Number길이를 줄여서 Memory size를 절감
- Level 마다 memory access가 필요하다. level이 늘어날 수록 access 시간이 증가한다.
eg. two level : P1 table, P2 table, memory access / 3번의 접근 필요
2) Hashed Page Table
- Hash function을 사용해서 동일한 Hash 값이 나오면 chain을 달아서 접근
- Hash function에 구분되는 값 이외의 것만을 저장하면 되기 때문에 memory size를 절감 가능
ⓐ Page Number를 hash function을 이용하여 Hash key값을 찾아낸다.
ⓑ Hash key에 연결된 리스트를 따라가며 Page를 찾는다.(Frame 번호를 결정한다)
ⓒ 찾은 Frame번호와 Offset값을 통해 memory에 Access 한다.
3) Inverted Page Table
- Frame 마다 Page 번호와 PID(프로세스 번호)를 같이 저장한다.
- Page table에 PID와 Page 번호만 알면 memory에 access가 가능하다.
- Frame 번호대신 PID를 저장하므로서 Table Size를 줄였다.
- Frame마다 PID를 하나만 갖기 때문에 shared가 불가능하다.(여러개의 PiD를 저장하게 설계가능/But. 복잡)
* Segmentation
- Page와 비슷한 형식이지만, Program을 일방적으로 나누는 것이 아닌, 의미 단위로 나누는 것
- Segment마다 크기가 다르다.
- Page table과 같은 Segment와 Memory를 Mapping시켜주는 Segment table이 존재한다.
- Mapping Table : (Segment No, Segment start Address, Segment Length)
> Segment No : Segment마다 부여된 숫자
- External fragment가 해결되지 않는다.
- Memory 관리 측면에서 정리가 잘된다.