Здесь будет город-сад?
 
08.04.2003
Александр Пацай


 
стр. 1
cтр. 2 >>

Слухи о появлении 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.Ядро современной Mac OS X — Darwin — представляет собой комбинацию Mach 3.0, 4.4 BSD и других компонентов, как разработанных Apple, так и позаимствованных в качестве сторонних стандартов: например, I/O Kit для создания драйверов устройств и их динамической подгрузки в систему при наличии устройства или же VFS (Virtual File System) — для поддержки других файловых систем, и др.
Mach 3.0 в ядре Mac OS X обеспечивает необходимые параметры современной операционной системы — защищенную память, когда сбой одного приложения не заставляет другие приложения сыпаться, как карточный домик; вытесняющую многозадачность, при которой приложения, запущенные на компьютере, мирно сосуществуют, деля между собой процессорное время; динамическую виртуальную память, позволяющую выделять приложению столько памяти, сколько ему надо (в пределах дискового пространства). От BSD Mac OS X позаимствовала модель работы с процессами в системе, идентификацию пользователей и систему привилегий, а также работу с потоками в приложениях — POSIX threads.

Darwin уже давно существует в версии под х86-процессоры, и любой желающий может скачать как дистрибутив Darwin, так и исходный код этого ядра, свободно распространяемый Apple. Но все, что получит пользователь после установки этого дистрибутива, — обычную командную строку еще одной UNIX-системы. То, что находится выше уровня ядра, — графическая составляющая, среда для работы приложений с графическим пользовательским интерфейсом, сам интерфейс, — в дистрибутив ядра не входят и являются компонентами коммерческой операционной системы Mac OS X.

Если ядро системы существует под архитектуру x86, значит, нужно лишь портировать на эту же архитектуру оставшиеся части — и дело сделано?


Классическая Mac OS, в то время System 7.0, существовала, хоть и недолго, в версии под х86-платформу. К сожалению, этот проект (кодовое название Star Trek) был похоронен в недрах Apple в эпоху затягивания поясов.
Подтолкнула Apple к созданию версии Mac OS для процессоров Intel в 1992 году компания Novell, рассчитывавшая на помощь Apple в реализации проекта (Novell требовалась ОС для рабочих станций). Активное участие в нем принимала и Intel, которая была не прочь избавиться от зависимости от Microsoft. Уже в декабре того же года команда из двадцати человек — инженеров Apple и Novell — представила прототип Mac OS для компьютеров на базе процессора Intel. Он включал в себя не только работающий Finder (графическая оболочка Макинтошей для работы с файлами и приложениями), но и часть QuickTime, и графическую подсистему QuickDrawGX, и даже стартовое приветствие «Welcome to Macintosh». Но уход руководителя проекта Star Trek из компании, сопротивление некоторых топ-менеджеров Apple, а также обещания IBM о содействии в разработке другой ОС под кодовым названием Pink не позволили продолжить работу, и в июне 1993 года Star Trek был прекращен.
Несмотря на технологический успех в переносе System 7.0 на Intel-компьютер, сам процесс перехода на подобную платформу — если бы он состоялся — был бы вовсе не простым. Star Trek создавался как проект, совместимый на уровне исходных кодов, а не готовых приложений, поэтому существующие приложения нужно было перекомпилировать для работы на процессорах Intel, а те программы, которые работали с аппаратным обеспечением, пришлось бы переписывать. Так что коммерческий успех проекта был очень сомнителен для многих сторонних разработчиков программного обеспечения.

Практика

Давайте детальнее рассмотрим, какие компоненты не вошли в Darwin и насколько легко они поддаются портированию2.
С технической точки зрения, графическая составляющая Mac OS X не должна вызывать проблем с переносом на x86 — ведь она основана на кроссплатформных стандартах. В самом деле, для трехмерной графики на Mac OS X используется изобретение компании Silicon Graphics — стандарт OpenGL, существующий на всех платформах. Технология QuickTime, с появлением которой связывают возникновение термина «мультимедиа», выпускается для классической Mac OS, Mac OS X и Windows с практически идентичным набором программных вызовов (Application Programming Interface — API). Система прорисовки двухмерной графики — Quartz 2D — использует стандарт PDF как внутреннюю модель для создания векторной графики на экране компьютера, а PDF, как известно, тоже является кроссплатформным стандартом.

Возможно, все не так просто, как кажется на первый взгляд, но я думаю, что проблем с этой частью 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 году Стивом Джобсом.
2 (назад)  Нижеследующая структура дает несколько упрощенное, но в целом правильное представление о строении Mac OS X.


 
стр. 1
cтр. 2 >>

<<Лучший антиспам
Все материалы номера
конfетти >>