Если TLB сбрасывается каждый раз, когда программа выполняет переключение контекста, то когда эта программа запускается снова, куда TLB отправляется для перезагрузки своей таблицы? Кроме того, если таблица очищается, то как другим программам запрещается запись в память, которая принадлежит этой программе?
2 ответа
Он начинается пустым и перезагружается при доступе.
TLB - это оптимизация, которая позволяет избежать чтения медленной информации из таблицы страниц, чтобы найти память приложения; в частности, управление доступом к памяти осуществляется из таблиц страниц, а не из TLB.
И причина, по которой вы это объясняете, двояка: потому что, если вы этого не сделали, доступ к следующему процессу может попасть в память вашего процесса (полная противоположность вашему предположению!), И потому что его можно было бы использовать для наблюдения за вашим процессом. память процесса и / или активность.
TLB перезагружается из таблицы страниц. Таблица страниц всегда имеет современное отображение.
Как и кэш-память процессора, TLB - это просто копия того, что есть в таблице страниц, поэтому нет никакой потери информации при ее очистке. Кроме того, даже если TLB очищен, память одной программы не выделяется другим программам, поэтому они не могут записывать в память этой программы.
Смотрите мое исследование на TLB для более детального понимания темы.