2016-10-27 42 views
5

Bảng trang sau dành cho hệ thống có địa chỉ ảo và vật lý 16 bit và với trang 4.096 byte. Bit tham chiếu được đặt thành 1 khi trang được tham chiếu. Định kỳ, một chuỗi sẽ xuất hiện tất cả các giá trị của bit tham chiếu. Tất cả các số được cung cấp theo dạng thập phân. enter image description heredịch địa chỉ ảo sang địa chỉ thực

Tôi muốn chuyển đổi các địa chỉ ảo sau (dưới dạng thập lục phân) thành địa chỉ thực tương đương. Ngoài ra tôi muốn đặt bit tham chiếu cho mục nhập thích hợp trong bảng trang.

0xE12C

0x3A9D

0xA9D9

0x7001

0xACA1

tôi biết câu trả lời là nhưng tôi muốn biết làm thế nào tôi có thể đạt được những câu trả lời :

0xE12C → 0x312C 
0x3A9D → 0xAA9D 
0xA9D9 → 0x59D9 
0x7001 → 0xF001 
0xACA1 → 0x5CA1 

Tôi đã tìm và thử This nhưng không giúp được gì nhiều.

Trả lời

4

Người ta cho rằng địa chỉ ảo là 16 bit dài.
Do đó, có 2^16 địa chỉ trong không gian địa chỉ ảo.
Kích thước trang được gán là 4 KB (có địa chỉ 4K (4 * (2^10)) trong một trang), do đó số trang sẽ là (2^16)/(2^12) = 2^4.
Để giải quyết mỗi trang 4 bit được yêu cầu.
4 bit quan trọng nhất trong địa chỉ ảo sẽ biểu thị số trang được giới thiệu và 12 bit còn lại sẽ là bù đắp trang.

Một điều cần nhớ là kích thước trang (trong không gian địa chỉ ảo) luôn giống với kích thước khung hình trong bộ nhớ chính. Do đó 12 bit cuối cùng sẽ vẫn giữ nguyên trong địa chỉ vật lý giống như địa chỉ ảo.

Để lấy địa chỉ khung trong bộ nhớ chính, chỉ cần sử dụng 4 bit đầu tiên.
Ví dụ: Xem xét địa chỉ ảo 0xACA1
Tại đây A in A CA1 biểu thị số trang (10) và khung tương ứng không là 5 (0101) do đó địa chỉ vật lý sẽ là → 0x5CA1.

7

