Валерий Егоров

Avatar1

Валерий Егоров, заместитель директора НТП «Криптософт».
Закончил в 1996 году Пензенский госуниверситет, в 2001 году получил степень кандидата технических наук. С 1994 года занимается исследованиями в области системного ПО и защиты информации, с 2005 года работает на предприятии «Криптософт». Руководитель направления и евангелист операционной системы QP ОС.


Особенности функционирования ядра операционной системы QP ОС на различных аппаратных платформах

Операционная система QP ОС функционирует на различных аппаратных платформах. В настоящее время это платформы Intel x86 и x64, ARMv7, ARMv8. Для каждой из перечисленных платформ в операционной системе QP ОС разработан слой абстрагирования от аппаратуры (HAL), позволяющий осуществлять реализацию основного функционала системы без привязки к аппаратным особенностям используемой платформы. Также QP ОС функционирует на компьютерах Эльбрус в режиме бинарной трансляции (совместимости с процессорами Intel).

Помимо операционной системы QP ОС НТП «Криптософт» также обладает опытом проектирования программных систем на базе компьютеров с процессорами «Комдив-64», являющимися развитием архитектуры MIPS-64. На сегодняшний день эти процессоры научились поддерживать режим Little-Endian, что открывает новые перспективы их внедрения.

Интересной особенностью QP ОС является отсутствие привязки к аппаратной платформе диспетчера задач операционной системы. Менеджер памяти в составе QP ОС разделён на две примерно равные части, одна из которых привязана к аппаратной платформе, а другая нет.

При разработке системы мы старались соблюсти максимально возможное совпадение базовых характеристик, таких как размер одной страницы памяти, длительность единичного кванта, базовые конфигурационные структуры в составе системы. Так система всегда работает в режиме Little-Endian, размер страницы памяти составляет 4 кб для ядра и всех 32-разрядных процессов в системе, длительность единичного кванта равна 10 мс, а нить описывается структурой SThreadControl с практически идентичным набором параметров. Это позволяет программисту легко портировать драйверы между платформами и разрабатывать прикладные программы без привязки к аппаратуре.

Перечислим базовые компоненты QP ОС, входящие в слой абстрагирования от аппаратуры:

  • Минимальный набор функций POSIX (такие как memset, memcpy, memcmp и др.);
  • Функции атомарного чтения и записи (LockReadByte, LockWriteWord и др.);
  • Функции блокированной синхронизации (такие как IntelockedExchange, InterlockedCompareExchange, IntelockedAnd, InterlockedOr и др.);
  • Управление отображением физической памяти на виртуальное адресное пространство;
  • Механизмы переключения контекстов нитей и стеков при возникновении прерываний и переключении задач;
  • Механизмы переключения из ядра в прикладной режим и обратно, а также вызов интерфейсов системы;
  • Механизмы синхронизации процессорных ядер.

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

Однако, и для системного программиста, и для программиста прикладных программ для QP ОС существуют определённые различия, которые необходимо упомянуть.

Первым и несомненным различием для разных аппаратных платформ является структура контекста нити SContext, в которую входит набор значений регистров процессора, изменяемых при переключении нитей. Помимо регистров общего назначения в неё входят также регистры для работы с плавающей точкой и потоковых вычислений, таких как SSE и SIMD. При обработке исключений программист должен отдельно кодировать механизмы, которые непосредственно изменяют значения таких регистров.

Второе различие программирования аппаратных платформ относится к программированию барьеров. В том случае, если программист использует объекты синхронизации, предоставляемые операционной системой, и не взаимодействует напрямую с аппаратурой компьютера, он может не задумываться о барьерах. В противном случае это делать необходимо. Однако барьеры различаются между платформами. Так для платформы Intel имеются барьер чтения, барьер записи и барьер чтения-записи, а для платформ ARM обычно применяются три основных барьера: барьер данных, барьер синхронизации и барьер исполнения. Без понимания принципов работы барьеров трудно обойтись при работе с аппаратурой.

Третье различие между аппаратными платформами относится к механизмам кэширования памяти, работе с памятью различных видов кэширования, а также программного сброса кэш. Не будем углубляться здесь в особенности кэширования памяти каждой аппаратной платформы, – это задача системного программиста, работающего напрямую с аппаратурой компьютера. Однако, необходимо отметить, что в QP ОС есть механизм, облегчающий системному программисту жизнь при необходимости сброса буфера данных в кэш. Это функция MemResetCacheRegion(), которая позволяет синхронизировать кэш для памяти, используемой при работе с устройствами. У неё два параметра: адрес кэшируемой памяти и размер буфера. Функцию можно вызывать только при запрете переключения процессоров (на уровне аппаратного приоритета 2). Она производит сброс кэш-памяти в границах кэш-линий, в которые попадает буфер и актуализирует содержимое памяти. Появление в системе данной функции значительно упростило системным программистам взаимодействие с устройствами в составе компьютера, поскольку больше не нужно кодировать эти действия самостоятельно. Функция MemResetCacheRegion() работает на всех аппаратных платформах, поддерживаемых операционной системой QP ОС.

Организаторы

При поддержке