#operating-system
#операционная система
Вопрос:
Я читаю операционные системы и сомневаюсь в отношении времени обслуживания сбоя страницы?
Среднее время доступа к памяти = проблема. отсутствие сбоя страницы (время доступа к памяти) проблема. ошибки страницы (время обслуживания ошибки страницы)
Я сомневаюсь в том, что включает в себя время обслуживания сбоя страницы?
По моему мнению,
Первый перевод адреса есть в TLB или таблице страниц, но когда запись не найдена в таблице страниц, это означает, что произошла ошибка страницы . Итак, мне нужно извлечь данные с диска, и все записи обновляются в TLB, а также в таблице страниц.
Следовательно, время обслуживания сбоя страницы = время TLB время таблицы страниц извлечение страницы с диска
Пожалуйста, кто-нибудь подтвердит это?
Ответ №1:
То, что вы описываете, — это академические буллы ____. Существует так много факторов, что простое уравнение, подобное этому, не описывает время доступа. Тем не менее, есть некоторые идиотские книги по операционным системам, в которых подобные вещи звучат интеллектуально (и профессорам это нравится для экзаменационных вопросов).
Эти идиоты пытаются сказать, что ссылка на страницу будет находиться в памяти или нет в памяти с двумя вероятностями, суммирующимися до 1.0. Это совершенно бессмысленно, потому что относительные вероятности являются динамическими. Если другие процессы начинают использовать память, вероятность ошибки страницы увеличивается, а если другие процессы перестают использовать память, вероятность снижается.
Тогда у вас есть время доступа к памяти. Это тоже не является постоянным. Доступ к ячейке кэшированной памяти выполняется быстрее, чем к некэшированной ячейке. Доступ к памяти, которая совместно используется несколькими процессорами и взаимосвязана, происходит медленнее. Это тоже не константа.
Тогда у вас есть время обслуживания сбоя страницы. Существуют ошибки мягких и твердых страниц. Ошибка страницы на странице с нулевым запросом отличается по времени от страницы, которая должна быть загружена с диска. Кэшируется ли доступ к диску или не кэшируется? Сколько активности присутствует на диске?
О, таблица страниц разбита на страницы? Если да, то ошибка страницы связана с таблицей страниц или с самой страницей? Это может быть даже и то, и другое.
Обслуживание ошибки страницы:
- Процесс вводит обработчик исключений и прерываний.
- Обработчик прерываний отправляется обработчику ошибок страницы.
- Обработчик ошибок страницы должен найти, где хранится страница.
- Если страница находится в памяти (была выгружена, но не записана на диск), обработчику просто нужно обновить таблицу страниц.
- Если страницы нет в памяти, обработчик должен посмотреть, где хранится страница (это зависит от системы и типа памяти).
- Система должна выделить физический фрейм страницы для памяти.
- Если это первая ссылка на страницу с нулевым запросом, нет необходимости читать с диска, просто установите все на ноль.
- Если страница находится в кэше диска, извлеките страницу из него.
- В противном случае прочитайте страницу с диска во фрейм страницы.
- Сбросьте регистры процесса соответствующим образом.
- Возврат в пользовательский режим
- Перезапустите инструкцию, вызвавшую ошибку. (Все вышеперечисленное имеет грубые упрощения.)
TLB на самом деле не имеет к этому никакого отношения, за исключением того, что время обслуживания немного быстрее, если соответствующая запись таблицы страниц находится в TLB.
Следовательно, время обслуживания сбоя страницы = время TLB время таблицы страниц извлечение страницы с диска
Совсем нет.
Комментарии:
1. Включает ли время обслуживания сбоя страницы время доступа к памяти для подкачки по запросу?
2. Время доступа к чему? Время обслуживания ошибки ошибки начинается с момента попадания ошибки в вектор прерывания до возврата из исключения.