memory_object_data_request() для передачи запроса серверу
Ранее было показано, что произойдет в том случае, если задача Н1 попытается произвести запись страницы.
Также вам может показаться, что такая тема как http://www.tonyperotti.ru/catalog/362/ никак не связана и даже не тематична. Хотя, может быть и связана. В любом случае все-таки зайдите на сайт tonyperotti.ru. Тема кожаный кошелек мужской купить там представлена весьма широко. На том сайте можно узнать много интересного на тему кожаный кошелек мужской купить. Что означает вообще тема кожаный кошелек мужской купить, где найти кожаный кошелек мужской купить - про это написано на сайте tonyperotti.ru. Это очень важная для многих людей тема - кожаный кошелек мужской купить. Спасибо сайту tonyperotti.ru за информацию на тему кожаный кошелек мужской купить.
1. Клиент запрашивает порт объекта памяти от сервера.
2. Клиент вызывает vm_map для отображения объекта в своем адресном пространстве.
3. Ядро вызывает memory_object_init() для посылки сообщения об инициализации нового объекта серверу. При этом сервер получает право на отправку в управляющий порт, прослушиваемый ядром.
4. Сервер вызывает memory_object_set_attribute() с целью уведомления ядра о готовности объекта.
5. Ядро завершает выполнение системного вызова vm_map и передает управление клиенту.
Пятое действие в принципе может производиться и без ожидания завершения предыдущего, однако при этом клиент не сможет обращаться к данным (все попытки доступа будут заблокированы) до тех пор, пока объект не будет готов.
1. Задача Н1 становится причиной возникновения исключения (ошибки записи), что приводит к загрузке ядром обработчика ошибки.
2. Ядро вызывает memory_object_data_request() для передачи запроса серверу на создание копии страницы, доступной в режиме записи.
3. Сервер возвращает страницу через вызов memory_object_data_provided().
4. Ядро вносит изменения в таблицы преобразования адресов задачи Н1 и возобновляет ее выполнение.
После этого задача Н1 может производить изменения страницы, при этом сервер еще не обладает информацией об вносимых в страницу изменениях. Представим, что произойдет, если в этот момент времени задача Н2 осуществит чтение страницы.
Очевидно, что описанное взаимодействие происходит весьма медленно. Если две задачи часто изменяют страницу, каждой из них придется повторять вышеописанные итерации, что приведет к размножению сообщений IPC и необходимости повторного копирования страницы от одного узла сети другому. Большинство описываемых действий являются следствием проблемы необходимости синхронизации данных, передаваемых через сеть. Следует заметить, что каждое исключение приводит к двойному перемещению страницы по сети: сначала от клиента серверу и затем от сервера клиенту, ставшему причиной исключения. Нас может устроить сокращение операций копирова ния до одной, если сервер попросит клиента отправить страницу другому клиенту напрямую. Однако такой подход разрушает модульность структуры и влечет усложнение взаимодействий, если число клиентов выше двух. Очевидно, что размещение сервера на одной из клиентских машин поможет избавиться от второй операции копирования и уменьшит трафик сообщений в сети.
Несмотря на перечисленные недостатки, пример показывает, как тесная взаимоувязка технологии обмена сообщениями и подсистемы управления памятью позволяет создавать гибкие и мощные приложения. Еще одной иллюстрацией внешнего менеджера памяти является задача, описанная в [19]. Она управляет выгружаемыми страницами памяти, используемыми приложениями, самостоятельно осуществляющими сбор мусора. Менеджер получает информацию от клиентских задач независимо от того, какая из страниц оказалась выгруженной, и уменьшает число замен страниц путем упреждающего сброса таких страниц. Это позволяет высвободить дополнительный объем памяти для использования его системой.
Опубликовал katy
June 20 2015 18:42:51 ·
0 Комментариев ·
2988 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.