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