Re[3]: Что такое realtime?
От: vsb Казахстан  
Дата: 01.12.23 12:40
Оценка:
Здравствуйте, student__, Вы писали:

S>>Разве не от железа это зависит в первую очередь? Не всякое железо, цпц, для RT задач пригодно, если не ошибаюсь.


__>Из того, что в обычном компе какое не подходит и почему? Не вижу проблем каких-то. Понятно, что требования по абсолютным таймингам должны удовлетворяться, а в остальном?


Могу ошибаться, но, насколько я понимаю, в том же Intel поверх ОС есть некий management (Intel Management Engine, вот это вот всё). На него у ОС никакого влияния и доступа нет. При этом он, естественно, для своей работы может забирать процессор. Т.е. предсказуемости нет.

Ещё про DMA слышал много плохого в этом плане, типа может процессор забрать, невзирая на приоритеты.

Кому нужен реалтайм — нужно или использовать микроконтролер, превращающий реалтайм в нереалтайм дополнительно к основному процессору (это, кстати, многие ARM вендоры предоставляют — типа 4-ядерный Application Processor и там же одноядерный микроконтроллер). Или полноценную платформу с софтом (типа QNX) и проверенным железом.
Отредактировано 01.12.2023 12:45 vsb . Предыдущая версия . Еще …
Отредактировано 01.12.2023 12:43 vsb . Предыдущая версия .
Re[4]: Что такое realtime?
От: student__  
Дата: 01.12.23 12:46
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Могу ошибаться, но, насколько я понимаю, в том же Intel поверх ОС есть некий management (Intel Management Engine, вот это вот всё). На него у ОС никакого влияния и доступа нет. При этом он, естественно, для своей работы может забирать процессор. Т.е. предсказуемости нет.


Разве не отключается в BIOS?
UPD: в инетах пишут, что правительство США обязало Интел сделать МЕ отключаемым.
Отредактировано 01.12.2023 13:02 student__ . Предыдущая версия .
Re[3]: Что такое realtime?
От: reversecode google
Дата: 01.12.23 12:48
Оценка:
аудио и видео не причем
убить или завесить QNX насколько знаю невозможно
вообщем безотказность и гарантированность это не про аудио и видео
Re[2]: Что такое realtime?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 01.12.23 12:48
Оценка:
Здравствуйте, Sharov, Вы писали:

S>Разве не от железа это зависит в первую очередь? Не всякое железо, цпц, для RT задач пригодно, если не ошибаюсь.


Это определяется тем, где образуются узкие места. Если в железе и около него, то не подходит железо. Если железо всегда укладывается в самые худшие прогнозы, но система в целом в них укладывается не всегда, то проблема, скорее всего, в софте.
Re[4]: Что такое realtime?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 01.12.23 12:51
Оценка:
Здравствуйте, syrompe, Вы писали:

S>Out of order, Branch Prediction тоже могут приводить к веселым последствиям.


Такие вещи начинают играть заметную роль только вблизи предельного быстродействия аппаратуры. В том, что делается на типовых компьютерах, на это можно не обращать внимания — основные тормоза происходят намного выше.

S>Кэши всякие не дают гарантии по времени доступа к памяти. Помнится для винды был типа патч, который из нее делал типа риалтайм — он вроде как раз логику работы с кэшами правил.


Это сугубо о программных кэшах — страничных, дисковых, файловых и прочих.
Re[3]: Что такое realtime?
От: Sharov Россия  
Дата: 01.12.23 12:53
Оценка:
Здравствуйте, student__, Вы писали:

S>>Разве не от железа это зависит в первую очередь? Не всякое железо, цпц, для RT задач пригодно, если не ошибаюсь.

__>Из того, что в обычном компе какое не подходит и почему? Не вижу проблем каких-то. Понятно, что требования по абсолютным таймингам должны удовлетворяться, а в остальном?

А как гарантировать, что io диска всегда будет не больше чего-то там?
Кодом людям нужно помогать!
Re[4]: Что такое realtime?
От: student__  
Дата: 01.12.23 13:04
Оценка:
Здравствуйте, Sharov, Вы писали:

S>А как гарантировать, что io диска всегда будет не больше чего-то там?


