Мой 12-дюймовый iBook сошел с конвейера в 2002 году, и для этого года машина была весьма продвинутой в техническом отношении. Здесь имеется привод ComboDrive, поддерживающий чтение и запись компакт‑дисков на скорости до 16x, встроенный модем (56 Kбит/с), порт Ethernet, пара разъемов USB 1.1. В наличии есть даже беспроводной адаптер Apple Air Port стандарта 802.11b c максимальной скоростью передачи данных до 11 Мбит/с.
В основе этого iBook лежит процессор PowerPC 750FX G3 с тактовой частотой 800 МГц, оснащенный кеш‑памятью первого уровня объемом 64 Кбайт и кешем второго уровня на 512 Кбайт, интегрированным в сам чип. Объем оперативной памяти составляет 256 Мбайт SDRAM PC133 (333 МГц), из которых половина распаяна на плате, а вторая половина установлена в единственный слот расширения. Максимально возможный объем ОЗУ — 640 Мбайт. За графику отвечает видеокарта ATI Mobility Radeon 7500 с интерфейсом AGP 2x и собственными 32 Мбайт видеопамяти SDRAM. Для ноутбука 2002 года наличие дискретного GPU — весьма достойный уровень.
Это — ноутбук «старой школы», родом из той эпохи, когда корпус открывался без использования темной магии, а батарею (литий‑ионный аккумулятор на 47 Вт · ч) можно было вытащить примерно за секунду. Эпохи, где за аккуратным дизайном компьютера стояла инженерная логика, а не эстетика, продиктованная специалистами по маркетингу.
Мне этот ноутбук достался с напрочь убитым жестким диском, который отчаянно просился на свалку. Никаких CD с софтом в комплекте, понятное дело, тоже не имелось. Благо в конструкции компьютера использовались стандартные IDE-винчестеры форм‑фактора 2,5 дюйма, а такого добра в моих стратегических запасах хранится в избытке.
Сразу после замены жесткого диска начался увлекательный квест по установке на него операционной системы. Этот iBook был одним из первых ноутбуков от Apple, поставлявшихся покупателям с предустановленной OS X 10.1.4, которая на процессоре G3 с имеющимся в наличии объемом оперативки жутко тормозила, да и в целом выглядела довольно сырой. Но по желанию можно было откатиться на Mac OS 9.2.2 — самую последнюю редакцию классической «макоси», вышедшую в конце 2001 года. Подумав, что на OS X я могу вдоволь полюбоваться и на современном макбуке, я решил обратиться к классике.
В отличие от современных версий эппловской операционки, которая умеет определять оборудование компа и автоматически подстраиваться под имеющееся в наличии железо, дистрибутивы классической Mac OS заранее скомпилированы под одну конкретную аппаратную конфигурацию. То есть дистрибутив изначально собран строго для определенной модели компьютера, и на другую машину он либо не встанет совсем, либо выдаст неправильное экранное разрешение, которое затем невозможно будет изменить, либо не подцепит что‑либо из оборудования. В общем, нормально работать такая система не будет. Я перепробовал с десяток разных дистрибутивов Mac OS 9 и испортил кучу записываемых компакт‑дисков, прежде чем подобрал наконец версию ОС, которая нормально завелась на моем винтажном iBook.
Система приятной наружности
На взгляд современного пользователя Mac OS 9 выглядит, конечно, немного архаично, но это и неудивительно, если учесть, что архитектурная основа этой операционки была заложена еще в оригинальном Macintosh 128K — персоналке на базе процессора Motorola 68000 с 128 Кбайт памяти на борту. Когда Macintosh только появился в 1984 году, он стал первым массовым компьютером с графическим интерфейсом, управляемым мышью. Подобный подход уже реализовывался ранее в лабораториях Xerox PARC, но именно Apple смогла превратить технический концепт в рыночный продукт.

