Я наткнулся на приложение под названием LatencyMon , которое, по-видимому, осуществляет мониторинг задержек.
Я всегда понимал, что чем больше нагрузка на процессор, тем менее отзывчивой или более скрытой становится система. Однако во втором разделе страницы LatencyMon первое предложение гласит: «Windows не является операционной системой реального времени» (RTOS). Это заставило меня задуматься. Я имею в виду, это отличается от любой другой операционной системы, такой как Linux, Unix или Mac OS X?
Существуют ли операционные системы в режиме реального времени? Или это просто маркетинговая схема, чтобы заставить вас купить их продукт?
РЕДАКТИРОВАТЬ:
Кроме того, есть ли примеры RTOS?
Ответы:
В Википедии на самом деле есть удивительное количество информации здесь.
Это то, что на самом деле делают очень немногие операционные системы, потому что для многих рабочих нагрузок это просто менее эффективно. Ни одна из основных потребительских операционных систем в настоящее время (или, насколько мне известно, никогда не было) в режиме реального времени. К сожалению, это означает, что иногда вещи в среде не в реальном времени должны сидеть сложа руки в ожидании других вещей. Это становится проблемой только тогда, когда что-то не дает в разумные сроки, как правило.
источник
Операционные системы реального времени часто используются для встроенных систем, где они могут быть ответственны за что-то вроде руководства или системного мониторинга. Главное, что нужно помнить о системе реального времени (и что отличает ее от системы не реального времени), это то, что в системе реального времени, если ответ задерживается, это неправильно. Вы можете легко увидеть, как это работает, подумав о том, чтобы сложить серию фигур в Excel (где, если операция отложена, реального воздействия не будет), а не использовать тормоз в автомобиле (где задержка может быть катастрофической).
источник
По сути, ОСРВ может гарантировать, что может обслуживать IRQ (запрос прерывания) в определенный (обычно низкий) период времени. Стандартные операционные системы не имеют такой гарантии.
В большинстве современных систем большинство устройств могут генерировать IRQ. Это приводит к тому, что процессор останавливает (то есть прерывается) то, что он делает, и запускает программу обслуживания прерываний. Идея состоит в том, что эта сервисная программа делает все, что нужно устройству, то есть получает данные с устройства в ОЗУ, сообщает устройству, что делать дальше и т. Д.
На платформе x86, поскольку у него есть только 1 строка IRQ на ЦПУ, при получении прерывания дальнейшие прерывания автоматически отключаются (за исключением NMI, RESET и SMI), пока ЦП не распознает источник прерывания и не включит его снова. Таким образом, хорошие драйверы устройств в стандартном Windows i386 / amd64 будут выполнять минимальную обработку в этом состоянии, достаточно, чтобы можно было возобновить прерывания, а затем отложить полную обработку прерывания на более поздний срок (поскольку технически система может обрабатывать только 1 прерывание на процессор ядро за раз). Я не уверен, но я верю, что Linux делает то же самое. Тем не менее, нет точной гарантии того, что прерывание будет обслуживаться.
Для большинства ПК-устройств, таких как диски, клавиатуры, сетевые платы, если есть небольшая задержка в обслуживании их IRQ, ничего плохого не произойдет, кроме потери производительности. Это может быть большей проблемой для таких устройств, как аудио и видео вход, где устройство ничего не буферизует, и ПК действительно должен не отставать от входящего потока данных.
источник