Что означает «Windows не является операционной системой реального времени»?

19

Я наткнулся на приложение под названием LatencyMon , которое, по-видимому, осуществляет мониторинг задержек.

Я всегда понимал, что чем больше нагрузка на процессор, тем менее отзывчивой или более скрытой становится система. Однако во втором разделе страницы LatencyMon первое предложение гласит: «Windows не является операционной системой реального времени» (RTOS). Это заставило меня задуматься. Я имею в виду, это отличается от любой другой операционной системы, такой как Linux, Unix или Mac OS X?

Существуют ли операционные системы в режиме реального времени? Или это просто маркетинговая схема, чтобы заставить вас купить их продукт?

РЕДАКТИРОВАТЬ:

Кроме того, есть ли примеры RTOS?

Чад Харрисон
источник
4
QNX в режиме реального времени, например.
new123456

Ответы:

21

В Википедии на самом деле есть удивительное количество информации здесь.

Операционная система реального времени (ОСРВ) - это операционная система (ОС), предназначенная для обслуживания запросов приложений в реальном времени.

Ключевой характеристикой ОСРВ является уровень ее согласованности относительно количества времени, которое требуется для принятия и выполнения задачи приложения; изменчивость джиттер. В жесткой операционной системе реального времени меньше дрожания, чем в мягкой операционной системе реального времени. Главная цель проектирования - не высокая пропускная способность, а скорее гарантия мягкой или жесткой категории производительности. ОСРВ, которая обычно или вообще может уложиться в срок, является мягкой операционной системой реального времени, но если она может определенно уложиться в срок, то это жесткая ОС реального времени.

ОСРВ имеет усовершенствованный алгоритм планирования. Гибкость планировщика обеспечивает более широкую согласованность приоритетов процессов в компьютерной системе, но ОС реального времени чаще предназначается для узкого набора приложений. Ключевыми факторами в ОС реального времени являются минимальная задержка прерывания и минимальная задержка переключения потоков; ОС реального времени ценится больше за то, насколько быстро или предсказуемо она может реагировать, чем за объем работы, которую она может выполнить за определенный период времени.

Это то, что на самом деле делают очень немногие операционные системы, потому что для многих рабочих нагрузок это просто менее эффективно. Ни одна из основных потребительских операционных систем в настоящее время (или, насколько мне известно, никогда не было) в режиме реального времени. К сожалению, это означает, что иногда вещи в среде не в реальном времени должны сидеть сложа руки в ожидании других вещей. Это становится проблемой только тогда, когда что-то не дает в разумные сроки, как правило.

В настоящее время наиболее известными, наиболее распространенными операционными системами реального времени являются:

LynxOS
OSE
QNX
RTLinux
VxWorks
Windows CE

Смотрите полный список операционных систем реального времени .

Shinrai
источник
6
Операционные системы реального времени обычно используются в очень специализированных ролях, таких как чрезвычайно точные системы управления, где решение / расчет / и т. Д. Должны быть выполнены в очень требовательный срок.
Ламар Б
Есть ли примеры RTOS? Обновление вопроса на этот счет.
Чад Харрисон
Что сказал @ ta.speot.is - в этой статье уже есть ссылки. Я буду редактировать некоторые, хотя.
Shinrai
Я не добрался до нижней части вики-страницы ... Извините, что: /
Чад Харрисон
19

Операционные системы реального времени часто используются для встроенных систем, где они могут быть ответственны за что-то вроде руководства или системного мониторинга. Главное, что нужно помнить о системе реального времени (и что отличает ее от системы не реального времени), это то, что в системе реального времени, если ответ задерживается, это неправильно. Вы можете легко увидеть, как это работает, подумав о том, чтобы сложить серию фигур в Excel (где, если операция отложена, реального воздействия не будет), а не использовать тормоз в автомобиле (где задержка может быть катастрофической).

Скотт К Уилсон
источник
10

По сути, ОСРВ может гарантировать, что может обслуживать IRQ (запрос прерывания) в определенный (обычно низкий) период времени. Стандартные операционные системы не имеют такой гарантии.

В большинстве современных систем большинство устройств могут генерировать IRQ. Это приводит к тому, что процессор останавливает (то есть прерывается) то, что он делает, и запускает программу обслуживания прерываний. Идея состоит в том, что эта сервисная программа делает все, что нужно устройству, то есть получает данные с устройства в ОЗУ, сообщает устройству, что делать дальше и т. Д.

На платформе x86, поскольку у него есть только 1 строка IRQ на ЦПУ, при получении прерывания дальнейшие прерывания автоматически отключаются (за исключением NMI, RESET и SMI), пока ЦП не распознает источник прерывания и не включит его снова. Таким образом, хорошие драйверы устройств в стандартном Windows i386 / amd64 будут выполнять минимальную обработку в этом состоянии, достаточно, чтобы можно было возобновить прерывания, а затем отложить полную обработку прерывания на более поздний срок (поскольку технически система может обрабатывать только 1 прерывание на процессор ядро за раз). Я не уверен, но я верю, что Linux делает то же самое. Тем не менее, нет точной гарантии того, что прерывание будет обслуживаться.

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

LawrenceC
источник
Не могли бы вы объяснить, что вы подразумеваете под "x86 имеет только 1 строку IRQ"? В прошлый раз, когда я подключал компьютер 80186 (по общему признанию, десятилетия назад), я, кажется, вспоминаю, что PIC 8259 имеет 8 каналов, и номинальный ПК в то время имел второй каскадный, в общей сложности 15 каналов, не включая НЙ?
Гленн
Вам нужен PIC именно потому, что у x86 есть только одна строка IRQ. Но если прерывания x86 отключены, то PIC может только ждать, пока ЦПУ повторно их включит, и IIRC это сделает именно так. Другие процессоры IIRC, такие как 68000, имели 3 контакта прерывания и ожидали кодированный уровень приоритета 0-7 прямо на самом процессоре. Хотя теперь, когда я на самом деле рассматриваю это, возможно, 68000 отключает все прерывания при получении любого IRQ - я никогда не программировал 68000.
LawrenceC
Ах да, теперь я помню. И IIRC «приоритетный» аспект конструкции чипа 8259, позволяющий обрабатывать вложенные IRQ, должен был побудить ОС отключать прерывания как можно меньше или вообще не делать этого, но линии прерываний ПК были случайным образом назначены, что побеждало это. подходить? В любом случае, конечно, вызывать любой значительный объем кода в CLI ... STI никогда не было намерением.
Гленн