Почему Windows не считается подходящей для систем реального времени / высокопроизводительных серверов?

Надеюсь, этот вопрос не слишком субъективен, но почему Windows считается неподходящей операционной системой для систем реального времени и высокопроизводительных серверов? Существуют ли какие-либо технические документы или исследования, которые оценивают его производительность по сравнению с альтернативами * nix?

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

Обратите внимание, что я спрашиваю о Windows CE/Windows Server, а не о настольных версиях операционной системы.

5 ответов

ОС реального времени требует определенного количества детерминированного поведения. Вы хотите иметь возможность устанавливать конкретные приоритеты задач, которые всегда выполняются и имеют прерывания, которые имеют определенный приоритет. У вас не может быть ОС, которая может решить отдать приоритет демону или задаче, которая находится за пределами вашего приложения. В зависимости от вашей системы микросекунды могут иметь значение, операционная система, которая уходит на 50 пользователей для обработки демона вне вашего приложения, может быть смертельной.

С учетом сказанного это не означает, что вы не можете использовать Windows для приложений реального времени. На самом деле, я делал это несколько раз, просто аспекты в реальном времени обрабатывались аппаратными картами и буферизацией, встроенными в систему. Если ОС опаздывала на сотни миллисекунд, это просто означало, что на дисплее может быть заметный сбой в данных. Никакие данные не были потеряны или не собраны. Мы также смогли избежать проблем, настроив, какие другие задачи выполнялись (почти то же самое, что делают хардкорные геймеры).

С другой стороны, у меня недавно был запрос на создание системы реального времени, где аппаратное обеспечение реального времени будет выдавать обратный вызов, который увидит код Windows, а затем отправит сообщение USB. Сообщение должно было быть отправлено в течение микросекунд, и, независимо от задержки, она ДОЛЖНА быть детерминированной, чтобы система, получающая сообщение USB, могла компенсировать задержку. Это показалось мне чем-то, для чего Windows не подходит, и дизайн был переработан.

Несмотря на то, что этот вопрос сейчас закрыт, я решил обновить этот ответ ссылкой на более длинный пост в блоге, который я написал на эту тему.

У Windows есть давняя репутация в этом отношении, основанная, главным образом, на отдельных неудачных действиях (у каждого есть несколько, не так ли?), Которые сохраняются в результате серьезных изменений, которые устарели по старым причинам. К сожалению, подавляющее большинство системных администраторов никогда не видели ни одной из документов по настройке производительности, свободно доступных от Microsoft, и еще меньше пытались настроить свои системы соответствующим образом.

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

Наиболее важные вещи, которые вам нужно сделать: * Устранить периодические автоматизированные задания и процессы, такие как проверка и применение обновлений, обслуживание диска (например, операции дефрагментации и очистка) и полное сканирование, и перенести их на регулярно запланированные простои для обслуживания. * Достаточно памяти, чтобы система не была перегружена свопингом * Поместите свой своп в свой собственный раздел, чтобы фрагментация не мешала файлу подкачки (в некоторых из моих систем этого нет и все еще работает) * Работа с Поставщик антивируса для тонкой настройки своего продукта таким образом, чтобы он как можно меньше воздействовал на ваш сервер (ы), обеспечивая при этом адекватную защиту - большинство антивирусного программного обеспечения предназначено для использования на настольном компьютере, а не на сервере, и потребует настройки * Настройте вашу группу / локальные политики безопасности

В конце концов, в системах UN*X могут возникнуть те же проблемы, если вы не администрируете их должным образом: запланированные задания, неадекватная конфигурация подкачки и навязчивое стороннее программное обеспечение для обеспечения безопасности. Они также упускаются из виду, когда речь заходит о безопасности, так что не удивительно, когда они скомпрометированы, чем когда скомпрометирован сервер Windows.

Вы должны иметь баланс. Обе платформы могут быть одинаково плохо управляемы, и обе платформы могут быть хорошо настроены. Если вы говорите, прежде всего, с людьми, работающими на платформе UN*X, у них есть причины, по которым им нравится их платформа, и они склонны относиться к Windows, и вы получите ответы, которые отражают это. Если вы говорите с людьми из Microsoft, вы получите то же самое с их точки зрения.

Когда вы выбираете платформу, самой важной вещью должна быть поддержка вендора для вашего приложения - в какое из них они вкладывают больше средств, а в какое они больше отдают предпочтение при разработке? Что доказало свою эффективность и что будет доступно в будущем?

Системы реального времени обычно требуют максимального времени отклика. Windows не может предоставить такие гарантии.

Что касается серверов Windows, выполняющих высокую производительность, как вы думаете, что запускает Stackru?

Если вы хотите получить ответ, вы должны сообщить нам некоторые факты для работы. Кто сказал, что Windows не подходит для высокопроизводительных серверов? Мы понятия не имеем, но вы, очевидно, понимаете. Значит, вы более квалифицированы, чтобы ответить на него, чем мы?

Что касается систем реального времени? Это так. Windows не подходит, потому что это не ОС реального времени. То же самое верно для Linux и OSX, кстати. Для систем реального времени нужны довольно специализированные ОС. И основные операционные системы, нацеленные на производительность, пропускную способность и отзывчивость, не сработают, независимо от того, написаны они Microsoft или кем-то еще.

Ответы, которые вы получили, были правильными: Windows просто не является ОСРВ. Чтобы быть одним из них, он должен быть в состоянии сделать конкретные гарантии в отношении планирования. Поведение, необходимое для этого, не особенно совместимо с тем, что подходит для обычного сервера или рабочей станции.

Что касается "высокой производительности", это просто расплывчато. Серверные выпуски Windows могут запускать высокопроизводительные системы.

Другие вопросы по тегам