Что такое ОС реального времени ? Вопрос сложный и недонозначный. Говорят о "жёстком" и "мягком" реальном времени, спорят и терминологии и определениях. ОК, пусть будет так. Но, надеюсь, никто не будет спорить с тем, что в ОС, претендующей называться ОС реального времени, время назад идти не может. А вот линуксе может. Сейчас расскажу, как это проявлется.
Нужно синхронизировать время. Получаем с источника точного времени время, которое, допустим, меньше локального. Надо потихоньку отвести время назад. Для этого говорим tickadj 9000, к примеру. Согласно всей документации после этого время должно идти медленнее, каждое прерывание должно прибавлять меньше времени к счётчику. Итого за определённое количество времени мы плавно и прорачно для приложений синхронизируемся. Какбы не так. Линукс вместо этого потихоньку маленькими шажочками отводит часы назад. Как это проверяется - есть программа, которая постоянно печатает показания времени и на этой рапечатке очень хорошо видно, как Линукс двигает время назад. Исходный код приведу ниже. Как проверить ? Говорим tickadj 9000, говорим что-то типа my_prog > log.log. Ждём несколько секунд, ^C, смотрим log.log, ищем там знак минус ("-"). Находим, пытаемся понять, почему время идёт назад.
Что же это получается, дорогие товарищи ? Как же оценивать маленькие задержки прикажите ? Счётчик uptime слишком грубый, нужно до сотни микросекунд точнось. Всё больше и больше убеждаюсь, что никто никогда Линукс для серьёзных примениний использовать даже не пробовал, честное слово.