В настоящее время ОС USIX реализована на однопроцессорных и многопроцессорных SМР-системах с архитектурой lntel.
К основным отличительным особенностям ОС USIX относятся:
· полностью прерываемое ядро;
· поддержка многопроцессорности;
· устойчивая файловая система;
· ядро небольшого размера;
· динамически загружаемые драйверы внешних устройств;
· динамически выделяемые буферы для ввода-вывода и выгрузки процессов;
· реализация процессов-серверов с возможностью динамического погружения в адресное пространство ядра;
· средства обеспечения безопасности уровня В3;
· развитые средства поддержки реального времени;
· открытость и переносимость.
Рассмотрим принципы построения USIX. В операционной системе USIX основными понятиями являются:
Процесс - единица потребления ресурсов.
Порт - точка поступления сообщений и их идентификации.
Объект памяти - связанное множество страниц оперативной или внешней памяти, объединенных общими характеристиками.
Сервер - вспомогательный процесс, реализующий одну из функций операционной системы (например, файловый сервер).
Семафор - двоичный семафор, обеспечивающий синхронизацию доступа к общим ресурсам.
Спинлок - точка синхронизации многопроцессорного доступа к ресурсу.Если ресурс занят, процессор, как правило, ожидает его освобождения.
Регион - физические страницы объекта памяти, которые могут находиться на диске, в оперативной памяти или в специально резервируемой на диске области выгрузки.
Сегмент - виртуальное окно в адресном пространстве процесса, отображающее какой-либо регион.
Ядро USIX выполняет только самые необходимые функции: управление памятью; планирование и взаимодействие процессов; обработку системных вызовов; службу времени. Драйверы, файловая система и другие функции системы реализованы в виде специальных процессов-серверов.
Ядро USIX поддерживает два интерфейса:
1. Пользовательский интерфейс (POSIX/SVID - System V Interface Definition), реализованный на уровне стандартных системных функций, соответствующих стандартам SVID и POSIX.
2. Внутренний интерфейс для взаимодействия ядра с системными процессами, осуществляемый с помощью специальных системных вызовов (usixcalls) (прежде всего используется драйверами и серверами) и, дополнительно, с помощью механизма управления сообшениями и объектами памяти.
Сообщения являются средством обмена данными между системными компонентами ядра, а также средством синхронизации такого обмена. Сообщения также обеспечивают коммуникации между пользовательскими задачами и пользователя с ядром. Сообщения могут приниматься только из портов и посылаться в порты.
Для управления общими структурами данных используется системная структура - объект памяти, который содержит информацию о физических характеристиках (физический адрес и размер объекта); об отображении и защите объекта памяти; об идентификации объекта памяти; о синхронизации доступа, а также спецификацию о создании и удалении объекта памяти.
Адресное пространство процесса включает совокупность объектов памяти, к которым программа может иметь доступ.
Ядро USIX поддерживает следующие типы объектов памяти:
· текст программы;
· инициализированные данные;
· неинициализированные данные;
· модифицированные данные;
· стек;
· буфер FIFO (First In, First Out);
· буфер сообщений
· Открытый файл
· Разделяемые данные
· Разделяемые библиотеки и тд
Идентификация объектов памяти поддерживается через cтруктурущ «регион» (region). Регион определяет место физического размещения объекта памяти: оперативная память, файл на на диске, область выгрузки.Когда создается объект памяти, структура region заполняется соответствующими данными.Каждый процесс имеет возможность отобразить необходимый объект памяти (полностью или частично) в свое адресное пространство, установив виртуальный адрес и смещение от начала региона. Такое отображение устанавливается с помощью описания сегмента памяти. При этом определяются также права процесса относительно объекта памяти. Описания сегментов памяти индивидуальны для каждого процесса и управляются ядром. Отображение объекта памяти может выполняться ядром или пользователем. Для синхронизации доступа к объекту памяти применяются различные механизмы синхронизации. Так, в случае работы с разделяемой памятью используется механизм семафоров, а для синхронизации доступа к общим внутренним структурам данных используется механизм спинлоков.
Концепция объекта памяти имеет следующие преимущества:
· Буфер;
· оперативная память используется как общий ресурс и назначается объектам памяти только на определенный период времени;
· сервер файловой системы не используется при операциях ввода-вывода. Его главное назначение - управление дисковым пространством и его распределение для вновь создаваемых файлов;
упрощается алгоритм работы драйвера диска, основной функцией которого остается обмен между оперативной памятью и диском.
Процессы и ядро USIX
Процесс – единица планируемой работы в USIX – связан с выполнением отдельной программы в адресном пространстве, которое, будучи разделенным на страницы, является виртуальным. Ядро системы хранит содержимое адресного пространства в различных объектах памяти.
· Пользовательский процесс запрашивает системный сервис через системные вызовы. Ядро выполняет эти запросы для вызываемых процессов.
· Некоторые исключительные действия процесса вызывают исключительные ситуации, которые управляются ядром от имени процесса.
· Ядро управляет аппаратными прерываниями от внешних устройств как глобальные события.
Пользовательские функции выполняются в режиме пользователя, а большинство системных функций – в режиме ядра.
В адресное пространство процесса включены две области – пользовательская и системная. В системной части содержатся функции и переменные ядра, доступные процессу. Однако, при обращении процесса к системной части система переводится в режим ядра, которое выполняет операции от имени процесса. По окончании система переводится в пользовательский режим, и управление возвращается процессу.
Каждый процесс характеризуется своим контекстом:
· Адресное пространство процесса – выполняемый код, данные, стек, регионы разделяемой памяти и др.
· Управляющая информация – приоритет и ресурсы процесса, стек ядра, отображение адресного пространства, идентификатор процесса.
· Аппаратный контекст – содержание общих и специальных регистров процессора.
Процессы имеют четкую иерархию: каждый процесс имеет одного родителя и может иметь несколько порожденных.
В любой момент времени процессор может находиться в одном из состояний:
Переход осуществляется по различным событиям. При переключении процессов необходимо переключать стеки, в которых хранится текущее состояние процесса.
Рассмотрим основные архитектурные особенности ядра USIX.
Планирование процессов.
Планировщик должен определять, какой процесс должен выполняться следующим и как долго. Как правило, промежуток времени (квант), выделенный процессу, небольшой.
Аспекты. Определение правил, устанавливающих, какой процесс будет выполняться следующим и когда переключиться на другой процесс. Определение структуры данных и алгоритмов, реализующих правила управления процессами.
Служба времени.
Таймер используется для ведения системного времени и управления таймерной очередью. Ядро распознает прерывания по таймеру в трех фазах – процесса, пользователя и планировщика. Если таймер прерывает пользовательский процесс, то после обработки откорректированные значения завершения кванта процесса проверяются. Если квант времени, выделенный процессу, исчерпан, то осуществляется сохранение процесса и переход в фазу планировщика.