Текущая редакция стандарта на ОС содержит определения около тысячи системных вызовов (часть из которых должна реализоваться только в определенных классах систем; например, в системах «реального времени») и около двухсот команд оболочки и утилит ОС. Стандарт определяет лишь функции вызовов и команд, и не содержит указаний относительно способов их реализации.
   Стандарт, кроме этого, определяет способ адресации файлов в системе, локализацию (установки, касающиеся национально-специфических моментов, таких, как язык сообщений или формат даты и времени), совместимый набор символов, синтаксис регулярных выражений, структуру каталогов в файловой системе, формат командной строки и некоторые другие аспекты поведения ОС.
   В определении состава ОС значение имеет критерий операциональной целостности (замкнутости): система должна позволять полноценно использовать (включая модификацию) свои компоненты. Поэтому в полный состав ОС включается и набор инструментальных средств (от текстовых редакторов до компиляторов, отладчиков и компоновщиков). Операциональной замкнутостью обладают системы, удовлетворяющие «разработческому» профилю в терминах стандарта.
   Краткая история открытых ОС
   К концу шестидесятых годов XX в. операционным системам как классу программного обеспечения шел уже второй десяток. Были разработаны больше сотни различных ОС для разных компьютеров, из них полтора десятка находились в «боевой» эксплуатации. На рубеже шестидесятых и семидесятых в одном из исследовательских подразделений американской телекоммуникационной монополии «Эй-Ти-энд-Ти» была выполнена разработка, ставшая важнейшей вехой в истории ОС: система «Юникс».
   Задуманная и реализованная Кеном Томсоном при участии нескольких коллег, она вобрала в себя многие черты более ранних ОС, но обладала целым рядом свойств, отличающих ее от большинства предшественниц:
   компонентная архитектура: принцип «одна программа — одна функция» плюс мощные средства связывания различных программ для решения возникающих задач;
   минимизация ядра (кода, выполняющегося в привилегированном режиме процессора) и количества системных вызовов;
   независимость от аппаратной архитектуры и реализация на языке высокого уровня (язык программирования С стал «побочным продуктом» разработки «Юникс»).
   «Юникс», благодаря своему удобству прежде всего в качестве инструментальной среды (среды разработки), была тепло принята сначала в университетах, а затем и в отрасли, получившей прототип единой ОС, которая могла использоваться на самых разных вычислительных системах и, более того, быстро и с минимальными усилиями перенесена на вновь разработанную аппаратную архитектуру.
   Одним из центров развития «Юникс» стал Университет Калифорнии в Беркли, там было создано множество средств, дополняющих систему и развивающих ее концепцию. В конце концов, в Беркли создали свой вариант ОС той же архитектуры, получивший название «БСД».
   Задачу разработать независимую (от авторских прав «Эй-Ти-энд-Ти») реализацию той же архитектуры поставил и Ричард Столлмен, основатель проекта «ГНУ» (характерно, что аббревиатура расшифровывается как GNU’s Not Unix, т.е. «ГНУ — это не “Юникс”»). В ходе разворачивания проекта (1980-90е гг.) было создано множество утилит и инструментальных средств, которые сегодня активно используются в «БСД» (входя в систему) и «Юникс» (как правило, распространяемые в качестве дополнений), а также являющихся основой операционных систем на основе ядра «Линукс», разработка которого была запущена и возглавляется с начала девяностых Линусом Торвальдсом.
   Таким образом, на сегодня существует три семейства открытых операционных систем, концептуально происходящих от «Юникс», но реализованных независимо:
   основанные на «Эй-Ти-энд-Ти Юникс» (в разнообразных фирменных вариантах, таких как AIX (компания IBM), «Солярис» (компания Sun Microsystems) и т.п.),
   «БСД» (в него входят FreeBSD, OpenBSD, NetBSD, а также Darwin, являющаяся основой MacOS X),
   «ГНУ/Линукс» (в различных вариантах, или дистрибутивах, таких как Debian GNU/Linux, RedHat Linux, Linux-Mandrake и пр.)
   Системы, содержащие код, изначально написанный в AT&T, несвободны[5], а «БСД» и «ГНУ/Линукс» разрабатываются под свободными лицензиями.
   Благодаря конкурентности реализаций архитектура открытых ОС стала вначале фактическим отраслевым стандартом, а затем обрела статус и стандарта юридического (свежая версия принята Международной организацией стандартизации (ISO) в 2001 г.).
   Стандартизация ОС означает возможность безболезненной замены самой ОС или оборудования при развитии вычислительной системы или сети и дешевого переноса прикладного программного обеспечения (строгое следование стандарту предполагает полную совместимость программ на уровне исходного текста; из-за профилирования стандарта и его развития некоторые изменения иногда все же необходимы, но перенос программы между открытыми системами на порядки дешевле, чем между альтернативными), а также преемственности опыта пользователей.
   Самым заметным эффектом существования этого стандарта стало эффективное разворачивание сетей Интернет в девяностых годах.
   Вытеснение открытыми ОС альтернативных архитектур — медленный и сложный процесс. Хотя открытые системы сегодня существуют для вычислительных систем практически всех типов — от встроенных и карманных компьютеров до суперсерверов и мэйнфреймов — доля их в разных сегментах рынка неодинакова. Открытые ОС уверенно доминируют в серверном сегменте (особенно в сетевых приложениях), но распространены на ПК и рабочих станциях нижнего уровня пока менее широко, чем альтернативные.
   Роль свободных операционных систем
   В последние 5-7 лет рост пользовательской базы открытых ОС в основном происходит за счет распространения их свободных вариантов — «БСД» и «ГНУ/Линукс» — причем темп задает сейчас «ГНУ/Линукс».
   Спецификой рынка свободных ОС, особенно, основанных на ядре «Линукс», является их существование в виде «популяции» параллельно развивающихся вариантов, называемых «дистрибутивами» (от англ. distributive kit — «распространяемый комплект»). Обычно дистрибутив включает в себя, помимо системных программ, большое количество прикладных программ и пакетов.
   Несвободные открытые операционные системы
   Свое значение сохраняют и несвободные открытые операционные системы, такие как «Солярис», «AIX», «Тру64 Юникс». Как правило, они применяются в сочетании с соответствующими аппаратными платформами, сопровождаются и поддерживаются производителями последних. Большинство свободных прикладных программ и пакетов перенесены или легко переносятся на такие ОС.
   Альтернативные операционные системы
   Большинство альтернативных (нестандартных) операционных систем вытеснены сегодня в ниши и не претендуют на универсальность. Ниже рассмотрены исключения.
   «Майкрософт Уиндоуз НТ» («Майкрософт Уиндоуз 2000», «Майкрософт Уиндоуз Экс-Пи»). ОС этой серии позиционируются компанией «Майкрософт» как альтернатива стандартным (открытым) ОС и получили широкое распространение в сегменте однопользовательских настольных микрокомпьютеров («ПК») архитектуры x86/IA-32. «НТ» — дальний потомок ОС «Ар-Эс-Экс» и «Ви-Эм-Эс» корпорации «Диджитал», вытесненных в свое время открытыми ОС с миникомпьютеров.
   Для «Майкрософт Уиндоуз НТ» существуют специальные пакеты (Cygwin, UWIN, UNIX Services for Windows), эмулирующие системные вызовы, оболочку и утилиты открытых ОС на платформе этой ОС, так же, как и реализации стандартной графической платформы («Оконной системы Икс»). Кроме того, для многих программ и пакетов с графическим интерфейсом существуют «родные» переносы в «НТ» (т.е. с заменой стандартной графики на интерфейс Win32).
   Обольщаться по этому поводу не стоит: опыт применения альтернативных ОС в большинстве случаев окажется более чем ущербным.
   «МС-ДОС» («Майкрософт Уиндоуз 3.х, 9х, Ми»). Для ОС этой серии также существуют эмулирующие стандартную архитектуру пакеты и переносы популярных свободных программ, однако многие механизмы (например, распределение полномочий) здесь отсутствуют в принципе.
   «Классическая» «МакОС». Под торговой маркой «МакОС» вплоть до версии «МакОС X» (исключительно) компания «Эппл Компьютерз» поставляла самодельные ОС для своих ПК «Эппл Макинтош», до сих пор находящиеся в эксплуатации. Под «классическую» «МакОС» перенесено лишь небольшое количество свободных программ.
   Следует заметить, что сегодня «Эппл» под той же торговой маркой поставляет «МакОС X» — «бутерброд» из свободной открытой ОС «Дарвин» и проприетарных графических компонентов; под «Дарвин» существуют (или легко осуществимы) переносы большей части свободных программ и пакетов. Старые ПК «Макинтош», ресурсов которых недостаточно для запуска «МакОС Х», могут быть модернизированы установкой на них «ГНУ/Линукс» соответствующей версии.

1.2 Практическая интеграция

   Сильными техническими сторонами открытых ОС, выгодно отличающими их от любых альтернатив в плане практической интеграции (разворачивания, поддержания в работоспособном состоянии, непротиворечивого расширения и наращивания), являются:
   поддержка широкого спектра аппаратных платформ (самыми «всеядными» являются системы на основе ядра «Линукс»);
   поддержка различных топологий многопользовательских систем: от совокупности независимых рабочих станций до многотерминальных систем, в том числе, включающих компьютеры на разных аппаратных платформах.
   В качестве существенной проблемы, сдерживающей стандартизацию во многих категориях систем, часто называют сложности с поддержкой многих устройств «потребительского» класса, ориентированных на архитектуры «IA-32» (IBM PC-совместимые) и «PowerPC» («Макинтоши»). Поставщики таких устройств нередко утаивают важные технические параметры и другую информацию, необходимую для разработки драйверов для своих видеокарт, модемов и пр.
   Мы склонны считать это скорее проблемой в политике закупок, чем проблемой открытых ОС. Помимо всего прочего, владельцы таких изделий сплошь и рядом сталкиваются со сложностями и при смене версий ОС, поддерживаемых их поставщиками (производитель может прекратить свое существование или поддержку конкретного устройства или поссориться с разработчиком самой такой ОС). При приобретении оборудования, которое будет эксплуатироваться длительное время, всегда следует обращать внимание на доступность технической документации[6], а не только «пользовательских инструкций».
   Поддержка различных топологий важна, поскольку позволяет найти применение, в том числе, и устаревающему (недостаточному по своим характеристикам для непосредственного исполнения нужных программ) оборудованию. Старые IBM PC-совместимые компьютеры или «Макинтоши» ранних моделей (в том числе, на основе процессоров от Motorola) могут включаться в сеть в качестве X-терминалов, и даже уже не выпускаемые алфавитно-цифровые терминалы можно присоединить к дешевому мультиплексору.
   Топологии. Вообще говоря, топологии вычислительных систем (например, учебных классов) можно разделить на следующие категории.
   1. Совокупность автономных рабочих станций (standalone WS; персональных компьютеров). Каждая станция содержит копию ОС и необходимых прикладных пакетов, пользовательские файлы хранятся также на локальном диске. Эта топология исключает затраты на разворачивание и поддержание локальной сети, однако без всякого преувеличения ее можно назвать «администраторским адом»: даже такая простая операция как обновление какого-либо программного пакета, требует «врачебного обхода» всех машин, которых может быть и десяток, и сотня. Кроме того, на пользователей ложится забота о воспроизведении своих данных в следующем сеансе (например, сохранением их на съемный носитель или жестким закреплением мест в классе за пользователями), что отнимает массу времени и приводит к неразберихе. Сильной ее стороной является высокая «живучесть»: выход из строя любого устройства означает в худшем случае утрату работоспособности одного рабочего места.
   2. Система рабочих станций без данных (dataless WS). Рабочая станция без данных также содержит локальную копию ОС и прикладных пакетов, однако рабочие каталоги пользователей хранятся на файл-сервере локальной сети, объединяющей станцию. Та же сеть может использоваться и для централизованного администрирования систем, и встроенные административные средства открытых систем делают выполнение типовых процедур достаточно эффективным. Однако возрастают издержки за счет расходов на сеть и рисков выхода из строя сервера, что повлечет за собой неработоспособность целого класса или нескольких классов.
   3. Система бездисковых (diskless) рабочих станций. Бездисковые рабочие станции подобны рабочим станциям без данных с тем дополнением, что не только данные, но и ОС и прикладные программы хранятся на файл-сервере. Сеть бездисковых станций предъявляет более высокие требования к производительности сервера и сети, чем сеть станций без данных, однако сами станции несколько дешевле, и администрировать такую систему еще проще.
   4. Система терминалов («тонких клиентов») и прикладного сервера. В отличие от сети рабочих станций («толстых клиентов»), концепция «тонких клиентов» предполагает, что на рабочем месте исполняются только терминальные функции, а сами программы (и системные, и прикладные) запускаются на выделенном сервере. Эта топология предъявляет самые высокие требования к производительности и надежности сервера и сети, зато сами терминалы могут быть очень дешевыми и при этом надежными (нагрузка на процессор в терминале невысока, он может работать без принудительного охлаждения, диска в терминале нет в принципе, таким образом, X-терминал может быть собран вообще без движущихся частей).
   (Интересной «вариацией на тему» является разработка Московского государственного индустриального университета «Горыныч», представляющая собой двух— или трехтерминальный комплекс, собранный на основе одного IBM PC-совместимого системного блока и работающий под управлением ОС «ГНУ/Линукс» (www.ctc.msiu.ru). Отличие от классической терминально-серверной архитектуры заключается в том, что дополнительные «терминалы» (видеоадаптеры и USB-клавиатуры и мыши) включаются не в локальную сеть, а в шину отдельного компьютера.).
   5. Смешанные топологии. В одной и той же сети могут сосуществовать терминалы с рабочими станциями. Кроме того, машины с маргинальной производительностью могут использоваться в качестве рабочих станций при запуске «легких» (нетребовательных к ресурсам) программ и как терминалы — при исполнении «тяжелых» (ресурсоемких).
   Существуют методики выбора оптимальной топологии исходя из профиля рабочих задач, конъюнктуры рынка и параметров уже эксплуатируемого оборудования. Скорее всего, в отличие от коммерческой среды, в реальных сегодняшних школьных условиях, включающих хроническое недофинансирование и спорадические, зависящие больше от вышестоящих органов, чем от самих школ, закупки и поставки оборудования, эти методики редко применимы. Однако сама гибкость топологии позволяет эффективным образом использовать и вновь приобретаемое, и уже имеющееся, и устаревающее оборудование.
   Подбор оборудования. Все элементы перечисленных топологий, включая терминалы, рабочие станции и серверы, могут реализоваться на основе самого массового IBM PC-совместимого оборудования. Кроме того, можно задействовать менее распространенные PowerPC— и UltraSPARC-машины, а также старые «Макинтоши» на основе Motorola 68K (в качестве терминалов). В нашу школу вряд ли попадет что-то более экзотическое.
   Стартовая мощность X-терминала — Intel 486DX-66 или эквивалентный по производительности процессор (хотя теория показывает возможность запуска X на процессорах i486SX и i386, нам не доводилось видеть, чтобы это приводило к удовлетворительным результатам) с 16 МБ памяти.
   Рекомендуемый начальный уровень рабочих станций — PII600 или Celeron 800 со 128 МБ ОЗУ (многие программы могут нормально эксплуатироваться при гораздо меньшей производительности).
   Для нормальной работы в бездисковой топологии сеть желательна (а при терминальной — необходима) как минимум 100-мегабитная.
   Производительность серверов необходимо расчитывать; на сайтах производителей можно найти методики оценки.
   Как уже отмечалось, нужно по возможности следить за доступностью технической документации на комплектующие (или, что то же самое, за их присутствием в списках аппаратной совместимости ведущих поставщиков «Линукс»— и «БСД»-систем).
   Рекомендуемые параметры мониторов определяются Гигиеническими требованиями, принимаемыми Министерством образования; практика показывает, что их лучше соблюдать.
   Еще один совет, который можно найти в рекомендациях по интеграции, устарел: одно время были популярны упрощенные «мыши» без средней кнопки, работать с которыми в современных графических средах не слишком удобно, и их рекомендовали избегать, однако сегодня большинство «мышей» снабжены колесом прокрутки, также действующим как средняя кнопка.
   Администрирование. К задачам администрирования относится установка и обновление программ и пакетов, управление пользователями (распределение полномочий), резервное копирование данных, определение технической политики взаимодействия системы со внешними сетями и т.п.
   Плохая новость заключается в том, что администратор — дорогая рабочая сила. Хорошая — в том, что при правильном проектировании и разворачивании системы последующее администрирование требует минимальных усилий.
   При стабильном исполнении типовых задач один подготовленный специалист может осуществлять текущее администрирование десятков независимых систем (не считая систем, являющихся простыми копиями друг друга, например, одинаковых рабочих станций в учебном классе). Системный администратор на полный рабочий день может потребоваться разве что «набитой под завязку» техникой школе; в большинстве же случаев оптимальным решением будет приходящий специалист на неполный рабочий день или договор на выполнение административных функций со специализированной компанией (возможно, как часть договора на поставку систем или интеграцию).
   «ГНУ/Линукс» и «БСД». Существуют два распространенных мифа относительно дистрибутивов, основанных на ядре «Линукс», с одной стороны, и восходящих к «БСД» — с другой.
   Первый из них заключается в том, что «“Линукс” — для клиентов, “БСД” — для серверов». Это неправда не только в части «Линукс»-систем, «прекрасно чувствующих себя» на серверах, но и в отношении «БСД», совершенно нормально приспособленной для «настольного» применения (по крайней мере, в ипостаси FreeBSD).
   Второй сводится к тому, что «“Линукс” под GPL, “БСД” под “БСД”-лицензией». На самом деле, как «БСД»-, так и «ГНУ/Линукс»-дистрибутивы включают в себя множество пакетов под различными свободными лицензиями. При этом в прикладной части состав пакетов практически одинаков, да и в системной и инструментальной пересекается более чем наполовину.
   Кроме этих сказок, существует масса поводов для препирательств между «фанами» этих двух концептуальных направлений свободного ПО, в каковых препирательствах мы никому не рекомендуем принимать участия. Рыночная конъюнктура сегодня такова, что в «Линукс» вкладывается больше средств, она шире используется, специфические навыки работы с ней более распространены, литература доступнее.
   Реальное основное различие (помимо технических тонкостей) заключается в том, что «БСД»-сообщества более склонны к централизации, а «ГНУ/Линукс» — к диверсификации. Свободные системы «БСД» на сегодня существуют в четырех вариантах: FreeBSD, NetBSD, OpenBSD и Darwin[7]. Число известных дистрибутивов «ГНУ/Линукс» превышает сотню[8].
   Большая часть нижеприведенной информации для перспективных пользователей «БСД» не нужна.
   Дистрибутивы. «Дистрибуция» означает «распространение» или «распределение». В товарной экономике «дистрибутор» — фирма, занятая передачей продукции от производителя розничной торговле, которая может играть сколь угодно активную роль в маркетинге, но на товар прямого влияния не оказывает.
   В программном обеспечении «разработчик дистрибутива» — важное активное звено в процессах разработки, использования и применения программ. Его роль не менее важна, чем роль разработчиков отдельных программ.
   Сила свободного ПО не только в том, что любая программа может свободно использоваться как таковая (включая ее модификацию и распространение) (система на основе «Линукс» может быть собрана полностью «вручную»[9], что весьма рекомендуется в курсе подготовки продвинутых администраторов и системных программистов (а также всем серьезно интересующимся тем, как системы устроены изнутри), но совершенно излишня для всех остальных), но и в том, что идеология «интеллектуальной собственности» исключена как помеха на пути объединения программ в системы.
   Таким образом, конечный пользователь может получать все (или почти все) необходимые ему программы — не только составляющие операционную систему или среду, но и прикладные — из одних рук, готовыми к совместному применению, если найдется разработчик дистрибутива с близкими целями.
   Первые дистрибутивы ОС на основе ядра «Линукс» («SLS» и «Slackware»; последний выпускается и сегодня, хотя больше популярен среди профессиональных администраторов, чем среди других категорий пользователей) появились десять лет назад, когда это ядро стало стабилизироваться и находить своих пользователей вне академического сообщества и сообщества системных программистов. К настоящему времени существует более сотни дистрибутивов, получивших более или менее широкую известность, и сама множественность дистрибутивов стала важной чертой и отличительным признаком ОС на ядре «Линукс».
   Не стоит надеяться, что появится один «самый правильный» дистрибутив; скорее, уменьшение конкуренции в разработке дистрибутивов знаменовало бы собой кризис развития этих систем.
   Когда-то бытовало чрезмерно упрощенное представление о цикле программного обеспечения, так называемая «каскадная модель». Позже стало понятно, что, коль скоро речь идет о сложных программах, а тем более о системах программ, «каскадная» идеализация неадекватна, и реальный процесс гораздо лучше описывается в терминах «спирали»; с этим связан и известный афоризм (кажется, восходящий еще к пятидесятым годам): «У разработки больших систем не бывает завершения, бывают только релизы».
   Функция разработчика дистрибутива заключается не в том, чтобы просто «собрать программы в кучу», красиво упаковать и продать, а, скорее, в том, чтобы обеспечить эффективную коммуникацию между, с одной стороны, авторами программ (и прочих произведений, входящих в дистрибутивы) и, с другой, конечными пользователями, а также самих конечных пользователей. Упрощенно структуру дистрибутива можно представить как коллектив мэйнтейнеров — лиц, отвечающих за поддержание пакетов (единиц в системе) в хранилище в актуальном состоянии и системной целостности в соответствии с некоторой концепцией в интересах сообщества пользователей. На границе команды разработки и пользовательского сообщества разворачиваются сервисы, которые могут служить ресурсной подпиткой разработки дистрибутива.
   Поставка очередного выпуска дистрибутива (на дисках или через Сеть) — лишь один шаг в этой коммуникации[10]. Выбор дистрибутива со стороны конечного пользователя — больше, чем просто выбор товара; по сути дела это выбор «узла присоединения к инфраструктуре». Не все аспекты функционирования ОС, а тем более, прикладных платформ и пакетов, стандартизованы, поэтому часть знаний и навыков администратора специфичны для дистрибутива.