Думал, что, начав заниматься робототехникой, окончательно разберусь с этим термином. Пока что для меня real-time является синонимом "детерминистичности". Есть ли разница между "успеет выполнить задачу за N секунд" и пониятием real-time? Если взять Linux, без всяких RT-патчей и запустить на нём лишь один процесс, который в цикле без ветвлений что-нибудь считать, будет ли такая система real-time?
Здравствуйте, cppguard, Вы писали:
C>Думал, что, начав заниматься робототехникой, окончательно разберусь с этим термином. Пока что для меня real-time является синонимом "детерминистичности". Есть ли разница между "успеет выполнить задачу за N секунд" и пониятием real-time? Если взять Linux, без всяких RT-патчей и запустить на нём лишь один процесс, который в цикле без ветвлений что-нибудь считать, будет ли такая система real-time?
Мое понимание такое, realtime означает что у системы есть гарантированное время обработки задач (реакции на события).
Ни Windows, ни Linux этого не гарантирует (на прикладном уровне), т.к. система может заняться чем-то своим,
а твоя задача окажется в очереди, и может не выполниться за заданное время.
Даже если запустить 1 процесс, система может его легко приостановить его и заняться обработкой каких-нибудь прерываний например, и заниматься этим столько, сколько захочет.
realtime системе такое не разрешено делать, время отклика должно быть наперед известно.
Здравствуйте, bnk, Вы писали:
bnk>Даже если запустить 1 процесс, система может его легко приостановить его и заняться обработкой каких-нибудь прерываний например, и заниматься этим столько, сколько захочет. bnk>realtime системе такое не разрешено делать, время отклика должно быть наперед известно.
Плюс на уровне ПО, если операция не успевает выполниться, нужно её прекратить и начать следующую. ИМХО.
Здравствуйте, cppguard, Вы писали:
C>Здравствуйте, Maniacal, Вы писали:
M>>Плюс на уровне ПО, если операция не успевает выполниться, нужно её прекратить и начать следующую. ИМХО.
C>Вот это интереснее. Прекратить — отрубить процесс? Или речь о системных вызовах?
Применимо к прошивкам телевизоров, например. Не успел кадр обработать, давай другой начинай.
Здравствуйте, cppguard, Вы писали:
C>без всяких RT-патчей и запустить на нём лишь один про
Если I/O (дрова) предсказуемы, если таймауты точны, то да. Вообще, RT — это в большей части про многозадачность, и соотв. планирование, и в этой теме больше всего ресёрча и сложности проблематики. Один единственный процесс/поток — это вырожденный случай.
Здравствуйте, cppguard, Вы писали:
C>Думал, что, начав заниматься робототехникой, окончательно разберусь с этим термином. Пока что для меня real-time является синонимом "детерминистичности".
Тоже так думаю. Достигается это ограничением времени на io операции.
C>Есть ли разница между "успеет выполнить задачу за N секунд" и пониятием real-time? Если взять Linux, без всяких RT-патчей и запустить на нём лишь один процесс, который в цикле без ветвлений что-нибудь считать, будет ли такая система real-time?
Разве не от железа это зависит в первую очередь? Не всякое железо, цпц, для RT задач пригодно, если не ошибаюсь.
Здравствуйте, Sharov, Вы писали:
S>Разве не от железа это зависит в первую очередь? Не всякое железо, цпц, для RT задач пригодно, если не ошибаюсь.
Из того, что в обычном компе какое не подходит и почему? Не вижу проблем каких-то. Понятно, что требования по абсолютным таймингам должны удовлетворяться, а в остальном?
Здравствуйте, student__, Вы писали:
__>Из того, что в обычном компе какое не подходит и почему? Не вижу проблем каких-то. Понятно, что требования по абсолютным таймингам должны удовлетворяться, а в остальном?
Единственное, что приходит в голову — свитчи эзернет, в которых может быть большой диапазон отклика в зависимости от забитости очередей кадров. Но тогда просто не использовать эзернет.
Здравствуйте, cppguard, Вы писали:
C>Есть ли разница между "успеет выполнить задачу за N секунд" и пониятием real-time?
Смотря что вкладывается в эти N секунд. Реалтайм подразумевает, что данные, на основе которых выполняется задача, не успеют "протухнуть" до момента окончания выполнения задачи. Пока твой робот думает N секунд, как ему объехать пешехода, пешеход успел сходить в магазин и обратно, за эти N секунд ))
__>Из того, что в обычном компе какое не подходит и почему? Не вижу проблем каких-то. Понятно, что требования по абсолютным таймингам должны удовлетворяться, а в остальном?
Throttling — частота плавает.
Out of order, Branch Prediction тоже могут приводить к веселым последствиям.
Кэши всякие не дают гарантии по времени доступа к памяти. Помнится для винды был типа патч, который из нее делал типа риалтайм — он вроде как раз логику работы с кэшами правил.
линукс никогда не был реалтаймом
а вообще вопрос с собеседований на котором валят всех
так как никто не знает что вкладывать в этот смысл
для меня примером реалтайма есть QNX
а в ней кажется даже драйвера в ring3
т.е. безотказность и гарантированность исполнения потока данных
как я люблю отвечать на собесах
bnk>Мое понимание такое, realtime означает что у системы есть гарантированное время обработки задач (реакции на события). bnk>Ни Windows, ни Linux этого не гарантирует (на прикладном уровне), т.к. система может заняться чем-то своим,
Вообще-то в винде предусмотрено 32 очереди и первые 16 — как раз для процессов реального времени
Которые имеют приоритет безусловно более высокий, чем вторые 16
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
bnk>>Мое понимание такое, realtime означает что у системы есть гарантированное время обработки задач (реакции на события). bnk>>Ни Windows, ни Linux этого не гарантирует (на прикладном уровне), т.к. система может заняться чем-то своим,
LVV>Вообще-то в винде предусмотрено 32 очереди и первые 16 — как раз для процессов реального времени LVV>Которые имеют приоритет безусловно более высокий, чем вторые 16
IMHO тут как бы речь о том что нельзя быть немножко беременным.
Либо система гарантирует что нечто выполнится в течение наперед заданного времени, либо нет.
LVV>>Вообще-то в винде предусмотрено 32 очереди и первые 16 — как раз для процессов реального времени LVV>>Которые имеют приоритет безусловно более высокий, чем вторые 16
bnk>IMHO тут речь бы речь о том что нельзя быть немножко беременным.
В данном случае — можно... bnk>Либо система гарантирует что нечто выполнится в течение наперед заданного времени, либо нет.
Просто есть разные классы систем реального времени.
Есть системы жесткого реально времени, а есть мягкого.
Основное различие систем жёсткого и мягкого реального времени можно охарактеризовать так:
система жёсткого реального времени никогда не опоздает с реакцией на событие,
система мягкого реального времени не должна опаздывать с реакцией на событие.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, syrompe, Вы писали:
S>Throttling — частота плавает.
отключается
S>Out of order, Branch Prediction тоже могут приводить к веселым последствиям.
просто рассчитывается исходя из худшего сценария.
S>Кэши всякие не дают гарантии по времени доступа к памяти.
То же самое (как с предыдущими пунктами, либо первое, либо второе).
Это я не к тому, что надо именно такие процессоры для всех задач реалтайм использовать, а к тому, что принципиальных проблем нет, если только в худшем сценарии удволетворяются требования к системе.