Какие аспекты ThreadX делают ее ОС реального времени?

ThreadX считается RTOS. Я знаю общие определения и требования RTOS, однако может ли кто-нибудь помочь пролить свет на то, почему ThreadX можно назвать RTOS, или какие функции ОС делают его способным работать в реальном времени?

Спасибо~


person Justin    schedule 01.07.2012    source источник
comment
См. en.wikipedia.org/wiki/ThreadX.   -  person E. Douglas Jensen    schedule 03.07.2012
comment
Спасибо за подсказку, однако в вики написано: Как и большинство RTOS, ThreadX использует многозадачное ядро ​​с упреждающим планированием, быстрым реагированием на прерывания, управлением памятью, межпотоковым взаимодействием, взаимным исключением, уведомлением о событиях и функциями синхронизации потоков. , что слишком двусмысленно, и некоторые функции также можно найти во многих обычных ОС. Не могли бы вы поделиться более подробно?   -  person Justin    schedule 05.07.2012
comment
Чтобы ответить на ваш вопрос, Джастин, требуется много знаний в области низкоуровневой многопоточной архитектуры ОС и приложений. Например, операционная система ThreadX имеет минимальный размер 2 КБ (это правильно) ОЗУ, предоставляя все функции, необходимые для потоков на основе задач. Выполнение определенных задач в ThreadX по сравнению с чем-то вроде Linux не просто быстрее, а в миллионы раз быстрее. Например, время загрузки измеряется в тактах процессора (требуется 300-400). Для Linux это число будет равняться миллионам (или даже миллиардам). Прочитайте rtos.com, чтобы узнать больше.   -  person Gary Wisniewski    schedule 07.12.2015
comment
извините, если этот ответ кажется слишком запоздалым (прошло много времени с тех пор, как я в последний раз входил с этой учетной записью): я не полностью согласен с вашим комментарием, который в основном касается скорости, но не детерминированный характер ОС. И я думаю, что именно последнее делает ОС RTOS.   -  person Justin    schedule 16.08.2019


Ответы (4)


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

Однако истинное определение заключается в том, что система должна гарантировать, что некоторые заданные операции всегда будут выполняться в течение известного детерминированного времени (т.е. времени в секундах, а не в относительном выражении). Ни Linux, ни Windows не работают в реальном времени. Компьютер с Linux или Windows может быть настолько быстрым, что все, что вы хотите сделать, почти всегда будет происходить достаточно быстро, но нет гарантии, что это всегда будет выполнено в течение максимального времени. Если вы создаете программную систему для управления медицинским устройством или огромным заводским оборудованием, вам нужно что-то остановить или запустить за x-миллисекунд, а не «вскоре» или «обычно достаточно быстро».

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

Что касается вашего конкретного вопроса, с веб-сайта ThreadX:

ThreadX is deteriminstic. A high priority thread starts responding to 
an external event on the order of the time it takes to perform a 
highly optimized ThreadX context switch.

    - Boot time: 300 cycles
    - Context switch time: <100 cycles
    - Semaphore get: 30 cycles
person VictorEE    schedule 11.05.2016
comment
Спасибо за ответ. но мне кажется, что цитата с веб-сайта ThreadX все еще говорит о том, насколько это быстро. Я до сих пор не могу понять, что делает его реакцию на внешние события детерминированной. - person Justin; 16.08.2019

Все это означает, что ваше время отклика детерминировано. Это одна из самых важных вещей, которые вам нужны в RTOS.

В threadx ваши темы имеют приоритет. Операционная система управляется аппаратным таймером прерывания, а планировщик обеспечивает правильное планирование потоков в соответствии с их приоритетом.

Например, если поток A (высокий приоритет) ожидает на семафоре, а поток B (низкий приоритет) работает, то, как только семафор станет доступным, поток B будет прерван и запущен поток A.

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

Для более подробной информации вы должны получить это: https://rads.stackoverflow.com/amzn/click/com/1578201349

person Tereus Scott    schedule 27.01.2014
comment
интересно, сделало ли бы ThreadX наличие приоритетов для потоков RTOS: обычно Linux предоставляет разные приоритеты своим процессам, но мы не можем сказать, что Linux является RTOS... - person Justin; 09.05.2014

Не эксперт, но когда вы накладываете временные ограничения на потоки/процессы приложений, это называется программным обеспечением в реальном времени.

В RTOS, если приходит поток с высоким приоритетом, то поток с низким приоритетом будет приостановлен до тех пор, пока поток с высоким приоритетом не завершится (или не перейдет в состояние ожидания/приостановки). Поток с низким приоритетом никогда не получит время (включен квант времени события), пока не будет активен любой поток с высоким приоритетом.

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

Вы также должны проверить инверсию приоритета в случае RTOS.

person Darshan Rajgor    schedule 11.09.2019

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

person Andrés    schedule 05.04.2021