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

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

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

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

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

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

4 ответа

Решение

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

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

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

Поскольку с помощью 12 бит мы можем адресовать 2^12=4096слоты. Каждый слот представляет собой адрес размером 1 байт в памяти с байтовой адресацией. Следовательно, общий размер4096*1=4096 bytes = 4KB.

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

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

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

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

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

Другие вопросы по тегам