Что такое realtime?
От: cppguard  
Дата: 01.12.23 00:34
Оценка:
Думал, что, начав заниматься робототехникой, окончательно разберусь с этим термином. Пока что для меня real-time является синонимом "детерминистичности". Есть ли разница между "успеет выполнить задачу за N секунд" и пониятием real-time? Если взять Linux, без всяких RT-патчей и запустить на нём лишь один процесс, который в цикле без ветвлений что-нибудь считать, будет ли такая система real-time?
Re: Что такое realtime?
От: bnk СССР http://unmanagedvisio.com/
Дата: 01.12.23 00:46
Оценка: 3 (2) +15
Здравствуйте, cppguard, Вы писали:

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


Мое понимание такое, realtime означает что у системы есть гарантированное время обработки задач (реакции на события).

Ни Windows, ни Linux этого не гарантирует (на прикладном уровне), т.к. система может заняться чем-то своим,
а твоя задача окажется в очереди, и может не выполниться за заданное время.

Даже если запустить 1 процесс, система может его легко приостановить его и заняться обработкой каких-нибудь прерываний например, и заниматься этим столько, сколько захочет.
realtime системе такое не разрешено делать, время отклика должно быть наперед известно.
Отредактировано 01.12.2023 0:52 bnk . Предыдущая версия . Еще …
Отредактировано 01.12.2023 0:50 bnk . Предыдущая версия .
Отредактировано 01.12.2023 0:48 bnk . Предыдущая версия .
Re[2]: Что такое realtime?
От: Maniacal Россия  
Дата: 01.12.23 07:56
Оценка:
Здравствуйте, bnk, Вы писали:

bnk>Даже если запустить 1 процесс, система может его легко приостановить его и заняться обработкой каких-нибудь прерываний например, и заниматься этим столько, сколько захочет.

bnk>realtime системе такое не разрешено делать, время отклика должно быть наперед известно.

Плюс на уровне ПО, если операция не успевает выполниться, нужно её прекратить и начать следующую. ИМХО.
Re[3]: Что такое realtime?
От: cppguard  
Дата: 01.12.23 08:32
Оценка:
Здравствуйте, Maniacal, Вы писали:

M>Плюс на уровне ПО, если операция не успевает выполниться, нужно её прекратить и начать следующую. ИМХО.


Вот это интереснее. Прекратить — отрубить процесс? Или речь о системных вызовах?
Re[4]: Что такое realtime?
От: Maniacal Россия  
Дата: 01.12.23 08:35
Оценка: 2 (1) +2
Здравствуйте, cppguard, Вы писали:

C>Здравствуйте, Maniacal, Вы писали:


M>>Плюс на уровне ПО, если операция не успевает выполниться, нужно её прекратить и начать следующую. ИМХО.


C>Вот это интереснее. Прекратить — отрубить процесс? Или речь о системных вызовах?


Применимо к прошивкам телевизоров, например. Не успел кадр обработать, давай другой начинай.
Re: Что такое realtime?
От: student__  
Дата: 01.12.23 09:14
Оценка:
Здравствуйте, cppguard, Вы писали:

C>без всяких RT-патчей и запустить на нём лишь один про


Если I/O (дрова) предсказуемы, если таймауты точны, то да. Вообще, RT — это в большей части про многозадачность, и соотв. планирование, и в этой теме больше всего ресёрча и сложности проблематики. Один единственный процесс/поток — это вырожденный случай.
Re[2]: Что такое realtime?
От: student__  
Дата: 01.12.23 09:24
Оценка:
Здравствуйте, student__, Вы писали:

__> Один единственный процесс/поток — это вырожденный случай.


Вернее так: это не вырожденный случай, а случай строго периодической задачи, которую легко рассчитать, и все шаги выполняются синхронно.
Отредактировано 01.12.2023 9:25 student__ . Предыдущая версия .
Re: Что такое realtime?
От: Sharov Россия  
Дата: 01.12.23 10:14
Оценка:
Здравствуйте, cppguard, Вы писали:

C>Думал, что, начав заниматься робототехникой, окончательно разберусь с этим термином. Пока что для меня real-time является синонимом "детерминистичности".


Тоже так думаю. Достигается это ограничением времени на io операции.

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


Разве не от железа это зависит в первую очередь? Не всякое железо, цпц, для RT задач пригодно, если не ошибаюсь.
Кодом людям нужно помогать!
Re[2]: Что такое realtime?
От: student__  
Дата: 01.12.23 11:09
Оценка:
Здравствуйте, Sharov, Вы писали:

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


Из того, что в обычном компе какое не подходит и почему? Не вижу проблем каких-то. Понятно, что требования по абсолютным таймингам должны удовлетворяться, а в остальном?
Re[3]: Что такое realtime?
От: student__  
Дата: 01.12.23 11:14
Оценка:
Здравствуйте, student__, Вы писали:

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


