Итак, для разработки ядра новой операционной системы Apple взяла за основу открытую версию операционной системы UNIX - BSD 4.4 и создала новое микроядро (kernel) - Mach 3.0. Первоначально ядро Mach было разработано в Университете Carnegie-Mellon при непосредственном участии Авадиса Тавеняна (занимающего одно время пост вице-президента компании Apple по программному обеспечению).
Использование UNIX-ядра BSD дало много преимуществ для Mac OS X. Прежде всего, Дарвин обеспечивает защиту памяти. Именно этот механизм позволяет Apple говорить о небывалой надежности новой ОС. Еще одним интересным механизмом ядра Дарвин является механизм приоритетной, или вытесняющей, многозадачности (preemptive multitasking), обеспечивающей надежность одновременной работы нескольких приложений. Предыдущие версии Mac OS поддерживали лишь один способ распределения ресурсов процессора между задачами - так называемую кооперативную (совместную) многозадачность (cooperative multitasking), при которой задача, получившая доступ к процессору, занимает его до тех пор, пока поток команд от нее непрерывен. Новый (для Mac OS) способ распределения ресурсов процессора позволяет избежать "притеснения" одних приложений другими. Дарвин по целому ряду критериев, таких как активность приложения, его требования к ресурсам процессора и т.п., определяет приоритет каждой задачи и принудительно распределяет процессорное время в соответствии с этими приоритетами. Это позволяет также избежать простоев процессора.
Mac OS X поддерживает также и многопроцессорность, обеспечивая распределение нагрузки между процессорами оптимальным образом. Упомянем также и систему виртуальной памяти, которая в Mac OS X позволяет использовать дисковое пространство для повышения производительности приложений, требовательных к объему оперативной памяти. И хотя этот механизм применяется практически во всех ОС, создатели Дарвина за счет достаточно сложных механизмов именования объектов памяти добились существенного увеличения скорости и эффективности его работы.
Будучи основанным, на BSD UNIX, Дарвин поддерживает все возможности BSD: в него включена полная поддержка стандарта POSIX, что дает возможность исполнять любые UNIX-приложения, совместимые с этим стандартом; используется UNIX-модель процессов (идентификаторы процессов, сигналы и проч.); поддерживаются потоки (или нити - threads) UNIX, что позволяет назвать Mac OS X не только многозадачной, но и многопотоковой системой, в которой каждое приложение имеет ряд параллельно выполняемых задач. Кроме того, в Дарвине применяется политика безопасности UNIX (идентификаторы пользователя, полномочия, атрибуты и т. п.).
Кроме «классических» достоинств «скрытой 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 (универсальный формат для CD ROM) и ISO9660 (стандартный формат CD ROM).
В связи с коренной перестройкой ядра и архитектуры Mac OS X ее разработчикам пришлось искать решения, призванные обеспечить одновременно использование всех возможностей новой ОС и поддержку приложений, созданных для предыдущих версий Mac OS. Таким решением стало создание трех типов программного окружения (application environment).
Classic. Mac OS X сама по себе не поддерживает приложения, созданные для предыдущих версий Mac OS. Поэтому для их исполнения запускается специфическое приложение, именуемое Classic и представляющее собой вариант Mac OS 9. Вот на этом виртуальном компьютере и исполняются все приложения старых ОС. Если закрыть приложение Classic, все работавшие в нем приложения тоже будут завершены. Если какое-либо Classic-приложение приводит к сбою, система защиты памяти срабатывает не для этого отдельного приложения, а для всего Classic-окружения. Кроме того, существует целый ряд ограничений для Classic-приложений, например невозможность использовать PDF как глобальное средство отображения информации.
Carbon. Кроме того, существует и компромиссный вариант перехода на Mac OS X. Программное окружение Carbon представляет собой способ перевода приложений для старых версий Mac OS на новую с минимальными затратами. Незначительная модификация приложений, конечно, не приводит к использованию всех возможностей Mac OS X, но позволяет все же избавиться от ограничений и неудобства Classic-окружения.
Cocoa - так называется «полноценное» программное окружение Mac OS X, позволяющее полностью задействовать все технологии новой ОС (и нового оборудования - Cocoa поддерживает многопроцессорность и Velocity Engine). Одной из интересных его особенностей является способ организации приложения в системе, дающий возможность гибкой настройки и расширения функциональных возможностей.
Кроме упомянутых выше, Mac OS X поддерживает и ряд дополнительных окружений, например Java. Сюда же следует отнести и поддержку BSD-приложений.
Подытоживая, можно сказать, что Mac OS X предоставляет превосходные возможности для программ, написанных специально для нее, поддерживает (но не более) программы для предыдущих версий Mac OS и обеспечивает в совокупности с политикой "открытых текстов" достаточно быстрый и безболезненный перевод программных продуктов в новую среду.
Графическая подсистема и интерфейс
Общесистемные «прослойки» Mac OS X используют ресурсы трех главных низкоуровневых графических подсистем - Quartz, OpenGL и QuickTime. Последние два названия широко известны, а вот Quartz представляет собой относительно новое слово в «интерфейсостроении». «Относительно» потому, что идеология Quartz достаточно сильно перекликается с идеями графической подсистемы NeXT DPS (Display PostScript – «дисплейный PostScript»).
«Сердце» графической подсистемы Mac OS X - высокоуровневый менеджер окон, содержащий мощную библиотеку векторно-растровой графики Quartz. Именно этот компонент ОС реализует и «движок» рендеринга единого формата для Mac OS X - PDF, и именно в нем кроется радикальное несходство Mac OS X со своей предшественницей - NeXTStep. Quartz обеспечивает как базовые функции, свойственные большинству аналогичных систем, например буферирование содержимого окон, так и совершенно уникальные, такие, как модель «попиксельного видеомикширования», которая позволяет в реальном времени разделять каждый пиксел физического экрана между несколькими окнами приложений одновременно с помощью различных алгоритмов. В предыдущих версиях Mac OS X критический компонент Quartz - Quartz Compositor, отвечающий за уникальную функциональность подсистемы (в первую очередь, за «попиксельное видеомикширование»), выполнялся на центральном процессоре компьютера и работал с подготовленными областями буферной памяти окон, в которые приложения осуществляли «вывод» посредством вызовов библиотек Quartz. На основе содержания буферов окон Quartz Compositor формировала мгновенный «снимок» текущего состояния экранной области, и именно эта картинка отображалась на экране рабочей станции под управлением Mac OS X. Очевидно, что все процедуры, связанные с обработкой таких объемов информации, да еще и основанные на весьма сложных алгоритмах, крайне ресурсоемки, что и подтверждалось «заторможенностью» Mac OS X прошлых поколений. Найти одновременно красивое и радикальное решение такой проблеме было трудно. Существенно поднять производительность такой высокоуровневой графической подсистемы, как Quartz, можно было только одним способом. А именно, превратить всю дисплейную подсистему из двухмерной в трехмерную! Именно это и было сделано в Jaguar - усложненное название Quartz Extreme (QE) скрывает за неопределенностью, пожалуй, самое значительное событие в мире ОС последних лет. Jaguar - это первая Операционная Система с полностью 3D-пользовательским интерфейсом! Теперь QE воспринимает каждое окно не иначе как текстурированный 3D-объект. Сама текстура этого объекта может порождаться программами двухмерной (библиотеки Quartz), трехмерной (OpenGL) графики или мультимедийным потоком (QuickTime). А остальное - операции с «3D-объектами-окнами» - дело мощного стандартного и доступного видеоакселератора.
Последний важнейший элемент системы - пользовательский интерфейс Aqua. Это название не случайно - стилем нового интерфейса является полупрозрачность и подвижность элементов. Как ни странно, освоиться в Aqua значительно легче после некоторого опыта работы с NeXTSTEP/OPENSTEP или даже Windows. Во-первых, по сравнению с классическими версиями Mac OS, Aqua изменяет устоявшееся представление пользователя об уровневом расположении окон (в классических Mac все окна одного приложения располагаются на «одном уровне глубины экрана»). Теперь, как и в большинстве оконных систем, можно «поднимать» на «поверхность» экрана любое окно, не заботясь о его расположении в уровневой иерархии (стандартное поведение классической Mac OS, эмулируется элементом меню Bring All to Front). Во-вторых, Aqua предполагает возможность управления новыми (для Mac-мира) элементами интерфейса – «листами». Лист представляет собой хорошо знакомое пользователям Windows «всплывающее окно», «привязанное» к родительскому окну, и используется в основном для критических сообщений и предупреждений, ассоциированных с одним процессом. В-третьих, интерфейсные возможности расширены еще одной конструкцией: «выдвижным ящиком» (drawer) – «выплывающим» окном, способным содержать различные интерфейсные элементы. В-четвертых, изменениям подверглась организация Рабочего стола.