Как я могу получить значение CR3?

54
3

Как я могу получить значение CR3?

Кроме того, как я могу получить значение CR3 процесса A (скажем, Firefox)?

Есть ли какая-нибудь команда, которую я мог бы использовать для чтения текущего CR3?

Благодарю!

спросил(а) 2011-09-20T20:04:00+04:00 8 лет, 9 месяцев назад
1
Решение
53

Отсюда:

Я пытаюсь понять, в какой степени значение PGD (страница глобального каталога), хранящееся в регистре CR3, указывает выполняемый процесс/поток планировщиком Linux.

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

Ядро-поток просто заимствует последний запланированный процесс PGD (это означает, что все адресное пространство).... это делается для сохранения ненужного TLB-потока, поскольку поток ядра работает в пространстве ядра и что то же самое для всех процессов

Поэтому, чтобы избежать сброса TLB (Buffer Translation Lookaside Buffer), ядро просто использует PGD из текущего режима пользовательского режима, тогда как в пользовательском режиме регистр CR3 будет меняться каждый раз, когда запускается новый процесс, поскольку они расположены на другом виртуальном адресе, поэтому их отображение будет другим, я думаю.

ответил(а) 2011-09-20T20:38:00+04:00 8 лет, 9 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема