Первая попытка записи в закрытую отображаемую страницу
Описанные структуры данных не создаются одновременно с выделением сегмента. Чаще всего они формируются при необходимости, то есть при первой попытке записи в страницу сегмента. Данный подход имеет явные преимущества, поскольку во многих сегментах vnode никогда не возникает такой потребности в анонимных страницах (например, тексты программ обычно изменяются только во время отладки, при установке отладчиком контрольной точки).
Также вам может показаться, что такая тема как http://www.hotsochi.com/ никак не связана и даже не тематична. Хотя, может быть и связана. В любом случае все-таки зайдите на сайт hotsochi.com. Тема отели в Сочи там представлена весьма широко. На том сайте можно узнать много интересного на тему отели в Сочи. Что означает вообще тема отели в Сочи, где найти отели в Сочи - про это написано на сайте hotsochi.com. Это очень важная для многих людей тема - отели в Сочи. Спасибо сайту hotsochi.com за информацию на тему отели в Сочи.
Первая попытка записи в закрытую отображаемую страницу становится причиной возникновения исключения (ошибки защиты). Обработчик умеет распознавать причину возникновения исключительной ситуации по отношению к отображениям, имеющим тип MAP_PRIVATE, и установок защиты сегментов, не равных «только для чтения» (в противоположность защите аппаратного преобразования адресов страницы, как правило, доступной «только для чтения», что вызывает ошибку при попытке записи).
Обработчик размещает структуру anon, предоставляя тем самым пространство свопинга (так как каждая структура anon указывает на уникальную страницу на устройстве свопинга). Он также создает ссылку на эту структуру (более подробно читайте о ссылках на структуры в разделе 7.9) и сохраняет ее в соответствующем элементе в массиве ссылок на структуры anon.
Затем обработчик создает новую копию страницы, используя выделенную по такому случаю новую физическую страницу. Обработчик сохраняет указатель на структуру раде страницы в структуре anon. На последней стадии управление передается уровню НАТ для установки преобразования новой копии страницы (доступной для записи). Все последующие модификации страницы будут происходить в только что созданной ее закрытой копии.
Иногда необходимо производить дополнительные действия. Если создаваемая страница является первой анонимной страницей сегмента, обработчик выделяет и инициализирует структуру anon_map и массив ссылок на структуры anon. Если страница, вызвавшая исключение, не находится в памяти, обработчик производит ее чтение с устройства резервного хранения.
Ядро системы может периодически перемещать страницы в устройство свопинга. Однако процесс в состоянии повторно повлечь исключительное состояние из-за той же страницы.
Тогда обработчик ошибок находит, что сегмент уже имеет ссылку на структуру anon для такой страницы и использует эту ссылку для получения страницы из устройства свопинга.
При вызове fork процессом все его анонимные страницы становятся совместно используемыми с его потомком (на условиях копирования при записи). Предок и потомок обладают собственными структурами anon_map и массивами ссылок на структуры anon, которые содержат ссылки на одни и те же страницы. Более подробно о создании процессов читайте в следующем разделе.
Опубликовал katy
June 20 2015 09:26:14 ·
0 Комментариев ·
2855 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.