Để dịch một ảo địa chỉ để một vật lý địa chỉ , chúng ta cần phải biết điều:

  • kích thước bộ nhớ vật lý (Ví dụ này nó không phải là quan trọng .. nhìn [1]
  • Kích thước trang
  • Số bit cho địa chỉ ảo

Trong ví dụ này: 16-bit hệ thống, 4KB kích thước trangkích thước bộ nhớ vật lý64KB.

Trước hết, chúng tôi cần xác định số bit cần thiết để hoạt động như bù đắp bên trong trang.
log2(Page-Size) = log2(4096) = bit cho bù đắp

Trong số 16 bit cho địa chỉ ảo, 12 được cho bù đắp, có nghĩa là mỗi quá trình có 2^4 = 16 trang ảo. Mỗi mục trong bảng trang lưu trữ khung tương ứng có sức chứa trang. Ví dụ:

enter image description here

Bây giờ cho phép dịch!

Trước hết, để dễ dàng làm việc, hãy chuyển đổi 0xE12C thành binary.

0xE12C = (1110 0001 0010 1100) in base 2 
1110 = 14 in decimal 
Entry 14 in P.T => Page frame 3. 

Cho phép nối nó vào 12 bù đắp bit

Answer: (0011 0001 0010 1100) = 0x312C 

Một ví dụ khác: 0x3A9D

0x3A9D = 0011 1010 1001 1101 
0011 = 3 
PageTable[3] = 10 
10 in decimal = 1010 in binary 
1010 1010 1001 1101 in binary = 0xAA9D 

[1] Phải chăng trang mục bảng chứa thêm thông tin, chúng ta sẽ cần phải biết số bit cần thiết để tham chiếu từng khung hình. Trong trường hợp của chúng tôi, nó là log2(64KB/4KB) = log2(16) = 4 bit. đó là, nếu mục bảng trang chứa 6 bit, chúng tôi biết rằng chỉ có 4 trong số đó là số khung và phần còn lại là dành cho cờ.

Ví dụ:

| page | page frame | 
|-------------------| 
| 5 | 100101 | 

Page 5 is mapped to frame number 1001 = frame number 9. 
1

Để giúp bạn giải quyết câu hỏi này, chúng ta cần phải nhận được thông tin chi tiết của chúng tôi ngay:

  1. 16 bit không gian địa chỉ ảo = 2^16 = 65.536 không gian địa chỉ
  2. 16 bit của không gian địa chỉ vật lý = 2^16 = 65,536 không gian địa chỉ
  3. 4096 Kích thước trang byte xác định độ lệch, là Nhật ký (4096)/Nhật ký (2) = 12 bit. Điều này có nghĩa, 2^12 cho Kích thước trang
  4. Theo @Akash Mahapatra, bù đắp từ địa chỉ ảo được ánh xạ trực tiếp đến việc bù đắp vào địa chỉ vật lý

Như vậy, bây giờ chúng ta có:

  • 2^16 (16bit) cho địa chỉ ảo, 2^12 (12bit) cho offset => để lại cho chúng tôi 4 bit cho các trang hoặc thay vì tổng số trang sẵn có.
  • Tôi sẽ không lặp lại phép tính cho vật lý vì nó là cùng một số.
  • 2^4 (4bit) cho các trang = 16, tương ứng với số lượng mục nhập bảng ở trên!

Chúng tôi đang ở đó ... hãy kiên nhẫn! :)

Địa chỉ bộ nhớ 0xE12C trong ký hiệu hex cũng được biết là đang giữ 16 bit địa chỉ. (Vì nó được nêu trong câu hỏi.)

Hãy bán thịt địa chỉ ngay bây giờ ...

Đầu tiên chúng tôi xóa '0x' khỏi thông tin.

Chúng tôi có thể chuyển đổi E12C thành ký hiệu nhị phân như @Tony Tannous, nhưng tôi sẽ áp dụng một chút cắt ngắn.

Mapping of the Address and Offset

Tôi chỉ cần sử dụng tỷ lệ. Vâng, địa chỉ được ghi trong 4 ký tự ở trên, và kể từ 16/4 = 4, tôi có thể xác định chữ cái đầu tiên là địa chỉ ảo, trong khi địa chỉ kia là địa chỉ offset.

Với thông tin 'E' ở định dạng thập lục phân, tôi cần chuyển đổi thành Thập phân = 14. Sau đó, tôi xem bảng của bạn được cung cấp và tôi tìm thấy khung trang '3'. Khung trang 3 được ghi ở định dạng thập phân, sau đó cần được chuyển đổi về định dạng thập lục phân ... Duh! ... là 3!

Vì vậy, ánh xạ địa chỉ vật lý của vị trí bộ nhớ ảo của 0xE12C có thể được tìm thấy tại 0x312C trên bộ nhớ vật lý.

Sau đó bạn sẽ quay trở lại để bàn, và tham khảo các tài liệu tham khảo cột bit và đặt một '1' vào hàng 14.

Áp dụng các khái niệm tương tự cho những -

0x3A9D → 0xAA9D 
0xA9D9 → 0x59D9 
0x7001 → 0xF001 
0xACA1 → 0x5CA1 

Nếu bạn nhận thấy, 3 chữ số cuối cùng giống nhau (xác định độ lệch). Và 1 của 4 chữ số được ánh xạ theo bảng:

table entry 3 -> page frame 10 -> hex notation A 
table entry A (10) -> page frame 5 -> hex notation 5 
table entry 7 -> page frame 15 -> hex notation F 
table entry A (10) -> page frame 5 -> hex notation 5 

Hope lời giải thích này sẽ giúp bạn và những người khác như tôi! :)

Các vấn đề liên quan