Единственное, что приходит в голову — свитчи эзернет, в которых может быть большой диапазон отклика в зависимости от забитости очередей кадров. Но тогда просто не использовать эзернет.
Re: Что такое realtime?
От: viellsky  
Дата: 01.12.23 11:32
Оценка:
Здравствуйте, cppguard, Вы писали:

C>Есть ли разница между "успеет выполнить задачу за N секунд" и пониятием real-time?

Смотря что вкладывается в эти N секунд. Реалтайм подразумевает, что данные, на основе которых выполняется задача, не успеют "протухнуть" до момента окончания выполнения задачи. Пока твой робот думает N секунд, как ему объехать пешехода, пешеход успел сходить в магазин и обратно, за эти N секунд ))
Re[3]: Что такое realtime?
От: syrompe  
Дата: 01.12.23 11:32
Оценка:
__>Из того, что в обычном компе какое не подходит и почему? Не вижу проблем каких-то. Понятно, что требования по абсолютным таймингам должны удовлетворяться, а в остальном?

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

Кэши всякие не дают гарантии по времени доступа к памяти. Помнится для винды был типа патч, который из нее делал типа риалтайм — он вроде как раз логику работы с кэшами правил.
Re: Что такое realtime?
От: reversecode google
Дата: 01.12.23 11:57
Оценка: +1
линукс никогда не был реалтаймом
а вообще вопрос с собеседований на котором валят всех
так как никто не знает что вкладывать в этот смысл
для меня примером реалтайма есть QNX
а в ней кажется даже драйвера в ring3
т.е. безотказность и гарантированность исполнения потока данных
как я люблю отвечать на собесах
Re[2]: Что такое realtime?
От: LaptevVV Россия  
Дата: 01.12.23 12:12
Оценка:
bnk>Мое понимание такое, realtime означает что у системы есть гарантированное время обработки задач (реакции на события).
bnk>Ни Windows, ни Linux этого не гарантирует (на прикладном уровне), т.к. система может заняться чем-то своим,
Вообще-то в винде предусмотрено 32 очереди и первые 16 — как раз для процессов реального времени
Которые имеют приоритет безусловно более высокий, чем вторые 16
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[3]: Что такое realtime?
От: bnk СССР http://unmanagedvisio.com/
Дата: 01.12.23 12:17
Оценка: -2
Здравствуйте, LaptevVV, Вы писали:

bnk>>Мое понимание такое, realtime означает что у системы есть гарантированное время обработки задач (реакции на события).

bnk>>Ни Windows, ни Linux этого не гарантирует (на прикладном уровне), т.к. система может заняться чем-то своим,

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

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

IMHO тут как бы речь о том что нельзя быть немножко беременным.
Либо система гарантирует что нечто выполнится в течение наперед заданного времени, либо нет.
Отредактировано 01.12.2023 12:19 bnk . Предыдущая версия .
Re[4]: Что такое realtime?
От: LaptevVV Россия  
Дата: 01.12.23 12:22
Оценка: 1 (1) +3
LVV>>Вообще-то в винде предусмотрено 32 очереди и первые 16 — как раз для процессов реального времени
LVV>>Которые имеют приоритет безусловно более высокий, чем вторые 16

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

В данном случае — можно...
bnk>Либо система гарантирует что нечто выполнится в течение наперед заданного времени, либо нет.
Просто есть разные классы систем реального времени.
Есть системы жесткого реально времени, а есть мягкого.
Основное различие систем жёсткого и мягкого реального времени можно охарактеризовать так:
система жёсткого реального времени никогда не опоздает с реакцией на событие,
система мягкого реального времени не должна опаздывать с реакцией на событие.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[4]: Что такое realtime?
От: student__  
Дата: 01.12.23 12:31
Оценка:
Здравствуйте, syrompe, Вы писали:

S>Throttling — частота плавает.


отключается

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


просто рассчитывается исходя из худшего сценария.

S>Кэши всякие не дают гарантии по времени доступа к памяти.

То же самое (как с предыдущими пунктами, либо первое, либо второе).
Это я не к тому, что надо именно такие процессоры для всех задач реалтайм использовать, а к тому, что принципиальных проблем нет, если только в худшем сценарии удволетворяются требования к системе.
Отредактировано 01.12.2023 12:39 student__ . Предыдущая версия .
Re[2]: Что такое realtime?
От: student__  
Дата: 01.12.23 12:33
Оценка:
Здравствуйте, reversecode, Вы писали:

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


был, конечно. С тех пор, как научился воспроизводить аудио и видео
Re: Что такое realtime?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 01.12.23 12:35
Оценка:
Здравствуйте, cppguard, Вы писали:

C>Думал, что, начав заниматься робототехникой, окончательно разберусь с этим термином.


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

Если читали, то чего именно там не хватает для понимания?
Re[4]: Что такое realtime?
От: student__  
Дата: 01.12.23 12:37
Оценка: +1
Здравствуйте, bnk, Вы писали:
bnk>Либо система гарантирует что нечто выполнится в течение наперед заданного времени, либо нет.

у тебя очень узкое понимание реалтайма как только хард-реалтайма.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.