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

May 20, 2018 15:57

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

Leave a comment

ext_122116 May 20 2018, 13:50:09 UTC
Во-первых - вообще говоря, 16-битный пид вовсе не означает, что в системе может быть 65535 процессов ( ... )

Reply

kincajou May 20 2018, 16:33:19 UTC
т.е. трансляция получается двухэтажной как минимум? и на обоих этапах нужен CAM, иначе перебор-поиск займт слишком много времени

Reply

ext_122116 May 20 2018, 17:08:35 UTC
Во время "нормальной" работы пользовательского процесса и при обработке прерывания "страница отсутсвует в TLB" - все "одноэтажное". 32-битный адрес делится на 2 части - старшие 20 бит и младшие 12 (это если упрощать - в MIPSовском TLB все чуточку сложнее), "ключу" вида (старшие 20 бит адреса; ASID) соответствует запись в TLB, из нее определяются старшие 20 бит адреса в физической памяти (да, тут как раз можно применить что-то типа content-adressable memory) и затем к ним прицепляются младщие 12 бит.

Вот переключение процессов в такой схеме может потребовать просмотра TLB и выкидывания оттуда записей для процессов, ASID которых совпадает с ASID "нового" процесса - это немного усложняет диспетчер памяти в ОС. В какой-нибудь микроядерной ОС, где время переключения процессов должно быть очень маленьким, возможно, стоит даже сделать так, чтобы некоторые процессы имели уникальный ASID, и переключение на них никогда не приводило бы к пересмотру всего TLB.

Reply

kincajou May 20 2018, 17:21:32 UTC
судя по тому, что я прочитал, ASID это не VPN (Virtual Page Number), это какая-то другая сущность. Она используется ВМЕСТЕ с VPN.

ASID получается каким-то однозначным образом связанным с номером процесса, иначе будет невозможно выяснить, какому из процессов принадлежат уже имеющиеся в TLB записи с запрашиваемым ASID, и придётся в случае их обнаружения очищать весь TLB... но тогда какой в нём смысл ;)

Reply

kincajou May 20 2018, 17:22:17 UTC
..или же я неправильно понял фразу про "ключ вида" - имелось в виду VPN + ASID ?

Reply

ext_122116 May 20 2018, 17:35:52 UTC
Да, именно пара VPN и ASID определяет адрес страницы в памяти.

В простейшем случае можно считать, что ASID=PID, в некоторых случаях это возможно.

Reply

kincajou May 20 2018, 17:41:22 UTC
слишком похоже на цитату из книги самых известных последних слов ;)

ладно, до проектирования MMU я ещё не скоро дойду

Reply

kincajou May 20 2018, 16:40:03 UTC
ха, двойные записи! остроумно

Reply


Leave a comment

Up