Обзоры
Mac OS X: идеи и впечатления
0

Mac OS X: идеи и впечатления

Ну вот, наконец волна ностальгических материалов закончилась — позади воспоминания, впереди, как оно и должно быть, — будущее. Но… сразу следует оговориться — не все так оптимистично, уж очень это самое "будущее" похоже на уже давнее прошлое. В частности, "героиня дня" — новейшая ОС от Apple — настолько неразрывно связана с прошлым (одновременно и со знаменитой ОС BSD 4.4, и с не менее яркой разработкой NeXT), что стереотипное высказывание "новое — это хо-рошо забытое старое" приобретает неожиданную актуальность.

Без снисходительности

Несмотря на официальный "бета-статус" Mac OS X, автор не настраивался на снисходительность. Никаких "поблажек" системе не делалось — ведь "бета" фактически представляет собой последний рабочий прототип. И, надо отметить, что к устойчивости работы ОС никаких претензий предъявить нельзя — непредсказуемых "мелких и крупных пакостей" с ее стороны не наблюдалось. Все (а точнее, три) возникшие в ходе работы неприятности обусловливались недостатками приложений.

Но это еще только часть "жесткого подхода". Вторая часть — исключение всяких "облегчающих факторов", как-то: предварительного чтения руководств и "наставлений", разнообразных README и прочих документов по системе. Раз уж это пользовательская ОС, то, будьте добры, создайте такую рабочую среду, с которой совершенно неподготовленный (для данной платформы, естественно) человек может быстро справиться. Естественно, что такое "пользовательское пренебрежение" компенсировалось детальным ознакомлением с архитектурой всей системы в целом и с основными ее программными компонентами.

Что есть что

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

Поэтому попробуем сначала разобраться с архитектурными особенностями Mac OS X, ее принципиальными сходствами и принципиальными же отличиями от того, что в сегодняшнем мире операционных систем емко называется mainstream ("основной поток").

"Самая главная подсистема" Mac OS X — Darwin. В отличие от всех остальных архитектурных элементов Darwin изначально разрабатывается в рамках открытого программного проекта — ее исходные тексты свободно доступны разработчикам, и никаких серьезных ограничений в части кросс-платформенности у Darwin не наблюдается. Так, известными в кругах разработчиков Mac OS X Райаном Нельсоном (Ryan Nelson) и Наоки Хамада (Naoki Hamada) одна из самых свежих версий Darwin успешно запущена на Intel-платформе (www.darwinfo.org).

Информация о потенциальной кросс-платформенности Darwin крайне важна, поэтому она предшествует даже короткому сообщению о назначении этой подсистемы. Ведь Darwin — ядро Mac OS X. Правда, ядро несколько необычное, если сравнивать его с реализациями соответствующих подсистем "mainstream-ОС": не только (и не столько) открытостью процесса разработки, но и микроархитектурой. А именно, комбинацией микроядра Mach 3.0 и "сменным набором" "микросерверов" системных вызовов. После ОС NeXTSTEP (и ее кросс-платформенной модификации OPENSTEP) в мире коммерческих ОС фактически не было ни одной системы, основанной на бесплатном микроядре Mach. Современный mainstream и де-факто, и де-юре упорно "протекает" в русле ОС с монолитным ядром, немногие же представители "микроядерных течений" (BeOS, QNX) на лидерство могут претендовать с большим трудом. Среди некоммерческих разработок существуют очень близкие аналоги Darwin, в первую очередь — BSD Lites (работоспособный фактически полный функциональный аналог Darwin) и GNU Hurd (находящаяся в стадии развития).

Выбор "рискованного" направления в микроархитектуре ядра новой ОС разработчиками Apple понятен: во-первых, он не так уж и нов (и прекрасно зарекомендовал себя в надежной NeXTSTEP), во-вторых, он позволяет очень быстро справиться с рядом сложнейших задач, неизбежно возникающих в ходе проектирования системы. И в этом "во-вторых" кроются причины выбора "основной надстройки" системных вызовов над микроядром, заимствованных из семейства BSD Unix (более точно — из ветви FreeBSD). Огромное количество проверенного временем и "вылизанного" системного ПО, в первую очередь сетевого назначения (чем всегда выгодно отличалась ОС Unix), фактически высвобождает ресурсы разработчика "новой ОС" и позволяет направить их на решение не менее сложных (но несоизмеримо менее критичных к надежности реализации) задач совершенствования пользовательского интерфейса. Такой подход, уже сегодня прекрасно зарекомендовавший себя (пример тому — Mac OS X), вероятнее всего, еще не раз будет применен новыми игроками на рынке массовых ОС ближайшего будущего.