Ключевой особенностью ОС от Apple стало отсутствие командной строки: пользователь взаимодействовал с компьютером исключительно посредством различных элементов графического интерфейса: окон, меню и значков. Сама операционная система представляла собой совокупность Finder (оболочки) и Toolbox — набора библиотек с прикладной логикой. Собственно, эти библиотеки, предоставлявшие интерфейс к системным функциям, и были основным API, доступным приложениям. Однако программисты часто использовали «неофициальные» или плохо задокументированные вызовы, что делало программы нестабильными на новых версиях ОС.
Внутреннее устройство Mac OS долгое время оставалось предельно простым: система не имела ядра в современном понимании — вместо этого использовался набор управляющих модулей, взаимодействующих напрямую с аппаратурой. Процессы в классической Mac OS выполнялись в общем адресном пространстве, без какого‑либо механизма разграничения. Это означало, что любая ошибка в одном приложении могла обрушить всю систему.
Ко всему прочему до начала девяностых Mac OS фактически оставалась однозадачной: пользователь мог работать только с одним приложением, хотя Finder продолжал функционировать в фоновом режиме. Появившийся позже механизм Cooperative Multitasking позволил нескольким запущенным программам передавать управление друг другу — но полноценной многозадачностью это так и не стало. Mac OS не вмешивалась в сам процесс переключения задач, не прерывала их принудительно и не контролировала время выполнения. Управление переключением полностью лежало на самих приложениях: каждое из них должно было добровольно вызвать специальную системную функцию, чтобы уступить процессорное время другим запущенным программам. Если приложение не делало этого, оно продолжало занимать процессор, блокируя выполнение остальных задач и снижая отзывчивость системы.

Одной из особенностей Mac OS было активное использование расширений — так называемых INIT-файлов и контроллеров. Это позволяло добавлять в ОС новые возможности — например, поддержку различных типов файлов или устройств. Однако никакой изоляции между расширениями не существовало, и часто два INIT-файла конфликтовали друг с другом. Расширения загружались сразу после запуска Finder, и последовательность инициализации оказывала прямое влияние на стабильность работы операционки. Иногда решить проблему с зависанием системы можно было просто сменой порядка загрузки INIT-файлов.
Одним из таких расширений стал MultiFinder, добавлявший кооперативную многозадачность между приложениями. Это позволило пользователям Mac OS работать с несколькими программами одновременно, но с сохранением принципа добровольной передачи управления. Многозадачность реализовывалась за счет приостановки одного приложения и временной передачи управления другому: пользователь вручную переключал фокус между программами, щелкая по их окнам. При этом в фоновом режиме другие приложения получали доступ к ресурсам лишь эпизодически — в те моменты, когда активное окно простаивало. В общем, работала эта многозадачность с использованием костылей и подпорок.
Смена курса
В 1994 году Apple впервые проделала то, что позже успешно повторила еще дважды: кардинально сменила аппаратную платформу, отказавшись от процессоров Motorola в пользу более совершенной архитектуры PowerPC, в разработке которой принимала участие вместе с IBM и все той же Motorola. Первый Power Macintosh был представлен 14 марта 1994 года, а за ним подтянулись и ноутбуки. С переходом на другие процессоры нужно было менять и операционную систему — и Apple сделала это, добавив поддержку PPC в версии Mac OS 7.1.2.

Но изменения касались в основном уровня трансляции кода. Mac OS использовала механизм Fat Binary (универсальные бинарники), — все приложения содержали код и для Motorola 680x0, и для PowerPC, а системные библиотеки работали в режиме совместимости с 680x0, что позволяло плавно перейти на новую архитектуру без полной переработки ОС. В результате такие программы могли запускаться и на старых «маках», и на новых, но объем файлов пропорционально вырос, да и на быстродействии приложений поддержка сразу нескольких аппаратных архитектур в одном бинарнике сказывалась не самым лучшим образом.
Продолжение доступно только участникам
Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».
Присоединяйся к сообществу «Xakep.ru»!
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее