GrowMe

[운영체제] 메모리 관리 (5) : 다단계 Page Table 및 Paging 기타 본문

CS(Computer science)

[운영체제] 메모리 관리 (5) : 다단계 Page Table 및 Paging 기타

오늘도 타는중 2023. 1. 22. 14:41
메모리 관리 (4) : 다단계 Page Table 및 Paging 기타
# Multilevel Paging and Performance
# Valid (v) / Invalid (i) Bit
# Memory Protection
# Inverted Page Table
# Shared Page


✍️ 본 포스팅은 이화여자대학교 반효경 교수님의 "운영체제" 강의를 들으며 정리한 내용입니다.

 


이전 포스팅에서 프로세스의 불연속적 할당에서의 Pagin 처리에서 공부해 보았다. Page Table이란 것도 배워보았는데, 이 Page Table은 2단계로도 사용할 수가 있었다. 그런데, 2단계가 아닌 다단계 Page Table로도 사용이 가능하다고 한다. 다단계 Paging을 활용한 프로세스의 불연속적 할당과 또 다른 다양한 Paging 및 Page Table에 대해 알아보자.


* Multilevel Paging and Performance

  • 주소 공간이 더욱 커지면 다단계 페이지 테이블이 필요하다.
  • 각 단계의 페이지 테이블이 메모리에 존재하므로 logicall address의 physical address 변환에
    더 많은 메모리 접근이 필요해진다.
  • TLB를 통해 메모리 접근 시간을 줄일 수 있다.
  • 4단계 페이지 테이블을 사용하는 경우
    • 메모리 접근 시간이 100ns(4단계이므로 TLB 안쓰면 총 500ns 소요됨), TLB 접근 시간이 20ns이고
    • TLB hit ratio(TLB를 통해 직접 주소 변환되는 비율)가 98%인 경우
      4단계
      effective memory access time = 0.98 * 120(TLB로 주소변환 20ns + 실제 데이터 접근 1회 100) + 0.02 * 520(주소 변환 100 * 4 + TLB 없는 것 확인 20 + 실제 데이터 접근 1회 100) = 128ns
    • 결과적으로 주소 변환을 위해 28ns만 소요된다. (생각보다 오버헤드가 되지는 않는 것을 알 수 있다.)

* 페이지 테이블 에서의 Valid (v) / Invalid (i) Bit

  • 페이지 테이블에는 좌측 logical memory의 인덱스 순서에 따라 frame number가 존재한다.
  • 또한 우측 physical memory에는 페이지 테이블의 frame number에 따른 인덱스에 실제 페이지가 올라가 있다.
  • physical memory를 살펴보면 각 frame number에 실제 페이지가 올라가 있는 것도 있고 아닌 것도 있다.
  • 페이지 테이블의 valid - invalid bit은 바로 이처럼 physical memory에 해당 페이지가 올라가 있는지를 알려준다.
  • v이면 실제 올라가 있는 것이고, i이면 해당 frame number가 비어있다는 의미이다.
  • 비어있는 경우는 (1)이 프로세스가 그 주소 부분을 사용하지 않거나
    (2)해당 페이지가 physical memory에 올라가 있지 않고, swap area(backing store)에 존재함을 의미한다.

* Memory Protection

페이지 테이블의 각 entry는 각각 아래의 bit를 둔다.

- Protection bit

  • page에 대한 접근 권한을 의미한다. (read / write / read-only)

- Valid - invalid bit

  • 바로 위에서 자세히 설명하였으므로 넘어가도록 하겠다.

*Inverted Page Table

- 페이지 테이블이 매우 큰 이유

  • 모든 프로세스마다 그 logical 주소에 대응하는 모든 page에 대해 페이지 테이블 엔트리가 존재한다.
  • 대응하는 page가 메모리에 있든 없든 간에 페이지 테이블에는 entry로 존재하게 된다.

- Inverted page table (역방향 페이지 테이블)

  • logical memory가 아니라, physical memory에 존재하는
    Page frame 하나 당 페이지 테이블에 하나의 entry를 두는 것 (system-wide)
    -> 실제 존재하는 것만 memory에 두기 때문에 기존보다 메모리적으로 효율적이다!
  • 각 페이지 테이블 엔트리는 각각의 physical memory의 page frame이 담고 있는 내용을 표시한다.
    (process-id, process의 logical address)
  • 단점 : 테이블 전체를 탐색해야 주소변환이 가능하다.
  • 대안 : associative register를 사용한다. -> 병렬적으로 동시에 검색 (비용이 비쌈)

*Shared Page

- Shared code

각 프로세스마다 겹치는(중복된) 코드들은 하나의 physical 공간을 사용하도록 함.

  • Re-entrant Code (=Pure code) : 재 진입 가능 코드
  • read-only로 하여 프로세스 간에 하나의 code만 메모리에 올린다.
    (ex : text editors, compilers, window systems)
  • shared code는 모든 프로세스의 logical 주소 공간에서 동일한 위치에 있어야 한다.
  • 위 그림을 보면 ed1, ed2, ed3이 shared Page에 해당한다.

- Private code and data

  • 각 프로세스들은 독자적으로 메모리에 올린다.
  • Private data는 logical 주소 공간의 아무 곳에 와도 무방하다.
  • 위 그림을 보면 data1, data2, data3에 해당한다.
    우측 physical memory를 보면 모두 다른 공간을 차지하고 있다.
Comments