Вот, например, одна из непоняток - виртуальная память.

May 20, 2018 15:57

Как пишут в разных источниках, традиционный размер страницы виртуальной памяти - 4 килобайта (относительно недавно появились и внедряются технологии мегастраниц, но к делу это щас не относится). Т.е. адресация ВНУТРИ страницы - 12битовая, от 0 до 4095 байта. Ок ( Read more... )

Leave a comment

pogorily May 21 2018, 13:13:31 UTC
Берем даташит от I386DX, там довольно внятно описано.
Адрес состоит из трех полей - два по 10 бит, младшее 12 бит (адрес внутри страницы).
В регистре CR3 находится адрес таблицы страниц первого уровня, прибавляем к нему 10-битное значение (старшее), получаем адрес, по которому адрес начала таблицы страниц второго уровня. Прибавляем к этому адресу 10-битное значение (второе), получаем адрес, по которому находится адрес начала страницы. Прибавляем к нему 12-битный адрес внутри страницы и получаем адрес физической памяти.
Плюс в обеих таблицах есть биты, означающие, существует ли в памяти эта таблица или страница и какой доступ к ней разрешен.
Если все в порядке - происходит доступ к данным, если что-то не так (например, страницы нет в памяти) - прерывание и дальше ОС разбирается.

Чтобы не делать двух дополнительных обращений в память, есть TLB на 32 элемента (кэш страниц), в которой находятся элементы, относящиеся к наиболее часто используемым страницам. Интел утверждает, что это обеспечивает вероятность кэш-промахов не более 2%.

При переключении процессов происходит запись в CR3 другого адреса таблицы первого уровня и все элементы TLB делаются не значимыми.

Все.

Остальное (в более новых процессорах) - оптимизации и модификации. Например, таблица страниц может иметь три или четыре уровня. TLB может быть больше и в каждом элементе ее может храниться номер процесса (чтобы не нулить всю TLB при переключении процессов).

Reply

kincajou May 25 2018, 04:14:36 UTC
читаю RISC-V Privileged spec 1.7, в главе 4.5.1 описано нечто очень похожее. Я пока по диагонали пробежал, поэтому не уверен, что сходство не только внешнее

Reply


Leave a comment

Up