stringtranslate.com

Панель инструментов Macintosh

Macintosh Toolbox реализует многие высокоуровневые функции классической Mac OS , включая набор интерфейсов прикладного программирования для разработки программного обеспечения на платформе. Панель инструментов состоит из ряда «менеджеров», программных компонентов, таких как QuickDraw , отвечающих за рисование экранной графики, и менеджера меню, который поддерживает структуры данных, описывающие строку меню. Поскольку оригинальный Macintosh был разработан без виртуальной памяти или защиты памяти , было важно классифицировать код в зависимости от того, когда его следует загружать в память или хранить на диске, а также как к нему следует обращаться. Toolbox состоит из подпрограмм, достаточно важных для того, чтобы их можно было постоянно хранить в памяти и получить к ним доступ с помощью двухбайтовой машинной инструкции ; однако он исключает основные функции «ядра», такие как управление памятью и файловая система . Обратите внимание, что Toolbox не рисует меню на экране: меню были разработаны так, чтобы иметь настраиваемый внешний вид, поэтому код рисования хранился в ресурсе , который мог находиться на диске.

Появление и реализация

В системах 68k

Исходная реализация операционной системы Macintosh семейства Motorola 68000 выполняет системные вызовы, используя механизм обработки исключений недопустимого кода операции этого процессора . Motorola уточнила, что инструкции, начинающиеся с 1111 и 1010, никогда не будут использоваться в будущих процессорах семейства 68000, что освобождает их для использования как таковых в операционной системе. Кроме того, у каждого из них был свой собственный выделенный вектор прерывания , отдельный от общего обработчика недопустимого кода операции. Поскольку 1111 был зарезервирован для использования сопроцессорами , такими как 68881 FPU , Apple выбрала 1010шестнадцатеричном представлении ASCII , A , за которым следует управляющий символ) в качестве префикса для вызовов операционной системы. Обработка недопустимых инструкций известна как перехват , поэтому эти специальные инструкции были названы A-ловушками . [1] Когда процессор встречает такую ​​инструкцию, он передает управление операционной системе, которая ищет соответствующую задачу и выполняет ее. У этого механизма было два преимущества:

Система была дополнительно оптимизирована путем выделения некоторых битов инструкции A-trap для хранения параметров наиболее распространенных функций. Например, выделение памяти — очень распространенная задача, поэтому ее следует выражать как можно меньшим количеством байтов кода. Иногда программист хочет очистить блок памяти до нуля, поэтому либо функция распределения должна принимать логический параметр, либо должно быть две функции распределения. Для передачи параметра потребуется дополнительная двухбайтовая инструкция, что будет неэффективно. Наличие двух функций потребует как минимум дополнительных четырех байтов ОЗУ, используемых для адреса в справочной таблице функций. Наиболее эффективное решение — сопоставить несколько A-ловушек одной и той же подпрограмме, которая затем использует A-ловушку в качестве параметра. Это справедливо для наиболее часто используемых подпрограмм. Однако Toolbox состоял из менее часто используемых подпрограмм. Toolbox был определен как набор подпрограмм, которые не принимали никаких параметров в A-ловушке и были проиндексированы из 1024 записей и 4-килобайтной таблицы диспетчеризации . [2] (Машины, поставляемые с оперативной памятью менее одного мегабайта, используют одну таблицу из 512 записей, что соответствует таблице отправки ОС с 256 записями в более поздних версиях ПЗУ. [3] )

В системах PowerPC

В 1994 году Apple выпустила Macintosh с использованием архитектуры PowerPC , в которой отсутствовала аппаратная поддержка механизма A-trap, доступного в системах 68k. Однако из-за их использования при установке исправлений программного обеспечения таблицы диспетчеризации были сохранены. Код библиотеки API, лежащий в основе любой процедуры Toolbox, не делает ничего, кроме ссылки на таблицу диспетчеризации. Таблица отправки связана только с эмулируемым кодом семейства 68000. Функции Toolbox, реализованные в собственном коде PowerPC, должны сначала отключить эмулятор с помощью диспетчера смешанного режима. В целях единообразия и расширяемости новые записи функций даже продолжали добавляться в Toolbox после перехода на PowerPC.

