2016-05-10 10 views
0

Если мое понимание не является ошибочным, TLB хранит не только сопоставления виртуальных объектов, но также флаг каждой страницы, такой как флаг записи (W), флаг выполнения disable (XD).Какая ошибка произошла, если флаги, хранящиеся в tlb, не совпадают?

Вопрос в том, какие ошибки будут сгенерированы, если он попытается выполнить невыполняемые страницы, такие как куча или стек? Это ошибка страницы?

+2

Содержимое TLB «выигрывает» (ничего не проверено, поэтому TLB существует), поэтому вы должны очистить запись, если вы изменяете флаги. – harold

+0

О, правда? Я слышал, что TLB также поддерживает флаги в таблице. –

+0

Да, это проблема. Если у TLB нет их копии, это ничего не ускорит, потому что эти флаги нужно будет искать. Так оно и есть. Но тогда он не знает, что такое «настоящие флаги», он только знает, что они были в момент провала TLB, и он сделал копию. – harold

ответ

-1

Page-Fault Исключение

...

  • код работает в режиме пользователя пытается записать на страницу только для чтения. В процессорах Intel486 и более поздних версиях, если в CR0 установлен флаг WP, ошибка страницы также будет инициироваться кодом, запущенным в режиме супервизора, который пытается записать на страницу только для чтения.
  • Команда выбирает линейный адрес, который преобразуется в физический адрес на странице памяти с установленным битом завершения выполнения.

...

С Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 3A: System Programming Guide, Part 1 страницы 6-54.