Почему 16-битный адрес с 12-битным смещением результатов в размере страницы 4 КБ?

StackOverflow https://stackoverflow.com/questions/3693818

Вопрос

Я читаю книгу «Современная операционная система». И я запутался в отношении «размера страницы».

В книге автор говорит,

Входящий 16-битный виртуальный адрес разделен на 4-битный номер страницы и 12-битное смещение. С 4 битами для номера страницы мы можем иметь 16 страниц, а с 12 битами для смещения, мы можем обратиться за всеми 4096 байты на странице.

Почему 4096 байтов? С 12 битами мы можем обратиться 4096 заявление На странице правильно. Но одна запись является адресом (в этом случае, размер адреса = 16 бит). Поэтому я думаю, что мы можем обратиться в 4096 (вход) * 16 (бит) = 4096 (вход) * 2 (байт) = 8 КБ, но почему книга говорит, что мы можем обратиться в 4096 (байт)?

Заранее спасибо! :)

Это было полезно?

Решение

Это предполагает, что байтовая память (которая почти каждая машина, выполненная в течение последних 30 лет), поэтому каждый адрес относится к байту, а не ввод или адрес или любое другое большее значение. Чтобы удерживать 16-битное значение, вам понадобятся два последовательных адреса (два байта).

Более 30 лет назад раньше были машины, которые были адресованы сром, что работало как вы, поручив. Но такие машины проводили трудное время, имеющие дело с ориентированными на байтовые данные (такие как персонажи ASCII), и поэтому выпали из одолжения. В наши дни, такие вещи, как обрабатываемость байта, 8-битные байты и целые числа в комплекте TWOS-дополнения, почти предполагаются.

Другие советы

12 бит - это смещение на странице. Смещение находится в байтах, а не адреса. 2 ^ 12 4096.

То, что вы рассчитаете, это размер страницы, то есть размер страницы в таблице страницы в памяти. Как мы используем 12 бит для смещения, каждый кадр в физической памяти составляет 2 ^ 12 = 4096к. Однако каждая страница в таблице страницы занимает 2 ^ 12 записей x 2 байта = 8k в памяти.

Хорошо, так что у вас есть 16 бит виртуальный адрес, давайте посмотрим, что это означает. Это означает, что у вас есть 2 ** 16 = 65536 байтов.

4-битный номер страницы, который означает, что есть 16 страниц как 2 ^ 4 = 16 Теперь вы называете страницы как страницы1, Page2 ... Page16.

Теперь мы остались с 12битами, давайте посмотрим, сколько адреса 12 бит представляют 2 ** 12 = 4096 байтов

65536 байтов также могут быть достигнуты путем разделения его на 16 страниц, содержащие 4096 байтов каждый как 4096 * 16 = 65536

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top