научная статья по теме СПОСОБ ПОДДЕРЖКИ СРЕД ВЫПОЛНЕНИЯ С ОДНОВРЕМЕННЫМ ОБСЛУЖИВАНИЕМ СО СТОРОНЫ МНОЖЕСТВА МЕНЕДЖЕРОВ ПАМЯТИ ДЛЯ ОПЕРАЦИОННЫХ СИСТЕМ НА БАЗЕ МИКРОЯДРА ВТОРОГО Математика

Текст научной статьи на тему «СПОСОБ ПОДДЕРЖКИ СРЕД ВЫПОЛНЕНИЯ С ОДНОВРЕМЕННЫМ ОБСЛУЖИВАНИЕМ СО СТОРОНЫ МНОЖЕСТВА МЕНЕДЖЕРОВ ПАМЯТИ ДЛЯ ОПЕРАЦИОННЫХ СИСТЕМ НА БАЗЕ МИКРОЯДРА ВТОРОГО»

ПРОГРАММИРОВАНИЕ, 2014, No 6, с. 62-76

ОПЕРАЦИОННЫЕ СИСТЕМЫ

У V 681.32

СПОСОБ ПОДДЕРЖКИ СРЕД ВЫПОЛНЕНИЯ С ОДНОВРЕМЕННЫМ ОБСЛУЖИВАНИЕМ СО СТОРОНЫ МНОЖЕСТВА МЕНЕДЖЕРОВ ПАМЯТИ ДЛЯ ОПЕРАЦИОННЫХ СИСТЕМ НА БАЗЕ МИКРОЯДРА ВТОРОГО

ПОКОЛЕНИЯ

© 2014 г. Е.И. Клименков

Белорусский государственный университет информатики и радиоэлектроники

220013 Минск, ул. П. Бровки, 6 E-mail: klimenkov@bsuir.by, Evgeny.Klimenkov@gmail.com Поступила в редакцию 01.01.2014

Подкачка страниц — один из важнейших механизмов виртуальной памяти, используемый развитыми операционными системами для создания иллюзии ее бесконечности. Однако первые и существующие на данный момент микроядра второго поколения предоставляют лишь ограниченную, негибкую и неестественную поддержку этого механизма. Используемые в них решения реализуются на уровне систем времени выполнения и сопряжены с существенными накладными расходами. Эти расходы обусловлены большим количеством переходов между различными режимами процессора и переключений контекстов потоков. Ограниченная поддержка виртуальной памяти операционными системами на базе микроядра второго поколения существенно уменьшает привлекательность их применения. Причина этого заключается в том, что в компьютерных системах, используемых на практике, процессы обычно пользуются услугами множества менеджеров памяти одновременно. В данной статье предлагается новый подход, направленный на улучшение поддержки виртуальной памяти для операционных систем на базе микроядра второго поколения. Он основан на реализации средств явной внутриядерной поддержки сред выполнения с одновременным обслуживанием со стороны множества менеджеров памяти. В соответствии с ним, виртуальное адресное пространство разделяется на множество областей, каждой из которых может быть назначен свой менеджер памяти. Такое разделение делает возможной эффективную и простую диспетчеризацию отказов доступа к страницам памяти. В статье предложены средства для микроядер второго поколения, поддерживающие среды выполнения с одновременным обслуживанием со стороны множества менеджеров памяти, отличающиеся повышенной производительностью и гибкостью. Приведено сравнение предлагаемого решения с известным решением L4 + L4Re по критерию стоимости обслуживания отказа доступа к странице памяти. Предлагаемое решение уменьшает на треть накладные расходы на переходы между режимами процессора и на переключения контекстов потоков по сравнению с L4 + L4Re, подходом, используемым в реализации Fiasco.ОС, операционной системы построенной на базе современной версии микроядра второго поколения L4/Fiasco.

1. ВВЕДЕНИЕ

В данной статье предлагается подход к эффективной организации средств поддержки сред выполнения с одновременным обслуживанием со стороны множества менеджеров памяти, пред-

назначенный для операционных систем на базе микроядра второго поколения.

Вносимые изменения в подсистему управления виртуальной памятью в микроядрах второго поколения открывают возможность создания сред выполнения с более эффективной обработ-

кой отказов доступа к страницам памяти.

Безопасное и эффективное управление памятью является фундаментальным требованием для микроядер второго поколения. В качестве подтверждающего этот тезис примера может быть приведен отказ от модели управления памятью, основанной на архитектуре рекурсивного построения адресных пространств, в которой, при исследовании микроядра L4, были обнаружены существенные накладные расходы памяти, расцененные как достаточно весомый недостаток для отказа от этой модели [1].

