Опубликован: 24.04.2009 | Уровень: специалист | Доступ: платный
Лекция 6:

Архитектура встраиваемой ОС реального времени – CE 6.0

Базовые службы операционной системы (OS)

Базовые службы операционной системы (ОС) состоят из ядра CE и других средств, обычных для всех разработок ОС CE. Базовые службы ОС обеспечивают низкоуровневые задачи, такие как управление процессом, потоком и памятью. Базовые драйверы устройств также являются частью базовых служб ОС CE.

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

Приложения управляют специальными условиями во время выполнения. Например, они могут обрабатывать ошибки, записывать в журнал события, и обрабатывать исключения.

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

Файловые системы

CE поддерживает два вида файловых систем: файловые системы, которые управляются драйверами файловой системы, и зарегистрированные файловые системы.

Так как управляемые FSD файловые системы являются предпочтительным типом файловой системы, CE включает драйверы файловой системы (FSD - File System Drivers) для ряда файловых систем. Кроме того, разработчики встраиваемых систем могут создавать и регистрировать собственные файловые системы.

Независимо от типа памяти, все файловые системы доступны через интерфейс программирования приложений (API) файловой системы Microsoft Win32.

Драйверы зарегистрированной файловой системы включают Release-Directory File System (RELFSD), Object Store (RAM) File System, и ROM File System.

Хранилище объектов в Windows Embedded CE предоставляет постоянное хранилище для приложений и связанных с ними данных, даже когда основной источник питания недоступен, при условии, что имеется резервный источник питания. Одна или несколько микросхем памяти, которые обычно являются микросхемами энергонезависимой RAM, составляют физическое хранилище объектов.

Хотя файловые системы, базы данных и системный реестр совместно используют одну кучу памяти, они не обязательно располагаются физически в хранилище объектов. Они могут располагаться в ROM, на отдельно установленных системах, или на внешнем устройстве, таком как устройство флэш-памяти. Данные создаются и извлекаются согласно типу памяти, независимо от реального устройства хранения.

Операционная система использует хранилище объектов для выполнения следующих задач:

  • Управление стеком и кучей памяти
  • Сжатие и декомпрессия файлов в случае необходимости
  • Прозрачная интеграция приложений на основе ROM и данных на базе RAM

Файловая система и реестр будут рассмотрены более подробно. Таблица 6.2 описывает объекты файловых систем и каталога управления хранилищем, которые можно выбирать для ОС при использовании инструмента Platform Builder (Сборщик платформы) для генерации нового ядра.

Таблица 6.2. Файловые системы и каталог управления хранилищем
Имя объекта каталога Описание
Compression Интерфейс прикладного программирования (API), который сжимает данные в файловых системах RAM и ROM, а также тома баз данных.
Database Support API, который обеспечивает поддержку встроенной базы данных CEDB.
Bit-based Средство, которое помогает определить, какие изменения произошли в базе данных или файловой системе RAM на устройстве и поэтому должны реплицироваться на рабочем столе. Эта модель использует четыре бита на объект для репликации данных.
RAM and ROM File System Драйвер файловой системы, способный читать данные из файловой системы ROM и файловой системы RAM в хранилище объектов.
ROM-only File System Драйвер файловой системы, способный читать данные из файловой системы ROM.
Hive-based Registry Система реестра, которая хранит данные в файлах, или ульях, которые могут храниться в любой файловой системе.
RAM-based Registry Система, которая хранит все данные реестра в хранилище объектов.
Storage Manager Storage Manager отвечает за все объекты внешнего хранилища, такие как файловые системы, фильтры файловых систем, и разбиения.
Binary Rom Image File System Объект каталога, который используется для загрузки части образа ОС из среды постоянного хранения в RAM для выполнения. Этот объект каталога использует вызов страниц по требованию для загрузки дополнительных модулей по мере необходимости.
CD/UDFS File System Драйвер файловой системы, который поддерживает как Compact Disc File System (CDFS), так и Universal Disc File System (UDFS), и читает кампакт-диски (CD), цифровые видео-диски (DVD), и CD-ROM.
EDB Database Engine API, который предоставляет улучшенные функции баз данных, включая поддержку транзакций, доступ нескольких пользователей, несколько порядков сортировки, свойства ключей и базы данных.
FAT File System Драйвер файловой системы, который поддерживает файловую систему FAT (таблица размещения файлов).
Extended FAT File System Драйвер файловой системы, который поддерживает файловую систему Extended FAT.
Partition Driver Драйвер, который интерпретирует разбиения на устройстве хранения для Partition Manager.
Storage Manager Control Panel Applet Управляющая панель приложения, которая позволяет пользователю манипулировать устройствами хранения.
Transaction-safe FAT File System (TFAT) Безопасная для транзакций файловая система FAT, которая гарантирует, что таблица размещения файлов не повреждается во время энергетического цикла.
System Password API, который предоставляет поддержку для аутентификации на устройстве для предотвращения неавторизованного доступа.
Release Directory File System Функции, которые предоставляют поддержку для Release Directory File System
Silent FATFS UI Создает файл Fatutil.dll для устройства без компонентов графического интерфейса пользователя (GUI).

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

