О записях TLB и записях таблицы страниц

На сайте о TLB: ( https://www.bottomupcs.com/virtual_memory_hardware.xhtml):

Для следующих частей я выделил:

1: Является ли формат записей TLB таким же, как PTE(записи таблицы страниц)? И не понятно
"страница" на странице может быть помечена как средняя запись TLB или PTE?

2: Для "страниц", проходящих через все страницы, они являются записями TLB или PTE?

3: Почему это перемещено из не "перемещено в"?

4: Это порядок (1) установить два бита (2), помещенные в TLB, или наоборот?

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

Доступной страницей является просто любая страница, к которой был получен доступ. 1 Когда перевод страницы изначально загружен в TLB, страницу можно пометить как доступную (иначе зачем вы ее загружали? [19])

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

Грязная страница - это страница, на которую записаны данные, и поэтому она не соответствует никаким данным, уже имеющимся на диске. Например, если страница загружается из раздела подкачки и затем записывается процессом, 3 перед тем, как ее можно вывести из раздела подкачки, необходимо обновить ее копию на диске. Чистая страница не имеет изменений, поэтому нам не нужно копировать страницу обратно на диск.

Оба схожи в том, что они помогают операционной системе управлять страницами. Общая концепция состоит в том, что у страницы есть два дополнительных бита; грязный бит и бит доступа. 4 Когда страница помещается в TLB, эти биты устанавливаются так, чтобы указывать, что ЦП должен выдавать ошибку.

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

1 ответ

Решение

Я предлагаю игнорировать эту ссылку в качестве источника. Это очень запутанно. Я не вижу никаких упоминаний о конкретной реализации, но она четко описывает ее.

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

1: Является ли формат записей TLB таким же, как PTE(записи таблицы страниц)?

Программист никогда не видит записи TLB. Они могут иметь тот же формат, что и PTE. Они не могут.

2: Для "страниц", проходящих через все страницы, они являются записями TLB или PTE?

Программисты не имеют доступа к записям TLB. Они должны ссылаться на PTE.

3: Почему это перемещено из не "перемещено в"?

Возможно, но в вашей ссылке много путаницы.

4: Это порядок (1) установить два бита (2), помещенные в TLB, или наоборот?

Это описание какой-то конкретной, неназванной реализации. У большинства процессоров есть грязный бит, но не у всех есть бит доступа.

Другие вопросы по тегам