Современная электроника №9/2023

СОВРЕМЕННЫЕ ТЕХНОЛОГИИ 9 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА • № 9 / 2023 младшим установленным битам в Map1 и Map2: Idx SchedQueue max = Idx map1 max  BitWidth int + + Idx map2 max Для определения наименьшего уста - новленного бита используется про - цессорная инструкция CTZ ( Count Trailing Zeroes ), реализованная в слое HW, считающая число нулевых битов в регистре после последнего единич - ного . Таким образом , планирование выполняется за константное время , не зависящее от числа всевозможных приоритетов и потоков , что являет - ся критической характеристикой для систем жёсткого реального времени . Диспетчеризация Планировщик вызывается каждый раз при изменении состояния объек - тов , влияющих на выполнение пото - ков .  Необходимость планирования может возникнуть в результате систем - ного вызова или внешнего события . Пример : чтобы заблокировать поток в ожидании ресурса , системный вызов обращается к функции fx_sched_item_ suspend() , которая удаляет поток из очереди планировщика , а затем уста - навливает флаг resched_pending и дела - ет запрос программного прерывания . Обработчик программного прерыва - ния отработает не сразу , а когда при - оритет системы будет понижен с SPL_ SYNC до SPL_LOW ( рис . 8). При входе в прерывание контекст потока сохраняется в стек , обработчик прерывания выполняется на отдель - ном стеке . Затем вызывается функция fx_dispatch_handler() , где проверяет - ся флаг resched_pending и вызывается планировщик . Глобальная перемен - ная g_current_thread перезаписывает - ся указателем на TCB нового пото - ка . Указатель на стековый фрейм с сохранёнными регистрами подме - няется на сохранённый стек друго - го потока . При выходе из прерыва - ния в регистры будет загружен уже контекст нового потока ( или преж - него , если он остался самым прио - ритетным ). Типичное аппаратное прерывание – от системного таймера , отсчитывающе - го фиксированные периоды времени , « тики ». По завершении каждого тако - го периода индексируются значения счётчиков , отмеряющих кванты рабо - ты потоков и определяющих моменты срабатывания программных таймеров . По окончании обработки вызывается Рис . 7. Структура двухуровневой карты приоритетов Рис . 8. Последовательность системного вызова , диспетчеризации и смены контекста диспетчеризация , как в предыдущем случае . Во время работы планировщи - ка могут возникать другие преры - вания , меняющие состояние пото - ков . Чтобы их учитывать , в вызовах функций планировщика присутству - ют точки синхронизации , где преры - вания разрешены и планировщик может быть вытеснен . Таким обра - зом , возможно неоднократное вхож - дение в функцию планировщика , в результате корректной работы кото - рой управление будет передано наи - более приоритетному потоку , перво - му в очереди . Заключение Ядро операционной системы – это программное обеспечение , которое управляет временем процессора , реа - лизуя абстракцию параллельного выполнения потоков , управляющих объектами окружающей среды . Одни задачи реального мира имеют пери - одический , другие – апериодический характер . При работе с гибридными наборами задач основная цель ядра – гарантировать планирование всех потоков реального времени в наи - худших условиях и обеспечить доста - точно хорошее среднее время откли - ка для действий , выполняемых не в жёстких ограничениях . Гарантия своевременной обработки апериоди - ческих задач , вызываемых событи - ями , может быть достигнута только путём принятия правильных предпо - ложений о минимальном промежут - ке времени между двумя последова - тельными экземплярами событий . В ОСРВ FX-RTOS  применены все современные архитектурные и тех - нические решения для решения задач жёсткого реального времени . Исследу - емый в статье исходный код версии Lite предоставлен в свободном досту - пе [1]. Полный набор конфигураций ядра ОСРВ FX-RTOS доступен на сай - те компании - разработчика . Литература 1. Исходные тексты и примеры ОСРВ FX-RTOS Lite // URL: https://github.com/ Eremex/fxrtos-lite. 2. Столлингс В . Операционные систе - мы . Внутренняя структура и принципы проектирования . 9- е издание . М .: Диа - лектика - Вильямс , 2020. 3. Дейкстра Э . Языки программирования / пер . с англ . под ред . В . М . Курочкина . М .: Мир , 1972. 4. Downey A. Little book of semaphores // URL: https://greenteapress.com/ semaphores/LittleBookOfSemaphores.pdf. 5. Buttazzo G.C. Hard Real-Time Computing Systems. Predictable Scheduling Algorithms and Applications. Third Edition. Springer, 2011. 6. FX-RTOS. Руководство по эксплуатации // URL: https://www.eremex.ru/products/ fx-rtos/#database. 7. Разработка встроенных операцион - ных систем реального времени // URL: https://www.eremex.ru/upload/ iblock/eb6/rtos_dev_book.pdf. 8. Объяснение работы абстрактно - го списка list_entry // URL: https:// stackoverflow.com/questions/5550404/list- entry-in-linux.

RkJQdWJsaXNoZXIy MTQ4NjUy