А кто сказал, что используется диск?
Re[5]: Что такое realtime?
От: rudzuk  
Дата: 01.12.23 13:08
Оценка: +3
Здравствуйте, LaptevVV, Вы писали:

LVV> bnk>IMHO тут речь бы речь о том что нельзя быть немножко беременным.

LVV> В данном случае — можно...
LVV> bnk>Либо система гарантирует что нечто выполнится в течение наперед заданного времени, либо нет.
LVV> Просто есть разные классы систем реального времени.
LVV> Есть системы жесткого реально времени, а есть мягкого.

И дефолтная винда не относится, ни к тем, ни к другим. Читайте об этом у Соломона и Русиновича (Внутреннее устройство Windows 2000. глава 3. стр. 86), они прямо об этом говорят и объясняют почему.
avalon/3.0.2
Re[5]: Что такое realtime?
От: Sharov Россия  
Дата: 01.12.23 14:17
Оценка:
Здравствуйте, student__, Вы писали:

S>>А как гарантировать, что io диска всегда будет не больше чего-то там?

__>А кто сказал, что используется диск?

Вроде одно из св-в и определений RT, это bounded io. Т.е. речь о любой периферии в том числе.
Кодом людям нужно помогать!
Re: Что такое realtime?
От: Pauel Беларусь http://blogs.rsdn.org/ikemefula
Дата: 01.12.23 14:30
Оценка: 1 (1)
Здравствуйте, cppguard, Вы писали:

C>Думал, что, начав заниматься робототехникой, окончательно разберусь с этим термином. Пока что для меня real-time является синонимом "детерминистичности". Есть ли разница между "успеет выполнить задачу за N секунд" и пониятием real-time? Если взять Linux, без всяких RT-патчей и запустить на нём лишь один процесс, который в цикле без ветвлений что-нибудь считать, будет ли такая система real-time?


Вы путаете ос реального времени и система реального времени. Общее в этих вещах — время отклика. Разница в том, кто дает эти гарантии.

Дело не в том, сколько процессов и кто чем занят, а какие шансы, что время отклика превысит ожидаемое.

Теоретически, систему реального времени с конским временем отклика, типа наблюдения за погодой, управление антеной тв, можно построить на обычной ос, отключив в ней все что можно.

А если требуемое время отклика это доли секунды, то нужна ОС рв, в противном случае вы никакие гарантии не получите.

Например, в винде Sleep в средем выполняется ровно столько, сколько вы запросили. Но под нагрузкой может увеличиваться в десятки раз. Мне удавалось добиться Sleep(1000) в 15 и более секунд.

В ОС рв приоритет потока, который выполняет Sleep становится максимальным к моменту завершения интервала, потому этот поток получит выполнение точно в срок. В винде — никаких гарантий нет.

Так же в винде время обычного системного вызова может быть сколь угодно большим. А в ОСРВ оно более-менее детериминировано.

Еще одна из проблем, которые решены в ОСРВ — инверсия приоритетов. Когда высокоприоритетный поток ждет ресурс который занят низкоприоритетным, а тот не выполняется, т.к. время занимает поток среднего приоритета.
В ОСРВ низкоприоритетный поток получит наивысший приоритет как только высокоприоритетный начнет ожидать ресурс.
Re[6]: Что такое realtime?
От: student__  
Дата: 01.12.23 14:39
Оценка:
Здравствуйте, Sharov, Вы писали:

S>Вроде одно из св-в и определений RT, это bounded io. Т.е. речь о любой периферии в том числе.


я могу загрузиться с перфокарт, и дальше начать работать, со всем I/O столько в сети.
Диск сам по себе не особо надёжен, так что его использование в ответственных применениях, когда нужна именно гарантия записи с дедлайном, так себе идея.
И потом, в системе реального времени не вся периферия обязана быть bounded. На НМЖД можно, например, сбрасывать логи, которые потерять не 100% критично, и которые будут писаться на фоне. Для SSD наверняка проще получить априори худшее время записи.
Re: Что такое realtime?
От: andyp  
Дата: 05.12.23 17:32
Оценка: 1 (1) +1
Здравствуйте, cppguard, Вы писали:

C>Думал, что, начав заниматься робототехникой, окончательно разберусь с этим термином. Пока что для меня real-time является синонимом "детерминистичности". Есть ли разница между "успеет выполнить задачу за N секунд" и пониятием real-time? Если взять Linux, без всяких RT-патчей и запустить на нём лишь один процесс, который в цикле без ветвлений что-нибудь считать, будет ли такая система real-time?