Файловая система RAM и ROM предоставляет хранение файлов в хранилище объектов, а также доступ к ROM. Хранилище объектов является корнем (root) файловой системы, и все данные ниже корня хранятся в хранилище объектов, с исключением для внешних файловых систем, которые подключаются как каталоги ниже корня. Данные в ROM доступны через каталог Windows. Файловая система RAM и ROM наиболее полезна на целевых устройствах, которые обеспечивают постоянное питание RAM, так как хранилище объектов будет потеряно, если RAM не обновляется.

Файловая система только в ROM не позволяет приложениям размещать файлы в хранилище объектов. Данные в ROM доступны через каталог Windows, а внешние файловые системы также подключаются как каталоги ниже корня. Кроме того, для файловой системы только в ROM имеется возможность выбрать, чтобы внешняя файловая система помещалась в корне файловой системы. Если файловая система подключается как корень, все данные ниже корневого каталога хранятся в этой файловой системе, за исключением других внешних файловых систем.

Графика, работа с окнами, и подсистема событий (GWES)

CE объединяет библиотеки интерфейса прикладного программирования (API) Win32, интерфейса пользователя (UI), и интерфейса графических устройств (GDI) в модуль графики, работы с окнами и подсистемы событий GWES (Graphics, Windowing, and Events Subsystem). GWES является интерфейсом между пользователем, приложением, и операционной системой (ОС).

GWES поддерживает все окна, диалоговые боксы, элементы управления, меню, и ресурсы, которые составляют интерфейс пользователя (UI) CE, который позволяет пользователям управлять приложениями. GWES предоставляет также пользователю информацию в форме растровых изображений, курсоров, текста и иконок.

Даже устройства на основе CE, которые не имеют графического UI, используют базовые функции GWES управления окнами и сообщениями и управления питанием.

Процессы и потоки

Все приложения в CE состоят из процесса и одного или нескольких потоков:

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

Поток является независимой частью процесса и является базовой единицей, для которой ОС выделяет время процессора.

  • Потоки позволяют приложению выполнять более одной задачи в данный момент, даже хотя приложения не могут выполнять более одного потока в данный момент времени.
  • Поток может выполнять любую часть кода процесса, включая части, которые выполняются другим потоком.
  • Хотя один поток определен как основной поток процесса, процесс может создавать также неопределенной число дополнительных потоков.
  • Доступные системные ресурсы ограничивают число потоков.
  • CE предоставляет 256 уровней приоритета, которые можно задавать на потоке.

Для задания уровней приоритета CE использует функции CeSetThreadPriority и CeGetThreadPriority. Функция CeSetThreadPriority задает приоритет для указанного потока. Функция CeGetThreadPriority возвращает 0 (ноль) как самый высокий приоритет, и 255, как самый низкий приоритет.

Так как CE поддерживает вытесняющую мультизадачность, то это создает эффект одновременного выполнения процессом нескольких потоков. Когда процесс имеет более одного выполняющегося потока, ОС быстро переключается с одного потока на другой, так что кажется, что потоки выполняются одновременно.

Поток является траекторией выполнения в процессе. Каждый раз, когда ОС создает процесс, она создает, по крайней мере, один поток. Цель создания потока состоит в том, чтобы использовать как можно больше времени ЦП. Например, во многих приложениях полезно создавать отдельный поток для обработки заданий печати, так чтобы пользователь мог продолжать использовать приложение во время печати.

Каждый поток совместно использует все ресурсы процесса, включая его адресное пространство. Каждый поток имеет стек. Редактор связей задает размер стека для всех потоков, которые создаются в процессе ( /STACK ). Отдельный поток может иметь свой собственный размер стека, вызывая CreateThread и используя параметр STACK_SIZE_PARAM_IS_ A_RESERVATION.

Поток содержит также состояние регистров ЦП, называемое контекстом, и запись в списке выполнения системного планировщика.

Можно использовать функцию GetThreadContext для извлечения контекста определенного потока, и функцию SetThreadContext для задания контекста определенного потока.

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

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

Потоки могут быть в одном из следующих состояний:

  1. Выполняющийся
  2. Приостановленный
  3. Спящий
  4. Блокированный
  5. Завершенный

Когда все потоки находятся в блокированном состоянии, CE переходит в режим ожидания, который останавливает выполнение инструкций ЦП и потребление энергии на высоких уровнях. Из режима ожидания можно переключиться в режим приостановленный, если отсутствует активность пользователя. Приостановленный режим может контролироваться OEM и приложениями. Для сохранения энергии используйте объекты синхронизации для блокирования ожидающих потоков вместо создания потока, который опрашивает статус, такого как функция PeekMessage.

Бахтиёр Бутаев
Бахтиёр Бутаев
Таджикистан, Душанбе, Таджикский Технический Университет (ТТУ), 2013
Ярославй Грива
Ярославй Грива
Россия, г. Санкт-Петербург