Какие аспекты ThreadX делают его ОС в реальном времени?
ThreadX считается ОСРВ. Я знаю общие определения и требования ОСРВ, однако кто-нибудь может помочь пролить свет на то, почему ThreadX можно назвать ОСРВ или какие функции ОС делают его работоспособным в реальном времени?
Благодаря ~
4 ответа
Когда программисты говорят об операционных системах реального времени, они часто упоминают функции, связанные с управлением несколькими процессами или потоками: мьютексы, семафоры, межпроцессное (или межпотоковое) взаимодействие и т. Д.
Однако истинное определение заключается в том, что система должна гарантировать, что некоторые заданные операции всегда будут выполняться в течение известного детерминированного времени (т. Е. Времени в секундах, а не в относительном выражении). Ни Linux, ни Windows не являются в реальном времени. Компьютер с Linux или Windows может быть настолько быстрым, что все, что вы хотите сделать, почти всегда происходит достаточно быстро, но нет никакой гарантии, что это будет всегда в течение максимального времени. Если вы создаете программную систему для управления медицинским устройством или огромным промышленным оборудованием, вам нужно остановить или запустить что-то за x-миллисекунд, а не "скоро" или "как правило, достаточно быстро".
Сейчас на практике, чтобы обеспечить эту гарантию в полезной, нетривиальной системе, часто требуется упреждающая многозадачность, несколько потоков и все обычно упоминаемые функции, поэтому вам будет сложно найти ОСРВ без них. Тем не менее, определяющая характеристика ОСРВ прямо в названии: известно, что события происходят в реальном времени.
Что касается вашего конкретного вопроса, с веб-сайта 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
Все это означает, что ваше время ответа является детерминированным. Это одна из самых важных вещей, которые вы хотите в ОСРВ.
В threadx ваши темы имеют приоритет. Операционная система управляется аппаратным таймером прерывания, и планировщик обеспечивает правильное планирование потоков в соответствии с их приоритетом.
Например, если поток A (с высоким приоритетом) ожидает семафора, а поток B (с низким приоритетом) работает, то, как только семафор станет доступным, поток B будет прерван, а поток A будет запущен.
Threadx имеет ряд других функций для оптимизации времени переключения контекста. Например, каждый поток имеет свой собственный стек.
Для получения более подробной информации вы должны получить это: http://www.amazon.com/Real-Time-Embedded-Multithreading-Using-ThreadX/dp/1578201349/ref=sr_1_2?s=books&ie=UTF8&qid=1390859108&sr=1-2&keywords= в реальном времени + + ThreadX
Не эксперт, но, когда вы накладываете временные ограничения на потоки / процессы приложения, это называется программным обеспечением реального времени.
В ОСРВ, если приходит поток с высоким приоритетом, поток с низким приоритетом будет приостановлен до завершения потока с высоким приоритетом (или перехода в состояние ожидания / приостановки). Поток с низким приоритетом никогда не получит время (временной интервал событий включен), пока какой-либо поток с высоким приоритетом не станет активным.
В случае того же приоритета потока, если включен временной интервал, каждый поток получит определенное количество времени.
Вы также должны проверить инверсию приоритета в случае RTOS.
ThreadX будет иметь одинаковое время отклика независимо от размера системы: если в системе один или несколько потоков, один или несколько семафоров и т. Д., Время отклика будет одинаковым. Все операции имеют постоянное время отклика. Время вытеснения потока ограничено и постоянно. Время реакции на прерывание ограничено и постоянно. Уровень возможностей, который предлагает ThreadX, иногда описывается в академической литературе как «жесткий режим реального времени».