[OS] - Paging-Linear-Translate

오동훈·2021년 5월 7일
0

Operating System

목록 보기
9/16

1. Paging 👨‍🏫

  1. Process의 Virtual Address space를 이정한 크기 page로 쪼갠다.
  2. 그리고 Physical Memory를 page와 같은 크기로 즉, frame으로 쪼갠다.
  3. 각각의 page를 Physical Frame으로 Mapping 한다.

2. Address Translation 🤷‍♂️

  • VPN - Virtual Page number
  • PFN - Page Frame Number

Virtual Address = VPN + offset
Physical Address = PFN + offset

2.1 example 1

교재의 Paging 단원에서 paging-linear-translate.py 프로그램을 이용했습니다.

exam 1. -P 8 -a 32 -p 1024 -v -s 1 조건이 다음과 같을 때 메모리 매핑되는 과정을 설명해라.

  • Virtual Address: 5bits
  • Physical Address: 10bits
  • Page size: 3bits
  • Offset: 3bits
  • VPN (Virtual Address - Offset): 2bits

일단 VA 0x0000000e (decimal: 14)를 2진수로 변환해보면 01110 입니다.
여기서 오른쪽 3bits는 offset, 나머지 왼쪽 2bits는 VPN으로 구성되어 있습니다.
VPN = 01이기 때문에 1번 페이지를 찾아가게 되면 0x80000061라는 수가 있습니다.
Physical Address = PFN + offset이라는 점을 이용해, 기존에 Physical Address는
총 10bits이고 offset은 3bits로 구성이 되어 있으므로 자연스럽게 PFN은 7bits로 구성되어야 합니다.
따라서 PFN = 110 0001이고, offset과 합쳐주면 11 0000 1110 (=30e) 와 같습니다.
따라서 0000030e (decimal 782)로 매핑 되게 됩니다!

그 외에 4개의 Virtual Address는 각각 VPN이 10, 11, 00, 00인데 모두 페이지 테이블이 유효하지 않기 때문에 Invalid라는 결과가 나오게 됩니다.

profile
삽질의 기록들🐥

0개의 댓글