8

Я читаю книгу «Современная операционная система». И я смущен о «Размер страницы».Почему 16-разрядный адрес с 12-битным смещением приводит к размеру страницы 4 КБ?

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

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

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

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

ответ

9

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

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

+0

Большое спасибо! :) –

+0

Я работал над большим мэйнфреймом в 70-х и 80-х годах, на котором было написано слово. Они предложили вариант, который добавил аппаратное обеспечение, позволяющее вам напрямую обращаться к байтам или символам BCD. – dbasnett

+2

@dbasnett: Я ненавижу разбить его вам, но 70-е годы были более 30 лет назад ... –

3

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

0

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

0

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

4-разрядный номер страницы, что означает, что существует 16 страниц как 2^4 = 16 Теперь вы называете страницы как page1, page2 ... page16.

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

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