8

Tôi đang đọc sách "Hệ điều hành hiện đại". Và tôi bối rối về "Kích thước trang".Tại sao địa chỉ 16 bit có kết quả bù đắp 12 bit ở kích thước trang 4KB?

Trong cuốn sách, tác giả cho biết,

Địa chỉ ảo đến 16-bit là chia thành một số trang 4-bit và 12-bit bù đắp. Với 4 bit cho số trang , chúng tôi có thể có 16 trang và với 12 bit để bù trừ, chúng tôi có thể địa chỉ tất cả 4096 byte trong trang .

Tại sao 4096 byte? Với 12 bit, chúng tôi có thể giải quyết 4096 mục trong một trang, chính xác. Nhưng, một mục là một địa chỉ (trong trường hợp này, kích thước địa chỉ = 16 bit). Vì vậy, tôi nghĩ rằng chúng tôi có thể giải quyết 4096 (mục nhập) * 16 (bit) = 4096 (mục nhập) * 2 (byte) = 8KB, nhưng tại sao cuốn sách nói rằng chúng tôi có thể giải quyết 4096 (byte)?

Cảm ơn trước! :)

Trả lời

9

Giả sử bộ nhớ địa chỉ byte (hầu hết mọi máy được sử dụng trong 30 năm qua), do đó mỗi địa chỉ đề cập đến byte, không phải mục nhập hoặc địa chỉ hoặc bất kỳ giá trị lớn nào khác. Để giữ giá trị 16 bit, bạn sẽ cần hai địa chỉ liên tiếp (hai byte).

Hơn 30 năm trước, đã từng là các máy được giải quyết từ, hoạt động như bạn phỏng đoán. Nhưng những cỗ máy như vậy đã gặp khó khăn trong việc xử lý dữ liệu định hướng byte (chẳng hạn như các ký tự ASCII), và do đó đã không còn được ưa chuộng. Ngày nay, những thứ như khả năng xử lý byte, byte 8 bit và số nguyên bổ sung twos khá giả định.

+0

Cảm ơn rất nhiều! :) –

+0

Tôi làm việc trên một máy tính lớn lớn trong những năm 70 và 80 là từ được giải quyết. Họ cung cấp một tùy chọn thêm phần cứng cho phép bạn địa chỉ byte hoặc ký tự BCD trực tiếp. – dbasnett

+2

@dbasnett: Tôi ghét phá vỡ nó cho bạn, nhưng những năm 70 đã hơn 30 năm trước ... –

3

12 bit là một khoảng trống trong một trang. Giá trị bù trừ tính theo byte, không phải là địa chỉ. 2^12 là 4096.

0

Những gì bạn đang tính toán là kích thước trang, tức là kích thước của một trang trong bảng trang trong bộ nhớ. Khi chúng ta sử dụng 12 bit cho offset, mỗi frame trong bộ nhớ vật lý là 2^12 = 4096K. Tuy nhiên, mỗi trang trong bảng trang chiếm 2^12 mục x 2 byte = 8K trong bộ nhớ.

0

sao cho bạn có địa chỉ ảo 16 bit để xem nó có ý nghĩa gì. Điều đó có nghĩa là bạn có 2 ** 16 = 65536 byte.

Số trang bit 4 có nghĩa là có 16 trang là 2^4 = 16 Bây giờ bạn đặt tên trang là page1, page2 ... page16.

Bây giờ chúng tôi là trái với 12bits chúng ta hãy xem có bao nhiêu địa chỉ 12 bit có thể đại diện cho 2 ** 12 = 4096 byte

65536 byte cũng có thể đạt được bằng cách chia nó thành 16 trang có chứa mỗi như 4096 4096 byte * 16 = 65536

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