Пейджингом мы отображаем виртуальное отображение на физическое для каждого 4 байта (слова).Но как мы получаем доступ к каждому байту из этого отображения? - PullRequest
0 голосов
/ 11 июля 2019

Это может быть очень простой вещью, которую я не понял. Но я приложил немало усилий, чтобы найти ответ, но ничего хорошего.

В машинах с байтовой адресацией, используя 32-битные, мы можем получить доступ к 4 ГБ памяти (2 ^ 32 байта). Тогда каждое слово содержит 4 байта, при виртуальном отображении на физическое мы имеем отображение виртуального слова на физическое, которое включает 4 байта. Поэтому мой вопрос: если у нас есть переменная char (char: 1 байт), как мы можем узнать, какой из байтов содержит 4 байта?

1 Ответ

2 голосов
/ 11 июля 2019

Отображение виртуального в физическое изменяет только верхнюю часть виртуального адреса (или номер виртуальной страницы, VPN) на верхнюю часть физического адреса (или номер кадра страницы, PFN или номер физической страницы, PPN).
Нижняя часть (также известная как смещение) остается прежней, если эта часть имеет ширину k битов, то она охватывает 2 k байтов, которые все имеют одинаковый перевод.
Вот почемумы говорим, что отображение происходит, скажем, на границе 4KiB / 2MiB / 1GiB.

Если память адресуется в байтах, каждый байт по определению идентифицируется (как минимум) одним уникальным адресом.
Таким образом, аппаратному обеспечению легко получить доступ к этому конкретному байту в памяти.
Каждый адресидет под виртуальным переводом, как указано выше.

...