Для обращения к данным объекта памяти прикладная задача должна сначала получить права на отправку информации в порт, представляющий данный объект. Эти права запрашиваются у менеджера объекта, так как только владельцу порта разрешена раздача подобных полномочий.
Также вам может показаться, что такая тема как http://kinoken.ru/ никак не связана и даже не тематична. Хотя, может быть и связана. В любом случае все-таки зайдите на сайт kinoken.ru. Тема кино в Хабаровске там представлена весьма широко. На том сайте можно узнать много интересного на тему кино в Хабаровске. Что означает вообще тема кино в Хабаровске, где найти кино в Хабаровске - про это написано на сайте kinoken.ru. Это очень важная для многих людей тема - кино в Хабаровске. Спасибо сайту kinoken.ru за информацию на тему кино в Хабаровске.
Процесс получения прав выходит за рамки описания подсистемы VM и может требовать дополнительного взаимодействия между задачей и менеджером (а также и другими компонентами системы). Например, менеджер vnode1 (vnode pager) отвечает за управление объектами файловой системы и предоставляет возможность прикладным задачам открывать файлы, используя их имена. При открытии файла менеджер возвращает право на отправку в порт, представляющий этот файл.
После получения порта (термин «получение порта» означает, что задаче предоставляется право на отправку данных в порт) задача может отобразить объект памяти в своем адресном пространстве при помощи системного вызова
vmjnap (pager_task, base_addr, size, mask, flag, memory_object_port, offset, copy. cur_prot, max_prot, inheritance):
Этот вызов аналогичен функции mmap системы SVR4. Вызов vm_map производит отображение байтов диапазона [offset, offset+size) объекта памяти в диапазон адресного пространства [base_addr, base_addr+size) вызывающей его задачи. Параметр flag указывает ядру на разрешение отображать объект по другому базовому адресу. Функция vm_map возвращает адрес, по которому объект был в результате отображен.
При первичной настройке отображения объекта ядро создает для него два дополнительных порта: порт управления (control port), используемый менеджером для создания запросов управления кэшем ядру, и порт имени (name port), идентифицирующий объект для других задач, которые могут запросить информацию об объекте через вызов vm_regions. Владельцем этих портов является ядро, которое обладает правами как на отправку, так и на получение данных из них. Инициализация объекта памяти осуществляется вызовом
memory jDbject_init(memory_object_port, control_port, name_port, page_size);
Это приводит к получению менеджером памяти прав на отправку запросов в порты запросов и имени. Результат работы описанного набора операций показан на рис 15.8.
Интерфейс взаимодействия ядра и менеджера памяти
После настройки каналов взаимодействия ядро и менеджер памяти могут использовать их для посылки запросов друг другу. Каждый запрос является удаленным вызовом процедуры и реализован в виде пересылки сообщения, содержащего параметры запроса, в определенный порт. Ядро отправляет сообщения менеджеру через порт объекта памяти, в то время как менеджер использует для передачи посланий ядру свой порт ответа. Для обмена сообщениями в системе Mach предусмотрен набор функций высокого уровня. Ниже перечислены некоторые функции, позволяющие ядру осуществлять взаимодействие с менеджером памяти:
memory_object_data_request (memory_object_port. contro1_port, offset, length. desired_access):
memory_object_data_write (memory_object_port, control_port, offset, data, data_ count);
memory_object_data_unlock (memory_object_port, control_port, offset, length, desired access):
692 Глава 15. Дополнительные сведения об управлении памятью
Ядро предоставляет интерфейс взаимодействия, используемый менеджером памяти для управления кэшем. Для этой цели используются следующие функции:
memory_object_data_provided (control_port, offset, data. data_count, lock_value); memory_object_lock_request (control_port, offset, size, should_clean, should_ flush, lock_value, reply_port):
memory_object_set_attributes (control_port, object_ready. may_cache_object. copy_strategy):
memory_object_data_unavailable (control_port, offset, size):
Результатом выполнения каждой из перечисленных функций является создание асинхронного сообщения. Если сообщение инициируется ядром, то менеджер памяти реагирует на него посредством создания ответного послания, используя функции интерфейса с ядром. В следующем подразделе будут показаны некоторые аспекты взаимодействия менеджера памяти с ядром системы.
Опубликовал katy
June 20 2015 18:37:30 ·
0 Комментариев ·
2697 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.