1

Это может зависеть от ОС, но в целом, насколько я понимаю, когда возникает ошибка страницы (нужная страница отсутствует в основной памяти), ОС будет указывать CPU на чтение страницы с диска, и мне интересно, отправляет ли ОС другой процесс, в то время как дисковый ввод-вывод? если это произойдет, тогда будет полная очистка TLB от контекстного переключателя, правильно?Flush TLB в контексте swtich

ответ

3

Более или менее, но ошибка страницы не всегда означает, что страница находится на диске (она также не может существовать вообще, будь то страница с ленивым распределением, быть написана на странице с записью на запись to, существуют, но должны быть отмечены как нечитаемые/невоспроизводимые и т. д.). Но если это так, вероятно, планируется запланировать другой поток, по крайней мере, потому, что диск IO занимает примерно навсегда.

Необходимое количество переключения зависит от того, на что оно переключается, переключение между потоками из одного и того же контекста не подразумевает сброс TLB. Если необходим флеш TLB, вероятно, это не полный флеш из-за глобальных страниц (как правило, вы не очищаете записи TLB для страниц ядра). Существует также PCID, чтобы избежать полных флешей (промывка может быть ограничена указанными идентификаторами контекста процесса), но это довольно недавно, и сложно использовать, поскольку существует всего 4096 различных идентификаторов.

+0

я вижу. Причина, по которой я спросил об этом, заключается в том, что после завершения ввода-вывода процессор обновит таблицу страниц, а также TLB, поэтому, полностью смыв, на самом деле не имеет смысла. – peter

+0

@peter все равно будет работать, но это будет медленнее, так как у вас будет много лишних пропусков TLB, но на самом деле все не получится. – harold

Смежные вопросы