Если сможешь доказать, что прога + ос (т.е. все целиком) ВСЕГДА реагирует на внешние раздражители за некоторое наперед известное время, то система будет системой реального времени, отчего ж нет.
Re[3]: Что такое realtime?
От: Pzz Россия https://github.com/alexpevzner
Дата: 05.12.23 21:19
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Вообще-то в винде предусмотрено 32 очереди и первые 16 — как раз для процессов реального времени

LVV>Которые имеют приоритет безусловно более высокий, чем вторые 16

Это имеется ввиду, "типа риалтайм".

В венде драйвера могут занять систему своим полезным делом в любой момент, когда захотят, и на произвольное время. Так что венда может очень постараться, но не может ничего гарантировать.
Re[2]: Что такое realtime?
От: Pzz Россия https://github.com/alexpevzner
Дата: 05.12.23 21:21
Оценка: 1 (1)
Здравствуйте, Sharov, Вы писали:

S>Разве не от железа это зависит в первую очередь? Не всякое железо, цпц, для RT задач пригодно, если не ошибаюсь.


Не очень понятно, что такого может быть упущено в железе, чтобы оно не годилось для RT. Но вот драйвера железа дейтвительно бывают разного качества. И иные будут серьезно мешаться риалтаймовости.
Re[2]: Что такое realtime?
От: cppguard  
Дата: 05.12.23 22:02
Оценка:
Здравствуйте, reversecode, Вы писали:

R>линукс никогда не был реалтаймом

Так потому и пример с линуксом. Куча роботов и станков работают на нём, приборные панели в автомобилях. При этом, насколько я знаю, даже RT-patch не превращает Linux в аналог QNX.
Re[2]: Что такое realtime?
От: cppguard  
Дата: 05.12.23 22:05
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>То есть, даже статей в википедии на эту тему Вы не читали?

ЕМ>Если читали, то чего именно там не хватает для понимания?

Читал. Там классический трактат, который дают в универах: про soft- и hard- real-time, про абстрактное понятие "задачи", но ни слова про конкретные инструменты или примеры.
Re[3]: Что такое realtime?
От: Sharov Россия  
Дата: 05.12.23 22:39
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Не очень понятно, что такого может быть упущено в железе, чтобы оно не годилось для RT. Но вот драйвера железа дейтвительно бывают разного качества. И иные будут серьезно мешаться риалтаймовости.


Я слышал про режимы работы цпу, мол защищенный режим не годится для rt.
Кодом людям нужно помогать!
Re[4]: Что такое realtime?
От: Pzz Россия https://github.com/alexpevzner
Дата: 06.12.23 05:29
Оценка: 1 (1) +2
Здравствуйте, Sharov, Вы писали:

Pzz>>Не очень понятно, что такого может быть упущено в железе, чтобы оно не годилось для RT. Но вот драйвера железа дейтвительно бывают разного качества. И иные будут серьезно мешаться риалтаймовости.


S>Я слышал про режимы работы цпу, мол защищенный режим не годится для rt.


Врут.
Re[3]: Что такое realtime?
От: student__  
Дата: 06.12.23 22:34
Оценка:
Здравствуйте, cppguard, Вы писали:

C>Читал. Там классический трактат, который дают в универах: про soft- и hard- real-time, про абстрактное понятие "задачи", но ни слова про конкретные инструменты или примеры.


Вот пример:

while (true)
{
t1 = read_input(x)
adjust_read_time(t1)
y = f(x)
t2 = write_output(y)
adjust_write_time(t2)
}

Сойдёт?
Re[4]: Что такое realtime?
От: cppguard  
Дата: 07.12.23 00:15
Оценка:
Здравствуйте, student__, Вы писали:

__>Вот пример:


__>

__>while (true)
__>{
__> t1 = read_input(x)
__> adjust_read_time(t1)
__> y = f(x)
__> t2 = write_output(y)
__> adjust_write_time(t2)
__>}

__>Сойдёт?

Ничего из него непонятно. Вот в обсуждении прояснили кое-какие моменты. Как, например, разница в real-time system и real-time OS.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.