Выбор типа операционной системы часто представляет собой нетривиальную задачу. Некоторые приложения накладывают жесткие требования, которым удовлетворяет только небольшое количество систем. Например, задачи управления промышленным или исследовательским оборудованием в режиме жесткого реального времени вынуждают нас делать выбор между специализированными ОС реального времени и некоторыми ОС общего назначения, такими как Unix System V Release 4 (хотя Unix SVR4 теоретически способна обеспечивать гарантированное время реакции, системы этого семейства имеют ряд недостатков с точки зрения задач РВ, поэтому чаще всего предпочтительными оказываются специализированные ОС -- QNX, VxWorks, OS-9 и т. д.). Другие приложения, например серверы баз данных, просто требуют высокой надежности и производительности, что отсекает системы класса ДОС и MS Windows.
Наконец, некоторые задачи, такие как автоматизация конторской работы в небольших организациях, не предъявляют высоких требований к надежности, производительности и времени реакции системы, что предоставляет широкий выбор между различными ДОС, MS Windows, Mac OS и многими системами общего назначения. При этом технические параметры системы перестают играть роль, и в игру вступают другие факторы. На заре развития персональной техники таким фактором была стоимость аппаратного обеспечения, вынуждавшая делать выбор в пользу ДОС и, позднее, MS Windows.
Рис. В2. Генеалогия ОС семейства СР/М
Нужно отметить, впрочем, что современные версии Windows, несмотря на низкую надежность, сложность конфигурации и поддержки и ряд функциональных недостатков, вполне адекватны большинству задач конторской автоматизации. Проблемы возникают, когда задачи, стоящие перед организацией, выходят за пределы распечатки прайс-листов из MS Excel и набора писем в MS Word. Лучше всего проблемы этого рода выражены в следующей притче.
Проблема
Организация имеет двенадцать велосипедов. Стоит задача: перевезти рояль. Что делать? Грузовик не предлагать.
Основная проблема MS Windows состоит вовсе не в том, что это не "настоящая" операционная система - "велосипед", в терминах процитированной притчи, а в том, что она не обеспечивает путей плавного и безболезненного перехода к другим платформам, даже если возникнет необходимость такого перехода. Строго говоря, тот же недостаток свойственен многим другим закрытым (closed) платформам, поставляемым одной фирмой и использующим нестандартные "фирменные" интерфейсы. Пока "закрытое" решение соответствует вашим требованиям, все хорошо, но когда вы выходите за пределы технологических возможностей данного решения, вы оказываетесь в тупике.
Открытые системы
Альтернативой закрытым решениям является концепция открытых систем. Идея открытых систем исходит из того, что для разных задач необходимы разные системы — как специализированные, так и системы общего назначения, просто по-разному настроенные и сбалансированные. Сложность состоит в том, чтобы обеспечить:
- взаимодействие разнородных систем в гетерогенной сети;
- обмен данными между различными приложениями на разных платформах;
- переносимость прикладного ПО с одной платформы на другую, хотя бы путем перекомпиляции исходных текстов;
- по возможности однородный пользовательский интерфейс.
Эти задачи предполагается решать при помощи открытых стандартов -стандартных сетевых протоколов, стандартных форматов данных, стандартизации программных интерфейсов — API (Application Program Interface, интерфейс прикладных программ) и, наконец, стандартизации пользовательского интерфейса.
В качестве стандартного сетевого протокола предлагалась семиуровневая модель OSI, но прежде, чем на основе этой модели было разработано что-то
полезное, получило широкое распространение семейство протоколов TCP/IP. Документация по протоколам этого семейства имеет статус public domain (общественная собственность); кроме того, есть, по крайней мере, одна программная реализация этого протокола, также имеющая статус public domain — сетевое ПО системы BSD Unix, это стало вполне приемлемым основанием для применения TCP/IP в открытых системах.
Обсуждение стандартных форматов данных увело бы нас далеко от основной темы, но нужно отметить следующее: в настоящее время существует много общепризнанных стандартов представления изображений (особенно растровых) и звуковых данных, но некоторые типы данных так и не имеют признанной стандартной формы. Например, есть несколько открытых форматов представления форматированного текста: troff, LATEX и другие пакеты макросов для системы ТЕХ, и, наконец, стандарт SGML (Standard Generalized Markup Language), но ни один из этих стандартов не пользуется популярностью среди разработчиков коммерческих текстовых процессоров
(Справедливости ради нужно отметить, что форматы troff и LATEX очень неудобны для WYSIWYG текстовых процессоров, но SGML разрабатывался специально для них). Причины такого отношения понятны: предоставление пользователю возможности без проблем обмениваться данными с текстовым процессором конкурента означает дать пользователю возможность выбирать между твоим процессором и его. Впрочем, пользователю от понимания не легче.
Для того чтобы как-то обеспечить переносимость программ между системами различных типов, принимались различные стандарты интерфейса между пользовательской (обычно говорят-- прикладной, но это не всегда правильно) программой и ОС. Одним из первых таких стандартов был стандарт библиотек ANSI С. Он основан на системных вызовах ОС Unix, но функции MS DOS для работы с файлами (использующие file handle) тоже достаточно близки к этому стандарту.
Позднее делалось еще несколько попыток стандартизировать интерфейс системных вызовов. Одной из относительно удачных попыток такого рода был POSIX (Portable Operating System Interface [based on] uniX — переносимый интерфейс операционной системы, основанный на Unix), который в той или иной форме поддерживается всеми системами семейства Unix и некоторыми ОС, не входящими в это семейство, например Windows NT. Но наибольший успех имела деятельность консорциума Х/Ореп, который в 1998 году сертифицировал операционную систему OS/390 фирмы IBM как соответствующую спецификациям Unix/95 [ www.opengroup.org xu007] и, таким образом, дал представителю самого древнего из современных родов операционных систем право называться UNIX ™.
Впрочем, данная книга не претендует на исчерпывающее руководство по выбору операционной среды, а тем более на справочник по программированию
или поддержке конкретной операционной системы. Наша задача — дать обзор основных задач, которые встают перед разработчиками операционной системы, и путей их решения, которые были найдены в ходе развития вычислительных технологий.