Ничто не бывает идеальным, однако во многих областях человеческой деятельности несовершенство выполняемых процессов может привести к катастрофе. Как известно, самым уязвимым элементом любого технологического или информационного процесса является сам человек. Если речь идёт о производстве программного обеспечения, то в среднем программист совершает около 50 ошибок на каждую тысячу строк кода. Тестирование софта позволяет уменьшить число ошибок на каждую тысячу строк в пять раз, однако всестороннее тестирование, предполагающее три стадии проверки, во-первых, проводится не всегда в полном объёме, а во-вторых, оно не в состоянии выявить всех ошибок. Безошибочно любая компьютерная программа может проработать лишь тот срок, во время которого она тестировалась – соответственно, чем дольше этот период, тем совершеннее программа.

В сознании обывателя идеальный софт тот, который не требует инсталляции, маленький, элементарно-простой и абсолютно стабильный. Например, универсальная программа взлома Lomlka_saitov.exe будет выглядеть примерно так: поле для ввода веб-адреса (или даже физического адреса) и огромная красная кнопка ВЗЛОМАТЬ. Средство абсолютной анонимности Mutant_IP.exe вообще потребует всего одного запуска, после чего всегда будет прятаться в оперативной памяти, довольствуясь скромными пятью мегабайтами. Никаких вылетающих окошек, мегатонн вкладок с настройками, проблем совместимости с фаерволлами.

Доля правды в таких размышлениях есть – чем меньше софт, тем меньше в нём ошибок. Однако количество выполняемых функций пока что обратно пропорционально размеру. И если для обычного пользователя вполне реально создать 100 килобайтную, идеальную для каких то определённых задач
программу, то для решения действительно сверхважных задач, потребуется программа, обрабатывающаяся на мейнфреймах. Как не цинично это прозвучит, падение операционной системы отдельно взятого пользователя, проблема самого пользователя. Чаще всего подобные накладки происходят из-за ошибок в самом главном софте – человеческом мозге. Тут уже никакие отладки не помогут. Другое дело, если из-за системного сбоя мы теряем спутник стоимостью 150 миллионов долларов. Или случайно вызываем пуск термоядерной боеголовки, нацеленной на Солт-Лейк-Сити.

Как же добиться того, что бы софт работал идеально? Мы можем разделить программу на несколько копий и запускать их параллельно, с автоматическим сличением промежуточных результатов. Четыре идентичных компьютера, работающие под управлением идентичного ПО, собирают информацию из тысяч датчиков, принимая сотни миллисекундных решений, утверждая каждое решение, сверяясь друг с другом 250 раз в секунду – и всё для того, чтобы контролировать запуск орбитально-космического аппарата. Пятый компьютер, с другим ПО, готов взять управление на себя в случае сбоя остальных четырех. И ведь это ПО никогда не падает, никогда не требует перезагрузки и почти никогда не совершает ошибок. Оно практически совершенно, настолько совершенно, насколько человек смог этого достичь. Последняя версия программного обеспечения, обеспечивающего запуск ракетоносителей и их доставку на орбиту, содержит почти 500000 строк кода и только 1 ошибку в каждой тысячи строк. Последние 11
версий этого ПО имели в сумме 17 ошибок. Коммерческие программы, подобного уровня сложности имели бы 5000 ошибок.

Однако и это ПО не идеально. Определённый класс ошибок остаётся невидимым даже при работе программы на разных платформах: попросту говоря, если программа использует неправильную формулу, результат вычислений будет неправильным вне зависимости от того, на каком процессоре идёт работа. Классический пример такой ошибки известен из практики NASA: в 1981 году в программном обеспечении бортовых компьютеров Space Shuttle была найдена именно такая ошибка, к счастью, не успевшая себя проявить. И это несмотря на то, что все компьютеры Space Shuttle дублируют друг друга.

Но это о софте самописном, созданном в лаборатории. Что если не отказываться от коммерческих и «открытых» разработок? Так во многих случаях поступают в вооруженных силах, особенно в РФ, которая в софтостроении сильно отстала от быстроразвивающегося Запада. Военные операционные системы в нашей стране разрабатывает ОАО «ВНИИНС» (Всероссийский научно-исследовательский институт автоматизации управления в непромышленной сфере) по заказу министерства обороны. «ВНИИНС» на настоящий момент разработало четыре операционные системы: МСВС (Мобильная Система Вооруженных Сил), ОМОНИМ и ОЛИВИЯ (к сожалению, о четвёртой, на данный момент последней разработке, информацию не удалось найти ни в открытых, ни в закрытых источниках). Основной платформой общего назначения является
МСВС, которая, как и две другие ОС, создана на основе Linux. Система предназначена для построения стационарных защищенных автоматизированных систем и с 2002 года поставляется в ВС России. Исходя из требований ВС, акцент в ОС сделан как на защите от несанкционированного доступа, так и на отсутствии недекларированных возможностей. Будучи многозадачной сетевой ОС, МСВС функционирует на аппаратных платформах Intel, Sparc и MIPS.

В целях усиления безопасности в МСВС введена децентрализация администрирования системы. Управление ОС распределено между несколькими административными группами: конфигурирования, безопасности и аудита.

ОМОНИМ – защищённая ось для майнфреймов. Разработана на основе ОС Linux, функционирует на аппаратной платформе IBM S/390, имеет графический интерфейс (?).

ОЛИВИЯ является версией ОС для построения защищенных автоматизированных систем мобильного базирования. Операционная система Оливия предназначена для применения на средствах вычислительной техники с минимальными требованиями к аппаратным ресурсам.

Другой военной ОС является PTS-DOS, разработка компании «Физтех-софт». Эта ОС, отличающаяся компактностью (помещается на одной дискете), представлена в двух версиях - PTS-DOS 32 и PTS-DOS 2000. Данная ОС совместима с MS-DOS и оптимизирована под экономию памяти. В пакет входят одноранговая локальная сеть LotLAN и все основные утилиты. Под названием DOS-Багет эта система используется министерством обороны РФ, а специально разработанная версия применяется на спутниках типа «Ураган».

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

  • VxWorks предназначены для разработки программного обеспечения встраиваемых компьютеров, работающих в системах жесткого реального времени. Разработка ведётся на инструментальном компьютере (host) в среде Tornado для дальнейшего ее использования на целевом компьютере (target) под управлением системы
    VxWorks.
  • QNX Neutrino Realtime Operating System (RTOS) – микроядерная операционная система, которая обеспечивает многозадачный режим с приоритетами. В среде QNX каждый драйвер, приложение, протокол и файловая система выполняются вне ядра, в защищенном адресном пространстве. В случае сбоя любого компонента он может автоматически перезапуститься без влияния на другие компоненты или ядро. Все модули полагаются на базовое ядро и спроектированы таким образом, что не могут использоваться в других средах.
  • RTEMS (Real-Time Executive for Multiprocessor Systems) – это некоммерческая операционная система реального времени для глубоко встраиваемых систем. Система была создана по заказу министерства обороны США для использования в системах управления ракетными комплексами. Система разрабатывается для многопроцессорных систем на основе открытого исходного кода в противовес аналогичным системам с закрытым кодом. Система рассчитана на платформы MS-Windows и Unix (GNU/Linux, FreeBSD, Solaris, MacOS X). RTEMS можно рассматривать как набор компонентов, обеспечивающих ряд базовых сервисных функций для программ пользователя. Программный интерфейс приложения состоит из директив, распределенных по логическим наборам соответствующих менеджеров. Функции, используемые несколькими менеджерами, такие как распределение процессорного времени, диспетчеризация и управление объектами, реализованы в ядре. Ядро содержит также небольшой набор процедур, зависящих от типа используемого процессора: доступ к физической памяти, инициализация контроллера прерываний и периферийных устройств, специфичных для данного процессорного ядра, и т.д.
  • TinyOS – реализация идей агенства Darpa (Defense Advanced Research Projects Agency), в частности, для отслеживания передвижений противника согласно технологии Motes. Сенсоры Motes, распределенные в пространстве, могут самостоятельно связываться друг с другом, образуя распределенную беспроводную информационную сеть. Система состоит из 8-битового микроконтроллера семейства Amtel AVR, приемопередающего интегрального модуля TR1000 и двух микросхем средней степени интеграции – энергонезависимой памяти и дополнительного загрузочного микроконтроллера, позволяющего по радиоканалу обновлять ПО центрального процессора. При проектировании
    TinyOS основными требованиями являлись достижение энергетической эффективности и создание высокого уровня абстракции системных вызовов для упрощения разработки программ. Эта система обладает всеми отличительными признаками развитой ОС – в первую очередь, крайне простой, но достаточно развитой компонентной моделью.

На одно только перечисление всех операционных систем реального времени не хватит не только статьи, но и всего журнала, так что на этом мы и остановимся.

Однако все перечисленные (и не перечисленные, но относящиеся к данной тематике) системы, не смотря даже на то, что они используется на ядерных объектах, не обеспечивают 100 % надёжности. Так как они созданы были не вами и не для ваших индивидуальных задач. Более простое и логичное решение кроется в двойной разработке программного обеспечения. Мы формируем две (и более!) независимые группы разработчиков, перед которыми ставим одну и ту же задачу. Несколько копий созданных ими программ, работающих параллельно, как раз и обеспечат необходимый для критически важных задач уровень надёжности.

Как мы видим из перечисленных систем и способов «идеальному» ПО далеко до лёгкости и изящности. Возможно ли установить взаимосвязь между сложностью системы и её совершенством? Вопрос скорее философский, чем технологический. Однако пока мы создаём системы, которые не умнее чем мы сами, ошибки неизбежны. И идеальная атака (привет
49-у спецхакеру!) и идеальная защита, вкупе с идеальной стабильностью остаются такой же недостижимой мечтой как идеальная девушка. Как и любой другой идеал. Возможно в недалёком будущем, когда человечество перешагнёт загадочную точку сингулярности, машины научатся сами писать для себя программы, отлаживать и тестировать их до бесконечности… И тогда катастрофы шаттлов, ошибки военных, проклятья в адрес транснациональных софтостроителей навсегда уйдут в прошлое (если, конечно же, квантовые суперкомпьютеры не сойдут с ума, пытаясь устранить не устранимую ошибку природного несовершенства вселенной). И наступит мир во всём мире, конечно же
;).

Но будет ли идеальный мир совершенен? Как вообще можно жить в мире, где существует софт для идеальной атаки и идеальной защиты? Это не ответ на вопрос «возможно ли создать идеальной софт», скорее, попытка понять, что именно является идеалом. Возможно, разгадка одной из главных тайн вселенной кроется в старом анекдоте: «Это правда, что каждый сотый парашют не раскрывается. Поэтому после 99-го парашютиста у нас всегда прыгает 101-й».

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии