Здесь будет город-сад? 08.04.2003 Александр Пацай
Слухи о появлении Mac OS X для платформы х86 ходят давно, то исчезая, то возвращаясь снова. На чем они основаны, насколько оправданны и воплотятся ли когда-нибудь в реальный программный продукт — вопрос, интересующий многих. Эта статья не является подтверждением или опровержением подобных слухов, равно как и изложением официальной точки зрения компании Apple на вопрос переноса Mac OS X на x86-платформу. Это — попытка оценить вероятность такого переноса и его возможные последствия. История В 1984 году вышла System 1.0 — первая версия «классической» Mac OS и первая коммерческая операционная система с графическим пользовательским интерфейсом. Этот интерфейс включал в себя такие элементы, как окна, пиктограммы файлов и программ, меню для выбора команд и курсор, которым пользователь мог управлять с помощью мыши (тоже обретшей популярность благодаря Макинтошу). Система изначально разрабатывалась с расчетом на то, чтобы любой неквалифицированный пользователь мог, впервые сев за компьютер, уже через несколько минут начать работать на нем. С течением времени Mac OS взрослела, обрастая дополнительной функциональностью, но при этом оставалась наиболее легкой в изучении и использовании. Другое дело, что технические ограничения, заложенные в систему, не позволяли ей называться «современной»: System 1.0 и ее продолжение вплоть до Mac OS 9 фактически были предназначены для одного пользователя, который бы работал с одним приложением на одном компьютере. Защищенная память, полноценная «вытесняющая» многозадачность, динамическое выделение виртуальной памяти, поддержка многопроцессорности — все это отсутствовало в «классической» Mac OS. Путь, по которому пошла Apple, вряд ли можно назвать легким. В 1997 году она купила другую операционную систему — OpenStep от компании NeXT1. OpenStep была UNIX-базированной операционной системой, не имела тех недостатков, от которых страдала Mac OS, и, что очень важно, поддерживала несколько видов процессоров — Motorola 680x0, Intel 80x86, HP PA-RISC и Sun SPARC. После нескольких лет упорного труда Apple выпустила на рынок новое поколение операционной системы для Макинтошей под названием Mac OS X, заложив в ее основу именно OpenStep (вернее, то, во что она превратилась за несколько лет мутаций в лабораториях Apple). Это и позволяет многим предположить, что, вероятно, поддержка нескольких семейств процессоров осталась в Mac OS X, и все, что надо Apple, — это включить ее, после чего настанет вселенское счастье в виде доступной настольной альтернативы MS Windows. Теория Ядро современной Mac OS X — Darwin — представляет собой комбинацию Mach 3.0, 4.4 BSD и других компонентов, как разработанных Apple, так и позаимствованных в качестве сторонних стандартов: например, I/O Kit для создания драйверов устройств и их динамической подгрузки в систему при наличии устройства или же VFS (Virtual File System) — для поддержки других файловых систем, и др. Darwin уже давно существует в версии под х86-процессоры, и любой желающий может скачать как дистрибутив Darwin, так и исходный код этого ядра, свободно распространяемый Apple. Но все, что получит пользователь после установки этого дистрибутива, — обычную командную строку еще одной UNIX-системы. То, что находится выше уровня ядра, — графическая составляющая, среда для работы приложений с графическим пользовательским интерфейсом, сам интерфейс, — в дистрибутив ядра не входят и являются компонентами коммерческой операционной системы Mac OS X. Если ядро системы существует под архитектуру x86, значит, нужно лишь портировать на эту же архитектуру оставшиеся части — и дело сделано?
Практика Давайте детальнее рассмотрим, какие компоненты не вошли в Darwin и насколько легко они поддаются портированию2. Возможно, все не так просто, как кажется на первый взгляд, но я думаю, что проблем с этой частью Mac OS X при портировании возникнет меньше всего. Гораздо интереснее (и сложнее) обстоят дела с портированием среды для работы приложений. Как известно, Mac OS X может работать с пятью типами приложений — терминальными, Java, Classic (подсистема работы классической системы Mac OS 9 внутри Mac OS X), Carbon (модификация API, существовавших под классической системой) и Cocoa (API, пришедшие с OpenStep). С первыми двумя все ясно. Никаких особых усилий, кроме обычной доводки, которую иногда приходится делать и сейчас на Mac OS X при сборке терминальных приложений, не потребуется. Java — кроссплатформная технология по определению, и у Java-приложений проблем возникнуть не должно. С Classic и Carbon — двумя близкими наборами API — ситуация иная. Но если технически перенести Classic можно (что продемонстрировал проект Star Trek с классическим набором API под названием ToolBox), то и Carbon, который представляет собой модифицированный ToolBox, тоже наверняка возможно. Учитывая, что среда Classic внутри Mac OS X не имеет доступа напрямую к аппаратному обеспечению и те приложения, что работали с аппаратным обеспечением на Mac OS 9, в среде эмуляции с ним уже не работают, процесс переноса «классических» приложений сводится, как и в проекте Star Trek, к перекомпиляции этих приложений. В Mac OS X работу с устройствами Apple выделила в отдельную технологию под названием I/O Kit, которая входит в состав ядра Darwin, то есть уже существует под x86-платформу. Carbon теперь к работе с «железом» имеет опосредованное отношение — программы получают доступ к аппаратному обеспечению через I/O Kit. Ну а сами Carbon-приложения, вероятно, тоже потребуют перекомпиляции для работы на новой системе. И среда работы Cocoa-приложений, написанных с использованием объектно-ориентированного API, пришедшего из OpenStep — которая существовала для четырех видов процессоров, — должна портироваться на архитектуру других процессоров без особых трудностей. 1 (назад) NeXT была основана в 1986 году Стивом Джобсом.
|