Что такое ОС?

В этой рубрике будет дана общая характеристика операционных систем семейства UNIX-подобных и их дистрибутивов. Однако перед этим хорошо бы, подобно Остапу Бендеру, задаться вопросами: что такое, товарищи, операционная система, и что такое, братья по FOSS, дистрибутив. Оба эти понятия трактуются неоднозначно, так что следует для начала рассмотреть существующие, явно или неявно, мнения относительно этих предметов.

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

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

Не менее важно и то, что на основе одного и того же (или сходного) ядра могут быть созданы системы, которые все признают полноценными (и самостоятельными) операционками. Типичный пример -- ядро Mach, на коем базируются или базировались и NextOS, и MacOS X, и Darwin, и, до недавнего времени, Hurd, а также безвременно оборвавшиеся проекты Xmach и Yamitt. Вряд ли у кого повернется язык считать все перечисленные имена к одной операционной системе. Особенно показательно сравнение MacOS X и OpenDarwin с их практически идентичным ядром...

Если отвлечься от Linux'а и обратиться к BSD-миру, то в основе ядра и FreeBSD, и NetBSD, и OpenBSD, и коммерческой BSDi лежит одно и то же ядро 4BSD, вернее, его облегченная (от проприетарного кода) версия -- 4.4BSD-Lite. И хотя в дальнейшем все они развивались самостоятельно, но их взаимовлияние -- факт неоспоримый: многие прогрессивные особенности, реализованные в FreeBSD 5-й ветки, пришли в нее из BSDi, иные же имеют источником проект NetBSD. Однако никому ведь не приходит в голову считать клоны BSD одной операционкой (хотя -- в подтверждение высказанного в предыдущем абзаце -- с точки зрения пользователя разницы между ними меньше, чем между такими Linux-дистрибутивами, как Mandriva и Slackware).

Linux, правда, избег этой участи -- сепарации по разновидностям ядра. Однако значит ли это, что ядро идентично во всех его дистрибутивах? Отнюдь. Конечно, любой (любой ли?) Linux-дистрибутив теоретически может функционировать на каноническом ядре Линуса (том, что берется с kernel.org). Однако практически все крупные разработчики дистрибутивов патчат свои умолчальные ядра почем зря собственными разработками. Или включают в них достижения независимых патчестроителей, о количестве которых можно получить представление, просмотрев на том же kernel.org каталог people. Однако на этом основании никто (за одним исключением, о котором я скажу ниже) не утверждает, что, скажем, Red Hat и Gentoo -- разные операционные системы.

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

Парадоксально, но такая же позиция поддерживается с крайнего фланга противоположной линии фронта -- со стороны Ричарда Столлмана и его соратников по проектам GNU и Debian (ныне представленном в виде Debian GNU/Linux, но имеющего весьма экспансионистские планы). Если обратиться к интервью со Столлманом, взятым Максимом Отставновым специально для тематического выпуска "Домашнего компьютера" (#12 за 2002 год), то там можно в явном виде встретить утверждения о том, что текстовый редактор emacs -- часть операционной системы, и графический интерфейс (сиречь, в данном случае, оконная система X) -- часть операционной системы, и (sic!) браузер -- тоже часть операционной системы. Прямо по Microsoft'у...

Некоторый резон во второй точке зрения имеется. Что особенно ясно видно на примере той же (вернее, любой) Windows. Во-первых, с теоретических позиций: вычленить из этих операционок их ядро -- задача нетривиальная (а в будущих версиях, похоже, и невозможная). А практически -- что останется от Windows? Хотя нужно заметить, что попытки освобождения ОС Windows от ее якобы неотъемлемых компонентов (того же Internet Explorer) предпринимались неоднократно, и попытки успешные. Правда, относились они ещё к временам Windows 95/98, однако недавно получили вторую, уже почти официальную, жизнь: мне попадались нетбуки с предустановленной DOS, которая при ближайшем рассмотрении как раз и оказывалась экстрагированным ядром Windows 98.

Если же вернуться к примеру Linux'а, как наиболее показательному (и наиболее обсуждаемому), то суть точки зрения Столлмана и апологетов Debian'а сводится к тому, что именно системное окружение, механизм управления пакетами и прикладные программы, вернее, методика их подбора, тестирования и критерии качества (то есть своего рода инфраструктура) и являют собой собственно операционную систему. А уж поверх какого ядра все это хозяйство функционирует -- дело десятое. И иллюстрацией такой точки зрения является сам Debian (то самое обещанное исключение). Если обратиться к разделу портирования на официальном сайте проекта Debian то там можно обнаружить информацию о портировании ОС (!) GNU Debian не только на ядро Hurd (исторически именно для него программы GNU и предназначались), но и на ядра Net- и FreeBSD. Есть даже пример вполне частичного, но успешного портирования инфраструктуры Debian на ядро Solaris. Правда, он к ОС GNU Debian не относится -- разработчики выделяют его в самостоятельную систему, Nexenta OS.

Кстати, относительно самой ОС Solaris исторически сложилась сходная точка зрения. Ядро её испокон веков, когда она базировалась ещё на одном из ответвлений ранних BSD, именовалось SunOS. Однако чем дальше, тем реже об этом стали вспоминать. А название Solaris закрепилось за программным комплексом, включающим в себя не только системные и пользовательские утилиты, но и графическую рабочую среду. Чему, впрочем, как мы увидим в следующей главе, есть не только исторические обоснования.

Однако достаточно минутного размышления, чтобы сообразить: принятие второй точки зрения, в трактовке ли Microsoft, или в интерпретации Столлмана и Debian Community, приводит к полному размыванию самого понятия -- операционная система. Действительно, с субпозиции MS состав операционной системы определяется исключительно произволом производителя оной. "Ну а вздумается, скажем, ихнему цеху" объявить завтра неотъемлемым компонентом ОС не только Internet Explorer, но и MS Word с Excell'ем? И получится, что кроме ОС, и программ-то других не бывает...

Ну а продолжая логику Столлмана: если мы объявили emacs частью операционной системы, то на каком основании должны отказывать в этой чести vim? И если браузер -- неотъемлемый компонент ОС, то который из них? Любимый Ричардом lynx, FireFox, Konqueror или все сразу, включая будущий Google Chrome? И как быть с графическим метаинтерфейсом, представленным оконной системой X, который по определению разрабатывался для работы поверх любых операционок? А ведь другой общепринятой графической системы нет ни в GNU Debian, ни в Linux или FreeBSD, ни в Solaris.

В сущности, за кадром высказывания Столлмана стоит утверждение, что в состав ОС GNU входит весь софт, распространяемый по лицензии GPL. Но в таком случае понятие операционки из худо-бедно технологического становится сугубо юридическим.


Теги: