В этом разделе мы рассмотрим реализацию технологии разделяемой памяти в архитектуре VM. Каждая область разделяемой памяти представляется при помощи сегмента vnode, отображающего анонимный объект с атрибутом MAP_SHARED. Так как отображение является обобществленным, все^его изменения влияют непосредственно на единую разделяемую копию данных
и, следовательно, сразу же окажутся видимыми всеми процессами.
Также вам может показаться, что такая тема как http://flamingokids.ru/pages/72.html никак не связана и даже не тематична. Хотя, может быть и связана. В любом случае все-таки зайдите на сайт flamingokids.ru. Тема ДЕТСКАЯ ОБУВЬ ОПТОМ ДЕШЕВО там представлена весьма широко. На том сайте можно узнать много интересного на тему ДЕТСКАЯ ОБУВЬ ОПТОМ ДЕШЕВО. Что означает вообще тема ДЕТСКАЯ ОБУВЬ ОПТОМ ДЕШЕВО, где найти ДЕТСКАЯ ОБУВЬ ОПТОМ ДЕШЕВО - про это написано на сайте flamingokids.ru. Это очень важная для многих людей тема - ДЕТСКАЯ ОБУВЬ ОПТОМ ДЕШЕВО. Спасибо сайту flamingokids.ru за информацию на тему ДЕТСКАЯ ОБУВЬ ОПТОМ ДЕШЕВО.
Однако анонимный объект не предлагает резервного копирования таких страниц. Следовательно, при первой записи страницы должно происходить ее преобразование в анонимную страницу и копирование на устройство свопинга.
Форма совместного использования страниц памяти существенно отличается от разделения анонимных страниц между родителем и его предком на основе технологии копирования при записи. В рассматриваемом варианте оба процесса обладают отдельными ссылками на структуры anon, а разделение происходит на уровне индивидуальных страниц.
14.12 показана реализация разделяемой памяти. Область, представленная единственной структурой anon_map, разделяется между всеми процессами, подключившими эту область в свое адресное пространство. Каждый процесс поддерживает собственную структуру seg для этой области, в которой хранится базовый адрес, атрибуты защиты и другая информация. Структура anon_map имеет счетчик ссылок, каждый процесс обладает ссылкой на нее. Еще одну ссылку на структуру данных, ассоциированную с областью, поддерживает подсистема IPC.
Ссылки IPC создаются при выделении разделяемой области памяти. Их освобождение происходит при принудительном удалении области (командой IPC_RMID системного вызова shmctl). Такой подход дает гарантию, что область памяти не исчезнет автоматически при возникновении ситуации, когда к ней не подключен ни один процесс.
Структура anon_map содержит ссылки на отдельные анонимные страницы. Если значение счетчика ссылок достигает нуля (то есть все процессы произвели отключение области из своих адресных пространств), ядро сначала производит освобождение всех анонимных страниц и затем удаляет массив ссылок на структуры anon и anonjnap.
Другие компоненты Пул свободных страниц
Интерпретация пула свободных страниц схожа с принятой в операционной системе BSD. Специальный процесс pagedaemon реализует алгоритм «часов с двумя стрелками» (см. раздел 13.5.3). Такой же подход был адаптирован в архитектуре VM. Однако, говоря о свободных страницах, необходимо упомянуть следующие аспекты:
♦ при первом проходе вызывается hat_pagesync() для отключения ссылки и изменения битов в структурах hat;
♦ все «грязные» страницы сбрасываются на диск операцией V0P_0PERATE, обрабатывающей все варианты кластеризации;
♦ для сброса бита корректности страниц, перемещаемых в список свободных страниц, вызывается процедура hat_pageunload();
♦ при необходимости может производиться имитация бита ссылки.
14.8. Взаимодействие с подсистемой vnode
Опубликовал katy
June 20 2015 09:58:06 ·
0 Комментариев ·
2585 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.