Ошибка страницы

редактировать

В вычислениях ошибка страницы (иногда называемая PF или аппаратная ошибка) является исключением, которое блок управления памятью (MMU) вызывает, когда процесс обращается к странице памяти без надлежащей подготовки. Для доступа к странице необходимо добавить отображение в виртуальное адресное пространство процесса. Кроме того, фактическое содержимое страницы может потребоваться загрузить из резервного хранилища, например с диска. MMU обнаруживает ошибку страницы, но ядро операционной системы обрабатывает исключение, делая требуемую страницу доступной в физической памяти или запрещая незаконный доступ к памяти.

Ошибки действительных страниц являются обычным явлением и необходимы для увеличения объема памяти, доступной программам в любой операционной системе, использующей виртуальную память, например в Windows, macOS и ядре Linux.

СОДЕРЖАНИЕ
  • 1 Типы
    • 1.1 Незначительный
    • 1.2 Майор
    • 1.3 Недействительно
  • 2 Неверные условия
  • 3 Влияние на производительность
  • 4 См. Также
  • 5 Примечания
  • 6 Ссылки
  • 7 Внешние ссылки
Типы

Незначительный

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

Страница также могла быть удалена из рабочего набора процесса, но еще не записана на диск или не стерта, например, в операционных системах, использующих кэширование вторичной страницы. Например, HP OpenVMS может удалить страницу, которую не нужно записывать на диск (например, если она осталась неизменной с момента последнего чтения с диска), и поместить ее в список бесплатных страниц, если рабочий набор также считается большой. Однако содержимое страницы не перезаписывается до тех пор, пока страница не будет назначена в другом месте, что означает, что она все еще доступна, если на нее ссылается исходный процесс перед выделением. Поскольку эти сбои не связаны с задержкой диска, они быстрее и дешевле, чем сбои основных страниц.

Крупный

Это механизм, используемый операционной системой для увеличения объема памяти программ, доступной по запросу. Операционная система откладывает загрузку частей программы с диска до тех пор, пока программа не попытается использовать их и не будет сгенерирована ошибка страницы. Если страница не загружена в память во время ошибки, это называется серьезной или аппаратной ошибкой страницы. Обработчику ошибок страницы в ОС необходимо найти свободное место: либо свободную страницу в памяти, либо несвободную страницу в памяти. Последний может использоваться другим процессом, и в этом случае ОС необходимо записать данные на этой странице (если они не были записаны с момента последнего изменения) и пометить эту страницу как не загружаемую в память в своем процессе. таблица страниц. Как только пространство станет доступным, ОС может считать данные для новой страницы в память, добавить запись в свое местоположение в блоке управления памятью и указать, что страница загружена. Таким образом, серьезные сбои обходятся дороже, чем второстепенные, и увеличивают задержку доступа к хранилищу для прерванного выполнения программы.

Неверный

Если ошибка страницы возникает для ссылки на адрес, который не является частью виртуального адресного пространства, то есть не может быть соответствующей ему страницы в памяти, то это называется ошибкой неверной страницы. Обработчик ошибок страницы в операционной системе обычно передает ошибку сегментации процессу-нарушителю, указывая на то, что доступ был недопустимым; обычно это приводит к ненормальному завершению кода, сделавшего недопустимую ссылку. Указатель NULL обычно представляются как указатель на адрес 0 в адресном пространстве; многие операционные системы устанавливают MMU, чтобы указать, что страница, содержащая этот адрес, не находится в памяти, и не включают эту страницу в виртуальное адресное пространство, поэтому попытки чтения или записи в память, на которую ссылается нулевой указатель, получают недопустимый ошибка страницы.

Недопустимые условия

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

Операционные системы предоставляют разные механизмы для сообщения об ошибках страницы. Microsoft Windows использует структурированную обработку исключений, чтобы сообщать о недействительных страницах как об исключениях нарушения доступа. UNIX-подобные системы обычно используют сигналы, такие как SIGSEGV, для сообщения программам об этих состояниях ошибки. Если программа, получившая ошибку, не обрабатывает ее, операционная система выполняет действие по умолчанию, обычно включающее завершение запущенного процесса, вызвавшего состояние ошибки, и уведомление пользователя о неисправности программы. Windows часто сообщает о таких сбоях, не вдаваясь в подробности. Опытный пользователь может получить подробную информацию с помощью WinDbg и минидампа, который Windows создает во время сбоя. UNIX-подобные операционные системы сообщают об этих условиях с помощью таких сообщений об ошибках, как «нарушение сегментации» или «ошибка шины», и могут создавать дамп ядра.

Влияние на производительность

Ошибки страницы снижают производительность системы и могут вызвать перебои. Основные сбои страниц на обычных компьютерах, использующих жесткие диски, могут существенно повлиять на их производительность, так как средний жесткий диск имеет среднюю задержку вращения 3 мс, время поиска 5 мс и время передачи 0,05 мс / страницу.. Следовательно, общее время пейджинга составляет около 8 мс (= 8000 мкс). Если время доступа к памяти составляет 0,2 мкс, то ошибка страницы сделает операцию примерно в 40 000 раз медленнее.

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

Более крупная физическая память также снижает количество ошибок страниц.

Смотрите также
Примечания
использованная литература
  • Джон Л. Хеннесси, Дэвид А. Паттерсон, Компьютерная архитектура, количественный подход ( ISBN   1-55860-724-2 )
  • Таненбаум, Эндрю С. Операционные системы: разработка и реализация (второе издание). Нью-Джерси: Прентис-Холл 1997.
  • Руководство разработчика программного обеспечения для архитектуры Intel - Том 3: Системное программирование
внешние ссылки
Последняя правка сделана 2024-01-12 09:23:05
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте