stringtranslate.com

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

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

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

Типы

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

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

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

Главный

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

Неверный

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

Неверные условия

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

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

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

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

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

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

Смотрите также

Примечания

  1. ^ Microsoft использует термин «серьёзная ошибка» в некоторых версиях своего монитора ресурсов , например, в Windows Vista (как он используется в справке по представлению ресурсов в операционных системах Microsoft).

Рекомендации

  1. ^ Бовет, Даниэль; Чезати, Марко (ноябрь 2005 г.). Понимание ядра Linux (PDF) (3-е изд.). О'Рейли Медиа. ISBN 0-596-00565-2. Проверено 9 октября 2021 г.

Внешние ссылки