Обработка отказов доступа к страницам памяти в пользовательском режиме была первоначально предложена в рамках проекта Mach [2], [3]. Сущность данного подхода заключается в создании возможности для выполнения служб обработки отказов доступа к страницам памяти в виде процессов пользовательского режима. За счет этого решения из ядра операционной системы выносится большая часть функциональности, связанной с управлением памятью.

Традиционный подход к поддержке подкачки в семействе микроядер L4 является ограниченным и неэффективным для организации сред выполнения с одновременным обслуживанием со стороны множества менеджеров памяти. Однако такие среды выполнения активно используются приложениями в широко распространенных, развитых прикладных компьютерных системах. Недостаточная поддержка сред выполнения с одновременным обслуживанием со стороны множества менеджеров памяти ограничивает привлекательность операционных систем на базе микроядра второго поколения для реализаций программного окружения прикладных компьютерных систем. Кроме того недостаточная поддержка подкачки выглядит несоответствующей реальному положению дел в области создания вычислительных систем. За долгое время эксплуатации и исследований повсеместно используемых операционных систем на базе монолитного ядра был накоплен значительный опыт. Этот опыт показывает, что типичные приложения, выполняющиеся в таких системах, в большинстве случаев одновременно обслуживаются множеством подсистем управления памятью. Например, процессы, выполняющиеся в среде операционных систем Windows [4] и Linux [5],

пользуются множеством возможностей, связанных с управлением памятью и предоставляемых им со стороны операционной системы. К таким возможностям относятся: автоматическое увеличение/уменьшение размера стека, динамически загружаемые модули, анонимная память, подкачка памяти, совместно используемая память, отображение файлов в память и т.д. Кроме того некоторые специализированные приложения могут получать преимущества за счет использования специальных средств управления памятью наряду с использованием их традиционных аналогов. Например, они могут добиваться повышения производительности за счет использования SmartMap-подобных [6] средств управления памятью, или получать дополнительные гарантии надежности и безопасности за счет использования InkTag-подобных [7] или Gateway-подобных [8] средств управления памятью.

Среды выполнения с одновременным обслуживанием со стороны множества менеджеров памяти широко распространены, но существующие микроядра второго поколения имеют ограниченную поддержку таких сред. Изначальный подход, принятый в семействе микроядер L4 [9], заключается в необязательном назначении ровно одного менеджера памяти для каждого выполняющегося в системе потока. Этот менеджер памяти отвечает за обработку всех отказов доступа к страницам памяти, генерируемых потоками, к которым он прикреплен. Такой же подход сохраняется в последующих микроядрах второго поколения, таких как seL4 [10]. Современная версия микроядра L4 (Fiasco.ОС) [11] предоставляет сложную поддержку сред выполнения с одновременным обслуживанием со стороны множества менеджеров памяти путем введения дополнительного уровня абстракций — преобразователя областей. Данное решение было реализовано на уровне системы времени выполнения L4Re [12], разработанной специально для микроядра L4 в Дрезденском техническом университете. Другими словами, решение L4R,e является попыткой преодолеть ограничения, налагаемые архитектурой ядра с поддержкой сред выполнения с только одним менеджером памяти. Несмотря на то, что ядро является естественным местом для реализации средств поддержки сред выполнения с одновременным обслуживанием со

стороны множества менеджеров памяти, в рамках проекта Fiasco.ОС, такая поддержка была реализована на уровне системы времени выполнения. При этом в ядре такая поддержка может быть реализована эффективным образом и только с незначительным нарушением принципа минимализма.

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

1. Поток генерирует отказ доступа к странице памяти.

2. Процессор прерывает поток, сгенерировавший отказ, и передает управление микрояд-pv L4.

3. L4 обращается к внутриядерной структу-

ре данных, связанной с потоком, сгенерировавшим отказ, чтобы определить, какой поток является для него менеджером памяти. Этот поток будет являться преобразователем областей для процессов, выполняющихся в среде I. П!с.

4. 1.1 приостанавливает выполнение потока, сгенерировавшего отказ, и отправляет сообщение с описанием отказа доступа к странице памяти преобразователю областей.

5. Преобразователь областей просматривает таблицу областей, чтобы определить идентификатор потока фактического менеджера памяти. При этом он использует адрес, при обращении к которому был сгенерирован отказ, в качестве ключа поиска. В результате определяется поток, ответственный за действительную обработку отказа доступа к данному адресу в данном виртуальном адресном пространстве.

6. Преобразователь областей "отражает" (пересылает) сообщение об отказе доступа к странице памят

Для дальнейшего прочтения статьи необходимо приобрести полный текст. Статьи высылаются в формате PDF на указанную при оплате почту. Время доставки составляет менее 10 минут. Стоимость одной статьи — 150 рублей.

Показать целиком