Шаги по устранению ошибок страницы

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

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

  • Страницы, которые не загружаются в память, помечаются в таблице страниц как недопустимые с помощью двоичного кода invalid. (Остальная часть записи в таблице страниц может быть либо пустой, либо содержать информацию о том, где найти вытесненную страницу на жестком диске.)

  • Если процесс обращается только к тем страницам, которые загружены в память (резидентные страницы памяти), то процесс работает точно так же, как если бы все страницы были загружены в память.

  • С другой стороны, если требуется страница, которая изначально не была загружена, то генерируется ошибка страницы, которая должна быть обработана в несколько этапов:

  1. Сначала проверяется запрошенный адрес памяти, чтобы убедиться, что это был корректный запрос памяти.

  1. Если ссылка была недействительной, процесс завершается. В противном случае страница должна быть загружена в память на страницу.

  1. Находится свободный фрейм, возможно, из списка свободных фреймов.

  1. Планируется операция по диску, чтобы доставить необходимую страницу с диска. (Это обычно блокирует процесс на ожидание ввода-вывода, позволяя другому процессу использовать ЦП в это время.)

  1. Когда операция ввода-вывода завершена, таблица страниц процесса обновляется новым номером фрейма, а двоичный код invalid изменяется, чтобы указать, что теперь это действительная ссылка на страницу.

  1. Теперь инструкция, вызвавшая ошибку страницы, должна быть перезапущена с самого начала (как только этот процесс получит еще одно включение процессора).

  • В крайнем случае, ни одна страница не подгружается для процесса до тех пор, пока она не будет запрошена из-за ошибок страниц. Это известно как пейджинг по требованию.

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

  • Хардвер необходим для поддержки виртуальной памяти, так же, как и для пейджинга и свопинга: таблица страниц и вторичная память. (Пространство свопинга, распределение которого обсуждается в главе 12.)

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


Материал подготовлен в рамках курса «Программист С».

Всех желающих приглашаем на открытый урок «io_uring: пишем убийцу Nginx». Мы рассмотрим различные методы мультиплексирования ввода-вывода, включая активно развивающийся на данный момент интерфейс ядра Linux io_uring, и попробуем написать на его основе высокопроизводительный асинхронный HTTP-сервер, обгоняющий по производительности даже Nginx.
>> РЕГИСТРАЦИЯ

Источник: https://habr.com/ru/company/otus/blog/575742/


Интересные статьи

Интересные статьи

В эту субботу пройдет онлайн-офлайн митап самарского PHP-чата: зрители трансляции смогут задавать докладчикам вопросы голосом и полноценно участвовать в викторине, а те, кто согласится но...
Один из ключевых сценариев работы в CRM это общение с клиентом в удобном для него канале. По почте, по телефону, по SMS или в мессенджере. Особенно выделяется WhatsApp — интеграцию с ...
Мне было необходимо делать 2 раза в сутки бэкап сайта на «1С-Битрикс: Управление сайтом» (файлов и базы mysql) и хранить историю изменений за 90 дней. Сайт расположен на VDS под уп...
Получить трафик для интернет-магазина сегодня не проблема. Есть много каналов его привлечения: органическая выдача, контекстная реклама, контент-маркетинг, RTB-сети и т. д. Вопрос в том, как вы распор...
Эта публикация написана после неоднократных обращений как клиентов, так и (к горести моей) партнеров. Темы обращений были разные, но причиной в итоге оказывался один и тот же сценарий, реализу...