Однако альтернативный механизм существовал в диспетчере фрагментов кода, который использовался для загрузки и динамического связывания собственных программ PowerPC. Средство системных вызовов PowerPC, аналогичное механизму A-trap, использовалось для взаимодействия с наноядром Mac OS , которое предлагало мало сервисов, непосредственно полезных для приложений.

Функциональность

Интерфейсы программирования

Панель инструментов состоит из часто используемых функций, но не из наиболее часто используемых функций. В результате он превратился в мешанину разных API- библиотек . [3] Toolbox включает в себя большую часть базовых функций, которыми отличалась классическая Mac OS. Ссылки Apple «Внутри Macintosh: Основы Macintosh Toolbox» и «Внутри Macintosh: Больше Macintosh Toolbox», столь же расплывчатые по объему, также документируют большую часть Toolbox.

Использование при загрузке

Поскольку большая часть Toolbox реализована в ПЗУ вместе с прошивкой компьютера , его было удобно использовать в качестве среды загрузчика . В сочетании с ресурсами , хранящимися в микросхеме ПЗУ, Toolbox может сделать экран серым, отобразить диалоговое окно с подписью приветствия «Добро пожаловать в Macintosh» и отобразить курсор мыши. Используя Toolbox для загрузки компьютера, можно инициализировать элементарную среду, подобную Mac, еще до загрузки системного чемодана с диска (фактически до того, как были выполнены ПЗУ на картах NuBus), то есть, когда принимается решение использовать 24-битную или 32-битную версию. Должна быть выполнена -битная адресация. (Для поддержки 32-битной адресации в системе 7 требуются 32-битные чистые ПЗУ, поскольку старые ПЗУ Mac не поддерживают эту функцию). Потребность в диагностике, как в резидентном BIOS для плат, совместимых с IBM PC, не требуется, поскольку Macintosh проводит большую часть диагностики в POST и автоматически сообщает об ошибках с помощью кодов « Sad Mac ».

Однако сходство между средой загрузки и реальной операционной системой не следует путать с идентичностью. Хотя процесс загрузки «Классической Mac OS» запутан и в значительной степени недокументирован, он не более ограничен, чем BIOS , совместимый с IBM PC . Подобно основной загрузочной записи ПК , Mac на базе ПЗУ считывает и выполняет код из первых блоков («загрузочных блоков») раздела диска, выбранного в качестве загрузочного устройства . Затем загрузочные блоки проверяют наличие подходящей элементарной среды и используют ее для загрузки системного чемодана. Другая операционная система с другой файловой системой может загружаться, просто используя собственный код в загрузочных блоках. [4] Однако эта система не использовалась для PowerPC Linux, поскольку для открытой прошивки на машинах New World ROM требуется загрузчик в файловой системе HFS - причина, не имеющая ничего общего с Toolbox или «старомодными» Mac в целом. В более узком смысле, панель управления «Загрузочный диск» в классической Mac OS и более поздних версиях macOS позволяет пользователю выбирать смонтированную файловую систему только с очень конкретными ограничениями.

Наследие

В Mac OS X Toolbox вообще не используется, хотя классическая среда загружает ROM-файл Toolbox на свою виртуальную машину. Большая часть Toolbox была реструктурирована и реализована как часть API программирования Carbon от Apple , что позволило программистам, знакомым с Toolbox, легче переносить свой программный код на Mac OS X.

Смотрите также

Рекомендации

  1. ^ Apple Inc. (6 июля 1996 г.). «Инструкции по линии». Архивировано из оригинала 2 июля 2004 г.Альтернативный URL
  2. ^ Apple Inc. (6 июля 1996 г.). «О управляющем ловушками». Архивировано из оригинала 2 июля 2004 г.Альтернативный URL
  3. ^ Аб Олсон, Джеймс Х. (4 сентября 1997 г.). «Мак Аламанак II». Linux/m68k для Macintosh .
  4. ^ Apple Inc. (6 июля 1996 г.). «Загрузочные блоки». Архивировано из оригинала 12 марта 2004 г.Альтернативный URL

Внешние ссылки