You Are Here : Home » , , » Virtual Memory 6: Address Translation

Virtual Memory 6: Address Translation

Address translation là cách mà hệ điều hành dịch từ địa chỉ virtual address sang địa chỉ physical address để truy cập đến vùng nhớ thực sự nằm trên RAM

Tình huống:
Hệ điều hành 32 bit quản lý 256 MB RAM và 4kB pages.

Khi đó chúng ta vẫn có 1 entry của Virtual Memory có độ dài 32 bit. Tức là mỗi process sẽ có thể  truy cập tới 4GB bộ nhớ ảo.

Nhưng vì chỉ có 256 MB RAM trên thực tế nên chỉ cẩn 28 bit để quản lý physical address. Vậy làm thế nào để convert từ virtual memory (32 bit) sang Physical Memory (28 bit).

Đó là công việc của Page Table (như đã đề cập ở phần 5)

Mỗi PTE (Page Table Entry) trỏ tới một vùng nhớ rộng 4kB, vậy là cần 12 bit để quản lý 1 page. 12 bit này không cần translate mà sẽ được copy y nguyên từ virtual memory sang physical memory. Người ta gọi là "offset" trong 1 page.


Vậy là còn 20 bit đầu của Virtual memory (32 -12) phải covert sang 16 bit Physical Memory (28 - 12)

Tóm lại
Một địa chỉ được chia làm 2 phần: Page Number + Page offset
Page Number chỉ cho chúng ta đến địa chỉ của Page
Page offset cho chúng ta biết địa chỉ ô nhớ trong 1 Page



Khi nói đến mapping thì 1 page trên virtual memory sẽ được map với 1 page trên physical memory, nên địa chỉ offset không thay đổi. Chúng ta chỉ cần chuyển hóa từ địa chỉ virtual memory page sang thành physical memory page mà thôi.

Có một câu hỏi dành cho các bạn
Tại sao chúng ta lại cần nhiều bit để thể hiện virtual address hơn so với physical address?

  • Tại vì page offset của virtual address và page offset của physical address là khác nhau
  • Dung lượng của Virtual memory lớn hơn physical memory
  • Page table không thể map từ số lượng bit nhỏ sang số lượng bit lớn hơn

Không có nhận xét nào:

Leave a Reply

Welcome to SpicyTweaks.

Copyright © Embedded System Study. Designed by Momizat Team. Powered to Blogger by SpicyTweaks.

Scroll to top