Обработка ошибок страницы в операционной системе.
Ошибка страницы возникает, когда программа пытается получить доступ к данным или коду, которые находятся в её адресном пространстве, но в данный момент не находятся в системной оперативной памяти. Это запускает последовательность событий, при которых операционная система должна устранить неисправность, загрузив необходимые данные из дополнительного хранилища в оперативную память.
Ошибки страниц необходимы для реализации систем виртуальной памяти, которые создают иллюзию большего объема непрерывной памяти.
Что такое ошибка страницы?
Ошибка страницы — это критическое событие в компьютерных системах, при котором программа пытается получить доступ к данным или коду, которые в данный момент недоступны в физической памяти (основной памяти). Это событие является неотъемлемой частью управления виртуальной памятью, которое позволяет системе эффективно размещать большие объёмы данных в памяти. Таким образом, при возникновении ошибки страницы происходит следующая последовательность событий:
- Аппаратное обеспечение компьютера перехватывает управление ядром, и программный счетчик (PC) сохраняется в стеке. Текущая информация о состоянии инструкции сохраняется в регистрах процессора .
- Запускается программа сборки для сохранения общих регистров и другой изменчивой информации, чтобы операционная система не уничтожила её.
- Операционная система обнаруживает, что произошла ошибка страницы, и пытается выяснить, какая виртуальная страница необходима. Иногда аппаратный регистр содержит эту необходимую информацию. Если нет, операционная система должна восстановить ПК, извлечь инструкцию и выяснить, что она делала в момент возникновения ошибки.
- Как только виртуальный адрес,вызвавший сбой страницы, становится известен, система проверяет, действителен ли адрес, и проверяет, нет ли проблем с доступом к защите.
- Если виртуальный адрес действителен, система проверяет, свободен ли кадр страницы. Если свободных кадров нет, запускается алгоритм замены страницы для удаления страницы.
- Если выбранный кадр является грязным, страница планируется для передачи на диск, происходит переключение контекста, процесс с ошибкой приостанавливается, а другой процесс запускается до завершения передачи на диск.
- Как только кадр страницы очищается, операционная система ищет на диске адрес нужной страницы и планирует операцию с диском, чтобы загрузить её.
- Когда прерывание диска указывает на то, что страница прибыла, таблицы страниц обновляются, чтобы отразить её положение, а кадр помечается как находящийся в нормальном состоянии.
- Ошибка в инструкции восстанавливается до состояния, в котором она была на момент начала, и компьютер перезагружается. Ошибка запланирована, операционная система возвращается к процедуре, которая её вызвала.
- Процедура сборки перезагружает регистр и другую информацию о состоянии, возвращается в пользовательское пространство для продолжения выполнения.
Причины сбоев страницы
Существует несколько причин, вызывающих сбои в работе страницы:
- Выборочная подкачка: Доступ к странице, которая в данный момент не загружена в память (ОЗУ).
- Недопустимый доступ к памяти, это происходит, когда программа пытается получить доступ к той памяти, которая находится за пределами границ доступа или не выделена.
- Нарушение процесса: когда процесс пытается записать данные на страницу, доступную только для чтения, или иным образом нарушает правила защиты памяти.
Типы сбоев страницы
- Ошибка незначительной страницы: возникает, когда требуемая страница находится в памяти, но не в таблице страниц текущего процесса.
- Ошибка основной страницы: возникает, когда страница отсутствует в памяти и должна быть загружена с диска.
- Ошибка недействительной страницы: Происходит, когда процесс пытается получить доступ к недопустимому адресу памяти.
Процесс обработки ошибок страницы
- Обнаружение ошибки страницы: С помощью аппаратного прерывания операционная система обнаруживает ошибку страницы.
- Проверка адреса: ОС проверяет наличие страницы во вторичном хранилище или проверяет, действительна ли память.
- Замена страницы: Если для страницы, которой ещё нет в памяти, нет места, то ОС решает, какую страницу удалить или вытеснить из памяти, чтобы освободить место для новой страницы.
- Загрузка страницы: необходимая страница загружается с диска в память.
- Обновление таблиц страниц: Операционная система обновляет таблицу страниц с новым сопоставлением.
- Перезапуск процесса: При возникновении ошибки на странице процесс будет перезапущен.
Влияние сбоев страниц на производительность системы
Ошибка страницы влияет на систему, если она возникает часто —
- Перегрузка: Если сбои страниц происходят часто, то система тратит на их обработку больше времени, чем на выполнение процессов, из-за чего общая производительность также снижается.
- Увеличение задержки: извлечение страниц с диска занимает больше времени, чем доступ к ним в памяти, что приводит к большим задержкам.
- Использование ЦП: Если ошибка страницы возникает слишком часто, это может снизить использование ЦП, поскольку процессор ожидает завершения операций с памятью или простаивает, что неэффективно.
Заключение
В операционной системе обработка ошибок страниц является важным процессом, обеспечивающим плавное и эффективное управление памятью. Когда программа пытается получить доступ к данным, которых в данный момент нет в физической памяти компьютера (RAM), происходит ошибка страницы. Операционная система извлекает необходимые данные из более медленного хранилища (например, жесткого диска) и загружает их в оперативную память. Хотя ошибки страниц могут временно замедлять работу программы, они являются обычной частью работы виртуальной памяти, позволяя компьютерам эффективно запускать большие приложения, не требуя чрезмерного объема физической памяти. Эффективная обработка ошибок страниц помогает системе поддерживать производительность и стабильность.