ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
21 ноября
842081 Топик полностью
fk0, легенда (20.05.2018 12:46 - 13:10, просмотров: 642) ответил ASDFS на От каждого компонента системы что то зависит. От оси зависит особенно много потому как если ось не может отобрать управление у задачи или гарантировать время исполнения в своих компонентах то это нихрена не осрв. Вот на линух нет бумажек в которых
Цифры не являются принципиальным свойством. Они, как минимум, от процессора зависят, от драйверов (прерываний) и т.п. И "realtime" -- это же не количественная оценка, а качественная. Какие могут быть бумажки с цифрами, если они даны на одну конкретную систему и с другой мало соотносятся (добавляем драйвер и все цифры убежали). И где ты видел, чтоб вытесняющая "ось не могла отобрать управление"??? Не количественно, а качественно ОС может гарантировать только что она не блокируется в своих компонентах. Только я думаю, контрпример и не найти даже будет, любая ртос это гарантирует. Единственным серьезным отличием линукса от мелких RTOS является то, что он может не вытесняться при исполнении в режиме ядра. Это действительно недостаток в случае, когда низкоприоритетная задача вызывает некую "тяжелую" ядерную функцию и блокирует работу высокоприоритетных задач. В мелких RTOS такого обычно нет, да и для линукса есть отдельная ветка где это исправлено. Само собой прерывание в линуксе (да и вообще прерывания на "большом" процессоре), как и переключения контекстов, неизменно тяжелее (да промахи мимо кешей чего только стоят). Но это влияет на количественную оценку. Да, RTEMS может на Cortex-M3 переключает контекст и имеет задержки в 10-100 раз меньше, чем linux на x86. Но качественно же ничего не изменилось. И гарантировать тебе только страховое агентство может, т.к. та же RTOS зависит от драйверов или чего-то, что обрабатывает прерывания, и в этих условиях уже ничего гарантировать не может. При отсутствии прерываний логика работы всех планировщиков примерно одинакова и я не вижу качественной разницы. А количественная обусловлена тактовой частотой процессора, скоростью работы памяти, объёмами кешей, логикой обработки прерываний (сложностью переключения контекста) на данном процессоре, и где-то далеко не на первом месте стоят детали реализации самой RTOS. Но в любом случае это некая константная величина вызванная совокупностью вышеперечисленного. На её основе производить деление RTOS или нет -- нельзя, это не качественная оценка. Да, ещё одним важным свойством RTOS является не упомянутый тобой период переключения задач при работе в режиме robin round. У старых линуксов и виндоусов был аж 56мс, сейчас порядка 1мс. Это действительно измеримая величина, характеризующая RTOS. Равно как и минимальная дискретность таймера (наличие таймера высокого разрешения, обычно во всех linux есть хотя бы от пары микросекунд), и способность работать в "tickless" режиме, когда таймер каждый раз перепрограммируется на нужное время, а не привязан к фиксированным тактам (иначе вся сетка времени оказывается привязана к этим тактам и как следствие низкое временное разрешение). Как и способность осуществлять перепланирование каждый раз когда необходимо, а не в конце каждого "такта" (сейчас не способных по-моему уже не осталось, т.к. такая логика хотя и уменьшает расходы на планировщик, но сильно увеличивает латентность). В современных RTOS всё это есть, включая linux.
[ZX]