Если же взглянуть на Mac OS X глазами привычного к классическим "Макинтошам" пользователя, то нововведения лишними не покажутся — с появлением "Unix-сердца" у семейства Mac’ов возникают и новые, крайне необходимые для сегодняшних тяжеловесных приложений, свойства. Защищенная память, вытесняющая мультизадачность, мощная реализация виртуальной памяти, потенциальные возможности наиболее полной утилизации SMP-архитектуры (в отличие от систем с монолитным ядром, "микроядерные ОС" идеально подходят для симметричных мультипроцессорных компьютеров).

Кроме "классических" достоинств "скрытой Unix на микроядре", разработчики Apple создали ряд расширений функциональности, представляющих отдельный интерес. В первую очередь это относится к подсистеме NKE (Network Kernel Extensions — "сетевые расширения ядра"), позволяющей "на лету" без необходимости перезагрузки или приостановки работы ОС фактически полностью изменять не только параметры, но и саму организацию сетевой подсистемы, например динамически добавлять новые сетевые протоколы или модули, реагирующие на события в сетевой подсистеме. При этом NKE сама является загружаемым модулем ядра и органично вписывается в многоуровневую архитектуру ОС.

"Виртуальность" сетевых протоколов, обеспечиваемая NKE, подкрепляется и виртуальной файловой системой (VFS — Virtual File System), свойственной Unix, — Mac OS X может одновременно работать с файловыми системами форматов HFS+ (расширенная иерархическая файловая система, поддерживаемая "классическими" Mac OS 8 и 9), HFS (предшественница HFS+ из "Mac-мира"), UFS (классика в мире Unix), UDF (универсальный формат для DVD) и ISO9660 (стандартный формат CD ROM). Учитывая открытый характер разработки Darwin, этот перечень в ближайшее время может пополниться поддержкой других, не менее популярных файловых систем (например, ОС Linux).

Итак, с Darwin, кажется, все понятно: фактически она представляет собой "ядро Unix, реализованное над микроядром Mach". Но это еще не все — ОС Unix ничего общего с миром Apple не имеет. А как быть с прежними, "классическими" Mac-приложениями, ведь они используют системные вызовы совершенно иной ОС? Естественно, что со временем многие разработчики прикладного ПО переключатся на Unix-ориентированное программирование, но им необходим "буферный период", позволяющий за счет продаж "классического" ПО получить средства для "перепроектирования".

И здесь на помощь и Apple, и сторонним компаниям приходят подсистемы Classic и Carbon — "надстройки" над ядром Mac OS X. Они представляют собой "прослойки совместимости" с предыдущими версиями Mac OS (8, 9) и предназначены для трансформации множества системных вызовов Mac OS в эмулирующие последовательности вызовов Mac OS X. Прослойка Classic на сегодняшний день не считается перспективной и в ближайшем будущем уступит место более развитой Carbon, что подтверждается выходом библиотек Carbon для Mac OS 9. "Карбонизация" (термин, придуманный в Apple) уже существующих приложений — процедура относительно безболезненная для разработчиков ПО, но "карбонизированные" приложения могут без перекомпиляции выполняться и в среде Mac OS 9, и в Mac OS X, при этом ряд расширенных возможностей "X" становится доступным и для пользователей "классики" (в первую очередь это утверждение касается защищенной памяти).

Но и на этих двух важных дополнениях в Apple не остановились, и Mac OS X предлагает самым щепетильным программистам еще одну "подсистему совместимости", на этот раз — с NeXTSTEP. "Третья прослойка", именуемая Cocoa, является очередной реинкарнацией знаменитой объектно-ориентированной библиотеки OpenStep, совместного детища NeXT и Sun. В числе нововведений — программные интерфейсы с Java, но основная идеология и архитектура OpenStep сохранены (включая и замечательный язык реализации — Objective C).

