Когда модуль управления памятью преобразует логический адрес в физический адрес с помощью таблицы перевода, как физический адрес сопоставляется с этим адресом в оперативной памяти. Что я хочу сказать, это как, по этому адресу, а не по какому-либо другому адресу? Имеет ли конкретный адрес памяти какую-то уникальность, которая отличает его от других адресов? Или каждые 2 байта в оперативной памяти хранят один байт в качестве адреса, а другой - для данных?
1 ответ
Да, каждый адрес памяти (физический и виртуальный) уникален - уникальный номер. Обычно для определения адреса в памяти используются от четырех до восьми байтов, что создает диапазон адресов, называемый адресным пространством. Когда архитектура ЦП использует 32-разрядное адресное пространство, диапазон адресов составляет от 0
до 4294967295
. Когда архитектура ЦП использует 64-разрядное адресное пространство, диапазон адресов составляет от 0
до 18446744073709551615
.
В таблице трансляции хранятся только два адреса: адрес физической памяти и адрес виртуальной памяти. Адрес указывает на первый байт большого раздела в памяти, называемый страницей. Размер этой страницы обычно большой, обычно 4 КБ, но не является стандартным. Таким образом, таблица перевода не должна хранить адрес для каждого байта в памяти (что фактически практически невозможно, когда диапазон памяти превышает 255 байтов).