В чем преимущество 3G / 1G vm split? 32-битное ядро ​​Linux - PullRequest
4 голосов
/ 03 января 2012

Виртуальная память I: проблема [LWN.net] http://lwn.net/Articles/75174/

в частности, аппаратный буфер трансляции адресов может быть разделен между ядром и пользовательским пространством.

Я совершенно сбит с толку. Почему они могут совместно использовать TLB, когда виртуальный компьютер разделен? Я знаю, что в некоторых процессорах есть глобальный бит страницы,

указывает на то, что записи TLB являются общими для разных процессов и не требуют сброса.

Какая связь между TLB и vm split 3G / 1G? Пожалуйста, прокомментируйте подробно. Заранее спасибо.

Обновление: почему бы не использовать глобальный бит страницы, чтобы указать, что запись TLB используется ОС (пространство ядра)? Если это так, почему все еще нужно разделить пространство VM? пример: две записи (адрес vm liner одинаков) в TLB, но для одной из них установлен глобальный бит. ? Когда контекст переключается, просто сбрасывайте записи, что глобальный бит не установлен. Это возможно?

Обновление 2: я проверил руководство разработчика программного обеспечения для архитектуры intel-ia-32 и обнаружил, что в записи TLB отсутствует глобальный бит (существует в PDE и PTE). Но когда контекст переключается, как процессор определяет, установлен ли глобальный бит записи TLB или не установлен?

Ответы [ 2 ]

4 голосов
/ 03 января 2012

TLB также включает флаг супервизора, который указывает, может ли отображение использоваться обычными процессами или его можно использовать только тогда, когда процесс выполняется с установленным флагом супервизора, т.е. когда процесс выполняется в контексте ядра.

Этот флаг супервизора позволяет использовать TLB для обоих процессов (он не получает автоматически права доступа к данным в гигабайтах ядра). и позволяют ядру иметь полный доступ ко всем процессам. памяти при выполнении в режиме ядра.

Это означает, что процесс может входить и выходить из режима ядра без наложения штрафов за сброс TLB.

Если память не была разделена (скажем, используется патч 4: 4, дающий четыре гигабайта для пространства пользователя и четыре гигабайта для пространства ядра), то TLB необходимо очищать при каждом входе / выходе из ядра, чтобы отобразить либо привилегированное пространство или в пользовательском пространстве и все данные, копируемые в ядро ​​и из него, должны проходить через утомительные механизмы переназначения.

2 голосов
/ 03 января 2012

Адресное пространство разделено между пользовательским пространством и пространством ядра. Адресное пространство ядра всегда одинаково и использует тот глобальный флаг, о котором говорится в статье. Это очень нужно.

С другой стороны, остальные 3 ГБ зарезервированы для пользовательских процессов: у них другое адресное пространство для процесса (примечание: для процесса потоки совместно используют одно и то же адресное пространство через clone(CLONE_VM)). Это означает, что когда происходит переключение контекста процесса, MMU должен только заменить записи TLB, относящиеся к адресному пространству пользователя, а не к ядру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...