В целом, образованная сочетанием Darwin/Classic/Carbon/Cocoa система представляет уникальные возможности для пользователя, объединяя четыре принципиально разных мира ("канонический терминальный" — Unix, "графический Unix" — Unix/X-Window, "классический Макинтош" — Classic/Carbon и "неоклассический NeXT" — Cocoa) в одной системе с фактически единым интерфейсом. И в этом, надо сказать, Apple в очередной раз не ошиблась — Mac OS X, в отличие от большинства "настольных" ОС, будет интересна пользователям из самых разных классов — от привлеченных "красотами" пользовательского интерфейса новичков до "гуру" из мира Unix или финансистов, стремящихся заменить устаревшие NeXT, но не стремящихся заменять программное обеспечение экстра-класса.

Общесистемные "прослойки" Mac OS X используют ресурсы трех главных низкоуровневых графических подсистем — Quartz, OpenGL и QuickTime. Последние два названия широко известны, а вот Quartz представляет собой относительно новое слово в "интерфейсостроении". "Относительно" потому, что идеология Quartz достаточно сильно перекликается с идеями графической подсистемы NeXT DPS (Display PostScript — "дисплейный PostScript").

Как и в NeXT, в Mac OS X использован мощный прием повышения уровня абстракции программной подсистемы управления устройством отображения информации. Вместо "тупого" буфера кадра (иначе называемого фрейм-буфером) с доступом к отдельным пикселам обе системы предлагают схожие модели — высокоуровневое векторное описание отображаемых объектов на языках PostScript или PDF соответственно.

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

Quartz в иерархии ПО Mac OS X "отвечает" именно за преобразование в реальном времени высокоуровневых векторных описаний графических объектов в растровые "картинки", размещаемые во фрейм-буфере (рендеринг), и за поддержку необходимых служебных операций (в частности, формирование абстракций окна и событий от устройств взаимодействия с пользователем — клавиатуры и мыши).

Одна из особенностей Quartz бросается в глаза в первые же минуты "общения" с Mac OS X — поддержка так называемой альфа-прозрачности (alpha-transparency): окна на Рабочем столе могут быть не просто "полупрозрачными", прозрачностью их можно управлять с помощью соответствующего меню. Сразу следует отметить, что все эти замечательные качества достигнуты "немалой кровью" — ресурсоемкость Quartz очень высока, особенно при учете аппаратных средств Power MAC G4 Cube. Видеоподсистема этого компьютера (обычная AGP-видеокарта ATI Rage 128) не предусматривает фактически никаких возможностей по акселерации процедур рендеринга PostScript- или PDF-объектов и не поддерживает ускорения aplha-transparency.

Соответственно, за "красоты" расплачивается центральный процессор: изменение размеров окон происходит в явно замедленном темпе и сопровождается "пожиранием" до 99% ресурсов CPU. Если Apple повторит подход NeXT к акселерации DPS с помощью отдельного процессора (что вполне возможно), то от даже не самых быстрых чипов PowerPC 400 MHz под управлением Mac OS X можно ожидать совершенно немыслимых скоростных показателей, принципиально недостижимых в системах с "тупым" фрейм-буфером, где ощутимые временные затраты вызывает необходимость "прорисовки" всех интерфейсных элементов.

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

Галерея скриншотов

