`

СПЕЦІАЛЬНІ
ПАРТНЕРИ
ПРОЕКТУ

Чи використовує ваша компанія ChatGPT в роботі?

BEST CIO

Определение наиболее профессиональных ИТ-управленцев, лидеров и экспертов в своих отраслях

Человек года

Кто внес наибольший вклад в развитие украинского ИТ-рынка.

Продукт года

Награды «Продукт года» еженедельника «Компьютерное обозрение» за наиболее выдающиеся ИТ-товары

 

FreeBSD -- 10 лет дисциплины "just for fun"

0 
 

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

Пойми, пожалуйста: эти люди не могут не брюзжать. Так уж они устроены. Кто не брюзжит, тот ни черта не стоит. Пусть брюзжат!
Братья Стругацкие

Автор позволил себе использованный в качестве общего эпиграфа к статье вольный, но точно отражающий суть, перевод слов, принадлежащих одному из основателей и активному участнику проекта FreeBSD -- "великому брюзге и ворчуну" Терри Ламберту. Именно с его первых "ЧАВО" (Часто зАдаваемых вопросов, FAQ), первых модификаций системы управления виртуальной памятью ОС 386BSD и первых же "комплектов модификаций" (patchkit) начиналась история операционной системы, сегодня занимающей 18 почетных мест (из 36) в рейтинге, прямо и косвенно индицирующем надежность и качество реализации программного продукта, -- еженедельном отчете Netcraft о продолжительности функционирования серверов публичного доступа.

FreeBSD -- 10 лет дисциплины "just for fun" Вслед за Ламбертом к работе над 386BSD подключились самые разные люди, из числа которых через год-другой сформировалась небольшая команда координаторов проекта "Неофициальный комплект модификации 386BSD" -- Джордан Хаббард, Нэйт Вильямс и Род Граймс.

Сегодня, по прошествии 10 лет, Джордан Хаббард -- человек с редким сочетанием творческого и административного потенциалов, возглавляет разработку и сопровождение ядра Mac OS X; маленький, "келейный" академический проект трансформировался фактически в виртуальную транснациональную некоммерческую корпорацию; а ОС FreeBSD -- в популярную, стабильно развивающуюся высококлассную операционную систему, поставляющую своим пользователям достойные надежность и производительность, а пользователям других систем (таких как MS Windows и Apple Mac OS X) -- отработанные качественные программные решения.


Организация успеха

Тактический успех допускает выигрыш одной битвы и поражение в войне, стратегический успех приближает на один шаг к победе в войне.
Т. Ламберт

Любая разновидность коллективной человеческой деятельности, характеризующаяся масштабностью, для достижения стратегических целей и успеха требует более искусности в координации усилий, чем технологического совершенства используемых инструментов или "идеальности" работников. Поражающие по сей день совершенством и масштабами древние пирамиды и, напротив, -- печальная участь проекта Вавилонской башни, только иллюстрируют это не требующее доказательств правило. Масштабные программные проекты, несмотря на незрелость программирования как рода деятельности и непознанную по сей день специфику, исключением из правила быть не могут -- это, пожалуй, их единственное доподлинно известное свойство, не вызывающее споров даже у сторонников радикально противостоящих многочисленных программистских "школ", "учений" и "методологий".

Проект FreeBSD, целью которого является создание, постоянные модернизация и сопровождение полнофункциональной операционной системы, бесспорно масштабен, даже несмотря на то, что в его рамках не разрабатывается более чем обширный перечень входящего в состав ОС ПО. Это специфическое свойство не только ничуть не упрощает, а во многом и усложняет работу и проектировщиков, и кодировщиков. К отрицательным факторам, без сомнения, сегодня влияющим на проект, можно и нужно отнести и немаловажный психологический, заключающийся в признании де-факто (и де-юре, подтверждающимся соответствующими ссылками на копирайт FreeBSD) высокого качества продукции, произведенной в ходе проекта, ведущими игроками не-Unix рынков ПО (в первую очередь -- Microsoft и Apple), с одной стороны, и каким-то "тщательным" игнорированием компаниями, давно устоявшимися именно на Unix-рынке -- с другой стороны. Автор мог бы огласить весь список малоприятных нюансов, но привел лишь два, на его взгляд, наиболее важных примера исключительно для того, чтобы пояснить важность организационных аспектов как для судьбы проекта, так и, соответственно, для всех многочисленных коммерческих и персональных пользователей ОС FreeBSD.

FreeBSD -- 10 лет дисциплины "just for fun"
FreeBSD 5.0, XFree86 Xinerama -- современная рабочая станция Unix

"Верхушка" проекта -- аналог совета директоров в корпорациях -- "центральная команда" (FreeBSD core team). Это выборный орган, определяющий стратегию развития и оценивающий тактические вопросы текущего состояния проекта. Одна из важнейших функций "центральной команды" -- управление персоналом: привлечение талантливых специалистов к активному участию в проекте, выдвижение кандидатур претендентов на очередные выборы и т. д.

Среднее звено, более многочисленное -- команда коммиттеров (committers). Название "committer" (заимствованное из "языка" системы управления версиями CVS), для которого трудно найти подходящий краткий перевод на русский, на самом деле очень точно определяет как поверхностно наблюдаемые, так и латентные функции команды. В английском языке сочетание commit to означает одновременно и "вводить в дело", и "связывать свободу действий" -- именно коммиттеры отвечают и за внесение модификаций в проект, и за ограничение полета фантазии "just for fun". Из-за последней латентной функции существует мнение о "недемократичности" проектной организации FreeBSD, впрочем, оно бытует в кругах, где, выражаясь словами Ламберта, чистое эго разработчиков превалирует над всякими сторонними факторами. Высокий уровень ответственности и полномочий коммиттеров предопределяет еще одну роль этой команды -- она является "поставщиком" кандидатов для проводящихся каждые два года выборов "центральной команды".

Основная рабочая сила проекта -- многочисленная группа outside contributors. Автор умышленно привел это сочетание без перевода, потому как в многозначном английском contributor -- это и "товарищ по работе", и "меценат". Естественно, роль outside contributors -- образование сообщества "товарищей по работе", жертвующих ради общего дела свои свободное время и знания.

Говоря об организационном аспекте проекта, нельзя не упомянуть его ключевую машинную составляющую -- центральный репозиторий. Собственно, этот элемент структуры в определенные моменты времени и является конечным продуктом -- "моментальный снимок" репозитория, прошедший одобрение и проверку эксплуатацией, становится одной из версий ОС, пригодной к использованию конечными потребителями. Конечно, некоммерческий характер "корпорации FreeBSD" не позволяет изыскать средства на задействование таких мощных и без сомнения полезных механизмов, как проверка влияния каждой заверенной коммиттерами модификации на функционирование системы в целом, а тем более -- организовать ежедневные проверки работоспособности текущей версии, как это делает, например, Microsoft. Впрочем, данный недостаток в какой-то мере компенсируется относительной простотой Unix-подобных систем (относительной по сравнению с гигантскими компонентными конгломератами типа ОС Windows или Mac OS X).

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

Возвращаясь к проблемам проекта, нельзя не обсудить один из самых серьезных недостатков всех некоммерческих продолжительных процессов разработки -- именно... их некоммерческий характер. Последний, при стратегической оценке проекта, без сомнения, является недостатком. Некоммерческий характер означает отсутствие средств у проекта, что, в свою очередь, не позволяет финансировать R&D -- долговременные исследования, направленные на радикальные модификации, позволяющие существенно повысить показатели качества производимого продукта. К счастью, в судьбе всех BSD-систем немалую роль играют как корпоративные пользователи (например, крупные японские Internet-провайдеры), так и традиционный спонсор сетевых разработок на основе BSD Unix -- оборонное агентство передовых исследований DARPA министерства обороны США. Именно со стороны этих организаций осуществляется финансирование масштабных исследовательских проектов, результаты которых воплощаются в общедоступном коде BSD-систем, например, в реализациях IPv6, Ipsec и механизмах безопасности FreeBSD. Очевидно, что в условиях стратегической зависимости от коммерческих спонсоров и партнеров в судьбе проекта исключительную роль играют PR-менеджеры, но для них в организационной структуре фактически не предусмотрены отдельные "должности" -- и это можно считать действительно серьезным недостатком.


Юбилей -- проблемы и достижения переходного возраста

Десять лет -- это серьезный возраст для программного проекта, прошедшего целый ряд важных стадий развития. Сегодняшняя, юбилейная, ОС FreeBSD релиза 5.0 радикально отличается от первой заслуженно признанной суперстабильной версии 2.2.8, отработавшей в IT-индустрии рекордно долгий срок для продукта, выпущенного некоммерческим производителем. Несмотря на "непромышленный" характер релиза 5.0 (он более ориентирован на "обкатку" новых технологий и формирование перечня требований, чем на использование в "боевых" условиях) и продолжение ветви версий 4.x -- основных "рабочих лошадок", на которых успешно движется и украинский, и российский Internet, мы поговорим именно о версии 5.0. Хотя бы потому, что это будущее проекта и, судя по динамике развития, -- относительно недалекое будущее.

В попытке кратко охарактеризовать новую ветвь BSD-систем (а FreeBSD 5.x действительно является не столько эволюционным продолжением архитектурных традиций ОС BSD, сколько продолжением традиций проектирования, но над совершенно новым объектом проектного процесса), автор не смог придумать ничего лучше, кроме "движения к Solaris". Одна из самых совершенных Unix-подобных ОС, Solaris давно достигла уровня развития, определяющего достойное стремление к соперничеству, и, чтобы объяснить суть термина "движение к Solaris", автор вынужден прибегнуть к не очень стандартному приему. В дальнейшем мы будем рассматривать нововведения FreeBSD 5.x в аспекте их соответствия... именно характеристикам ОС Solaris, для чего воспользуемся мнением авторитетных специалистов -- авторов книги "Solaris Internals" Джима Мауро и Ричарда МакДугалла.

Итак, "Solaris Internals" в списке ключевых особенностей ОС первой выделяет реализацию поддержки симметричных многопроцессорных машин (SMP). Действительно, важное свойство, не только определяющее возможности масштабирования серверных систем, но и радикально изменяющее... набор архитектурных приемов и показатели качества разрабатываемого прикладного и системного ПО. Дело в том, что полноценная и эффективная поддержка SMP зиждется на соответствующей реализации механизмов многопоточного программирования (threading). В полном соответствии с выдуманной автором статьи концепцией "движения к Solaris", список радикальных отличий FreeBSD 5.0 от реализаций предыдущих поколений этой системы начинается именно с мультипроцессорности -- SMPng (SMP new generation). При обсуждении SMPng и сопутствующих вопросов мы не будем ни вдаваться в технические подробности целого ряда нововведений (объем материала полностью исключает такую попытку), ни стараться избежать минимума необходимых деталей. В период до-SMPng ядро FreeBSD ограничивало возможности поддержки SMP-машин только архитектурами x86 (естественно, не младше i386), а эффективность использования приемов потокового программирования -- механизмом блокировки ядра (BGL, Big Giant Lock). Первое ограничение в объяснениях не нуждается, а вот второе на деле означает, что при выполнении на SMP-машине одной программы (процесса), состоящей из нескольких потоков, "раздача" этих потоков разным процессорам невозможна. SMPng фактически устраняет оба недостатка -- поддержка многопоточного программирования становится кросс-платформенной, а потоковые программы полностью утилизируют ресурсы машины. Кроме SMPng, прямо и косвенно к модернизации SMP-подсистемы относится второй ключевой элемент нововведений -- KSE: поддержка потоков в пользовательских программах на уровне ядра ОС. Это неоклассический механизм, отличающийся от традиционных N:1 (пользовательские программы -- потоковые, ядро ОС -- нет) и N:N (для каждого потока создаются отдельные процессы, разделяющие общую область памяти). Суть KSE -- переключение фиксированного количества "виртуальных процессоров", предоставляемых ядром ОС, между произвольным количеством потоков -- отражена в принятом обозначении N:M. Желающие глубже понять механизмы KSE читатели могут обратиться к статье основоположников идеи Scheduler Activation (активации планировщика задач), тех же, кто интересуется конечным результатом, можно заверить -- KSE на сегодняшний день является оптимальным решением, обеспечивающим высокие показатели быстродействия SMP-систем. Последнее доказано как теоретическими исследованиями, так и многократными тестированиями.

Еще одна немаловажная модификация, относящаяся к обсуждаемому вопросу, -- затронула механизм выделения памяти -- теперь это существенно измененный slab allocator (первоначально разработанный Бонвиком и использованный в ОС Solaris 2.4). Опять же, ограничимся ссылкой на подробное описание этой модификации и главным достоинством новой реализации -- линеаризацией зависимости производительности многопоточных приложений при росте числа процессоров (это означает, что процесс из восьми потоков на восьмипроцессорной машине работает строго в восемь раз быстрее, чем на однопроцессорной).

В целом, обновления FreeBSD 5.x в части поддержки SMP столь значительны, что заслуживают целой книги, мы же сегодня можем уверенно говорить -- самый трудный шаг в истории проекта сделан, и сделан неплохо -- еще один стратегический успех достигнут.

Возвращаясь к "Solaris Internals", обратимся ко второму пункту ключевых особенностей ОС Solaris. А именно, 64-битовому ядру ОС и соответствующему адресному пространству. FreeBSD 5.0 и здесь далеко ушла от предыдущих версий -- в списке поддерживаемых платформ у системы появились 64-битовые машины производства Sun (за исключением моделей, построенных на основе процессора UltraSPARC III, информация о котором недоступна разработчикам FreeBSD) и совсем недавно ядро системы было успешно загружено в 64-битовом режиме на процессоре Opteron фирмы AMD. Кроме того, и на "родной" для FreeBSD 32-битовой платформе x86 в последнее время достигнуты существенные успехи в поддержке систем с объемом физической оперативной памяти более 4 GB.

Следующий ключевой момент -- модульное бинарное ядро. У FreeBSD и предыдущих модификаций ядро ОС обладало этим свойством (обеспечивающим, например, "подстегивание" модулей ядра "на лету" без необходимости перезагрузки ОС), в новой же версии к этому добавился динамический характер управления переменными ядра (так называемым "окружением ядра"), что увеличивает гибкость управления и настроек системы.

К упомянутой в "Solaris Internals" модульности подсистемы устройств ввода/вывода FreeBSD 5.0 сократила дистанцию еще на один шаг. Причем, что приятно, результаты движения не только наблюдаемы внешне (за счет радикальных модернизаций подсистемы управления файлами специальных устройств devfs), но, главное, -- система стала совершеннее во внутренней организации. Так, на пути к упорядочиванию общей архитектуры ядра ОС достигнута важная победа -- поддержка IDE-дисков теперь "упрятана" за стандартными программными интерфейсами CAM (Единый Метод Доступа, Common Access Method).

Последний важнейший элемент, на обсуждении которого стоит кратко остановиться -- подсистемы обеспечения безопасности. И без того заслуженно уважаемая ОС FreeBSD в этой области стала еще более привлекательной для стремящихся к построению "непробиваемых" систем. Изменения претерпели механизмы помещения приложений в защищенные окружения (jail, теперь для отдельных окружений могут задаваться собственные уровни безопасности), появились совершенно новые, поддержанные на уровне ядра ОС средства (например, "малозатратная" в административных терминах подсистема LOMAC), и наконец, новая файловая система UFS2 обеспечила реализацию расширенных атрибутов файлов, открывающую целый ряд возможностей как для полноценного воплощения в коде ряда стандартных общесистемных (например, ACL), так и для создания принципиально новых механизмов безопасности.

Список таких шагов, приближающих FreeBSD к одной из лучших ОС семейства Unix -- Solaris, можно продолжать долго. Естественно, пока это только отдельные шаги -- технологический отрыв Solaris, "вылизанной" за долгие годы централизованной разработки архитекторами и программистами экстра-класса, от любой созданной силами сообщества волонтеров ОС, огромен. Но все же... в процессе эволюции сложной программной системы важна не только (да и не столько) "длина сделанного шага". Гораздо важнее -- направление и способность "долго идти". С направлением движения у сегодняшнего проекта FreeBSD, похоже, все обстоит нормально -- несмотря на уход с поста "лидера лидеров" ключевой фигуры -- Джордана Хаббарда, организационная структура продолжает эффективно работать. Несмотря на сложность задач, поставленных проектом новой ветви ОС (5.x), всем разработчикам на всех уровнях иерархии удалось и избежать самого неприятного -- тотальной реформации системы (иначе говоря, переписывания с нуля), и эффективно задействовать уже имеющиеся ресурсы (в частности, предоставленный проекту код ОС BSDI, ряд идей дружественного сообщества NetBSD, результаты научных исследований). Последнее означает одно -- раз самый трудный шаг все-таки был сделан и сделан удачно, сообщество FreeBSD готово идти дальше. А это, в свою очередь, значит -- хорошая ОС станет еще лучше.

Ready, set, buy! Посібник для початківців - як придбати Copilot для Microsoft 365

0 
 

Напечатать Отправить другу

Читайте также

 

Ukraine

 

  •  Home  •  Ринок  •  IТ-директор  •  CloudComputing  •  Hard  •  Soft  •  Мережі  •  Безпека  •  Наука  •  IoT