Почему сбои страниц обычно обрабатываются ОС, а не аппаратными средствами? - PullRequest
0 голосов
/ 24 марта 2020

Я обнаружил, что во время отсутствующего процесса TLB некоторые архитектуры используют аппаратное обеспечение для его обработки, а некоторые используют ОС Но когда дело доходит до сбоя страницы, большинство из них используют ОС вместо аппаратного.

Я пытался найти ответ, но не нашел ни одной статьи, объясняющей почему.

Может ли кто-нибудь помочь с этим? Спасибо.

1 Ответ

1 голос
/ 24 марта 2020

Если оборудование может справиться с этим самостоятельно, оно не должно быть неисправным.

Весь смысл в том, что ОС не встраивала страницу в таблицы страниц оборудования, например, потому что это не так. на самом деле вообще в памяти, или потому что ОС должна перехватить попытку записи, чтобы ОС могла реализовать функцию копирования при записи.

Ошибки страницы делятся на три категории:

  • действует (процесс логически отображает память, но ОС была ленива или трюки):
    • hard: страница должна быть выгружена с диска, либо из области подкачки, либо из файл диска (например, файл с отображением в памяти, например страница исполняемой или разделяемой библиотеки). Обычно ОС планирует другое задание во время ожидания ввода-вывода.
    • soft: доступ к диску не требуется, например, выделение + обнуление новой физической страницы для поддержки виртуальной страницы этого пользователя -пространство просто пытался написать. Или копирование при записи страницы с возможностью записи, которую отображали несколько процессов, но где изменения одного не должны быть видны другому (например, mmap (MAP_PRIVATE)). Это превращает общую страницу в личную грязную страницу.
  • недействительно : для этой страницы не было даже логического отображения. Операционная система POSIX, такая как Linux, доставляет сигнал SIGSEGV в вызывающий процесс / поток.

Аппаратное обеспечение не знает, что, все, что оно знает, это то, что при просмотре страницы не найдено допустимая запись таблицы страниц для этого виртуального адреса, так что пришло время позволить ОС решить, что делать дальше. (т. е. вызвать исключение ошибки страницы, при котором запускается обработчик ошибки страницы операционной системы.) Действительный / недействительный являются чисто программными / ОС-концепциями.

Эти примеры причин не являются исчерпывающим списком. Например, ОС может удалить аппаратное сопоставление для страницы, фактически не выполняя подкачку страниц, просто чтобы увидеть, скоро ли процесс коснется ее снова. (В этом случае это просто дешевая программная ошибка страницы. Но если нет, то она может фактически вывести ее на диск. Или сбросить, если она чистая.)

Чтобы HW мог полностью обрабатывать страницу В противном случае нам потребуются структуры данных с аппаратно-заданной компоновкой, которая каким-то образом позволяет аппаратному обеспечению знать, что делать в некоторых возможных ситуациях. Если вы не встраиваете целое ядро ​​в микрокод ЦП, его невозможно обработать каждый сбой страницы, особенно недействительные, которые требуют чтения структур данных управления процессами / задачами ОС и передачи сигнала пользователю -пространство. Либо обработчику сигнала, если таковой имеется, либо уничтожению процесса.

И особенно не жесткие сбои страниц, когда многозадачная ОС позволяет другому процессу запускаться, ожидая, пока диск DMA страницы ( s) в память, прежде чем подключать таблицы страниц для этого процесса и позволить ему повторить сбой загрузки или сохранения инструкции.

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