Последний важнейший элемент системы — пользовательский интерфейс Aqua. Эта ответственная за знаменитую "карамельную красоту" подсистема Mac OS X принесла в спокойный мир Mac массу нововведений. И, как ни странно, освоиться в Aqua значительно легче после некоторого опыта работы с NeXTSTEP/OPENSTEP или даже X-Window. Во-первых, по сравнению с классическими версиями Mac OS, Aqua изменяет устоявшееся представление пользователя об уровневом расположении окон (в классических Mac все окна одного приложения располагаются на "одном уровне глубины экрана"). Теперь, как и в большинстве оконных систем, можно "поднимать" на "поверхность" экрана любое окно, не заботясь о его расположении в уровневой иерархии (стандартное поведение классической Mac OS, эмулируется элементом меню Bring All to Front). Во-вторых, Aqua предполагает возможность управления новыми (для Mac-мира) элементами интерфейса — "листами" (sheets). Лист представляет собой хорошо знакомое пользователям Windows и X-Window "всплывающее окно" (popup), "привязанное" к родительскому окну, и используется в основном для критических сообщений и предупреждений, ассоциированных с одним процессом. В-третьих, интерфейсные возможности расширены еще одной (хорошо знакомой в мире "не-Mac") конструкцией: "выдвижным ящиком" (drawer) — "выплывающим" окном, способным содержать различные интерфейсные элементы. В-четвертых, изменениям подверглась "святая святых" Mac — организация Рабочего стола: в ней появился новый элемент интерфейса, очень похожий на панель (panel), знакомую пользователям Unix-оболочки CDE.

Возможно, с точки зрения приверженца Mac-компьютеров все эти нововведения революционны, но… Система предельно проста, интуитивна и в прямом смысле слова "схватывается на лету".

Как это было

Несколько дней "общения" с новой ОС, конечно же, не позволяют делать какие-либо серьезные выводы, тем более что "родных" приложений для Mac OS X пока еще практически нет. Установка системы, как и во всех случаях с "замкнутыми платформами" (одного производителя аппаратной и программной частей), буквально угнетает своей неинтересностью: ну, установили СD-ROM, ну, перезагрузились, "подписали" требования лицензионного соглашения…. Через пару минут все готово — без единого вопроса о конфигурации компьютера, настройках или пользователях. Несколько странный подход для Unix-подобной системы — хотя бы имена и пароли пользователей можно было бы указать в ходе инсталляции.

Невозможность выбора перечней сетевых сервисов на этапе установки сказывается после первого запуска — в оперативной памяти машины оказывается обширный перечень пока не нужных демонов сетевых сервисов, хорошо знакомых любому пользователю рабочей станции Unix. Если эти два нюанса не считать недостатками (в конце концов, всю настройку можно произвести и после инсталляции ОС), то можно смело утверждать: Mac OS X является единственной представительницей Unix-подобных систем, с установкой которой справится кто угодно.

После первой (и единственно необходимой) перезагрузки система полностью работоспособна. Никаких текстовых консольных режимов, все очень красиво и просто. В глаза бросается исключительно высокое качество рендеринга шрифтов (что делает имеющийся в системе графический эмулятор терминала vt100 мечтой любого пользователя Unix) и неожиданно крупные размеры управляющих элементов интерфейса (кнопок, пиктограмм и т. п.), что, впрочем, выглядит очень целостно. Первый час "возни" с однокнопочной мышкой, которая на деле оказывается очень даже "двухкнопочной" (просто в качестве второй кнопки используются то клавиша Ctrl, то Shift клавиатуры), наводит на неочевидную, но кажущуюся весьма интересной мысль: Mac OS X, похоже, просто создана для экспансии. С какой бы ОС вы ни работали прежде, в "X" все будет очень просто, понятно и намного красивее.

И не только "X"…

Увы, пока все прелести Mac OS X доступны только владельцам компьютеров Power PC от Apple. Будет ли существовать ее кросс-платформенная версия — неизвестно. Но желающие запускать это чудо на машинах архитектуры IBM PC могут "подписаться" под международной петицией к Apple о портировании всей "X" на x86, а самые нетерпеливые и обладающие серьезными амбициями программисты даже не обязаны дожидаться факта портирования "недостающих для полноты системы" частей (в первую очередь Quartz, Сocoa и Aqua). Ряд очень близких инструментальных средств доступен "за бесплатно" — язык программирования Objective C "понимается" компилятором GNU gcc, а для владельцев Microsoft Visual C++ или любого компилятора ANSI C вполне подойдет "мобильный объектный компилятор" (POC — Portable Object Compiler). Аналогичная Cocoa (и, естественно, OpenStep) библиотека классов разрабатывается проектом GNUstep (www.gnustep.org), замечательная подборка документации находится на сайте developer.apple.com/techpubs/macosx/.


Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: