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

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

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

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

Ответ 1

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

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

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

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

Ответ 2

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

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

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

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

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

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

Ответ 3

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

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

Ответ 4

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

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

Ответ 5

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

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