EMERALDS
EMERALDS (Extensible Microkernel for embedded, ReAL-time, Distributed Systems) [ZS01] – это микроядро реального времени, написанное на языке C++, которое предназначено для малых и средних по размеру встраиваемых систем. Система EMERALDS является научной разработкой Мичиганского университета (University of Michigan).
EMERALDS обеспечивает обработку многопоточных процессов. Процесс в EMERALDS является пассивной сущностью, характеризующейся защищенным адресным пространством, в котором выполняются потоки. Каждый поток имеет приоритет, присвоенный ему пользователем; на основе приоритетов ядро осуществляет планирование потоков. В ядре также обеспечивается системный вызов, позволяющий изменить приоритет потока во время выполнения. Для обеспечения эффективной защиты памяти ядро отображается в адресное пространство каждого процесса. При таком отображении переключение из приложения в ядро вызывает прерывание (TRAP), которое переключает центральный процессор из приложения в режим ядра, и совершается переход на соответствующий адрес внутри того же адресного пространства.
Ядро обеспечивает такие сервисы, как семафоры, таймеры, управление памятью и пр. В качестве механизма взаимодействия процессов EMERALDS использует обмен сообщениями через почтовые ящики как для внутрипроцессного, так и для межпроцессного взаимодействия. Проблема инверсии приоритетов решается с помощью введения наследования приоритетов.