프로그래밍[Univ]/운영체제

[OS] Main Memory Part 2

Cloud Travel 2012. 6. 3. 11:20

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 관리 측면에서 정리가 잘된다.