Расширение (Mac OS) - Extension (Mac OS) - Wikipedia

На классическая Mac OS (оригинал яблоко Операционная система Macintosh ), расширения были небольшими фрагментами кода, расширяющими функциональность системы. Первоначально они запускались во время запуска и приводились в действие различными механизмами, включая ловушку. исправление и другие методы модификации кода. Изначально разработанные компанией Apple, расширения стали стандартным способом создания модульной операционной системы. Большое количество важных системных служб, таких как сетевые стеки TCP / IP (MacTCP и Open Transport), а также поддержка USB и FireWire, были дополнительными компонентами, реализованными как расширения. Фраза «расширение системы» позже стала включать безликие фоновые приложения также.

Расширения обычно выполняли ту же роль, что и ДОС с прекратить и остаться резидентом программ или Unix с демоны, хотя, исправляя базовый код ОС, они могли изменять существующее поведение ОС, два других - нет.

Механизм INIT

Концепция расширений отсутствовала в исходном системном программном обеспечении Macintosh, но система, тем не менее, имела частный механизм исправления, которым разработчики вскоре научились пользоваться - загрузчик INIT. Этот код будет искать системные ресурсы типа INIT, а также загружать и запускать их во время загрузки. Ресурсы кода нужно было хранить непосредственно на Mac Системный чемодан с вилка ресурса, что означает, что он был действительно доступен только «опытным пользователям», которым было бы удобно использовать ResEdit или другой редактор ресурсов.

Поскольку использование этого механизма было неподдерживаемым взломом и таким образом можно было загрузить только 32 INIT, Apple ответила, предоставив более управляемое решение. Первоначально это само по себе было в форме ресурса INIT с ID 31, помещенного в системный файл, который будет искать дальнейшие файлы типа INIT в Системная папка, а также загружать и запускать внутри них ресурсы INIT. (Вот почему некоторые опытные программисты Mac до сих пор называют механизм загрузки расширений «уловкой INIT 31».[1] Теперь INIT можно было установить, просто поместив файл в системную папку, что было в пределах возможностей обычного пользователя. Начиная с System 7, расширения были перемещены в папку Extensions в системной папке для удобства, и был реализован механизм автоматической маршрутизации, так что размещение расширения в системной папке через перетащить и отпустить фактически поместит файл в соответствующую подпапку.

Расширения сохраняли тип ресурса «INIT» на протяжении всего своего жизненного цикла, и загрузчик постепенно улучшался для поиска этих ресурсов во многих местах, в том числе в ответвлениях ресурсов панелей управления в различных форматах и Выборщик.

Расширения

INIT превратились в системные расширения, получив дополнительные для этого случая протоколы по пути, например, предоставление значка, который будет отображаться во время загрузки (источником этого было «ShowINIT»). «Парад частей головоломки и значков» на экране при загрузке каждого расширения стал знаком всем пользователям Mac. Сами Apple в конечном итоге выпустила основные (но необязательные) части операционной системы в виде расширений, таких как QuickTime, QuickDraw 3D и много других. Существенное количество сервисов и драйверов в Mac OS - как официальных, так и сторонних - было предоставлено в виде расширений, что позволяло урезать ОС путем их отключения.

Системные расширения были обычным источником нестабильности на Macintosh, поскольку сторонний код имел переменное качество и часто исправлял систему способами, которые не всегда работали правильно. Некоторые расширения не работали должным образом вместе или работали только при загрузке в определенном порядке. Кроме того, разные расширения могут пытаться исправить одну и ту же часть системы, что может привести к конфликты расширений и прочая нестабильность. Выявление этих источников проблем было еще одной задачей, с которой в какой-то момент столкнулось большинство пользователей Mac. Устранение неполадок с расширениями Mac OS может занять много времени. деление пополам и методом проб и ошибок.

Самый простой способ выполнить «чистую» загрузку операционной системы - удерживать клавишу Shift: загрузка расширений не будет выполняться. Система 7.5 добавил Менеджер расширений, что позволяло пользователю быстро включать или отключать определенные расширения, а также определять их наборы, которые будут правильно работать вместе. Extensions Manager поставлялся с двумя предоставленными базовыми наборами только для чтения: один содержал подмножество расширений, необходимых для базовой работы ОС, а другой включал все официальные расширения, поставляемые с ОС, но отключал все сторонние расширения.

Порядок загрузки расширений был побочным эффектом функции GetFInfo, которая использовалась загрузчиком для перечисления файлов в папке Extension. Хотя Apple всегда заявляла, что порядок, который возникает в результате перечисления файлов с помощью этой функции, не определен, на томах HFS эта функция перечисляет файлы в порядке, хранящемся в каталоге HFS. Люди выяснили, что изменение первого символа в имени файла может изменить порядок загрузки расширений, что вызвало проблемы, когда Mac OS 8.1 перешла на HFS +. В итоге Apple пришлось изменить загрузчик, чтобы отсортировать имена файлов, возвращаемых этой функцией, в таблицу и предоставить интерфейс, позволяющий программному обеспечению изменять таблицу.[2]

Панели настройки и управления

Системные расширения не имели пользовательского интерфейса: не было стандартного механизма, с помощью которого пользователь мог бы настраивать услуги, предоставляемые расширением. Расширения могли изменять графический интерфейс (например, добавлять новые меню в строку меню) и, таким образом, принимать конфигурацию пользователя, или они могли сопровождаться приложением для предоставления интерфейса конфигурации.

С Система 7, панели управления стать отдельными плагинами Finder на диске, которые может запускать пользователь. Путем вставки кода INIT в панель управления стало возможным создавать гибриды расширений и панелей управления, которые изменяли операционную систему во время загрузки и содержали свой собственный встроенный интерфейс конфигурации в той же форме, что и любая другая панель управления операционной системы.

Безликие фоновые приложения

Поддержка MultiFinder и System 7 и более поздних версий безликие фоновые приложения похожий на Демоны UNIX или же Службы Windows, хотя используя совместная многозадачность. Примеры включают синхронизатор времени (летнее время настройки и удаленной синхронизации времени), Планировщик обновлений программного обеспечения и Действия с папками (обработка событий папки). Безликие фоновые приложения были обычными приложениями с ограничением, что они не отображались в меню приложений. Единственные технические различия между безликим фоновым приложением и обычным приложением заключались в том, что флаг «Только фон» был установлен в 'РАЗМЕРресурс. Им было запрещено открывать обычное окно уровня приложения: в противном случае система зависала бы.

Однако они могли свободно открывать глобальные плавающие окна, поскольку они не могли ни получить, ни потерять фокус. В Контрольная полоса в Mac OS 8 и 9 был пример безликого фонового приложения, которое отображало глобальное плавающее окно для взаимодействия с пользователем. Переключатель приложений был другим. Однако пользователь никогда не знал, что контрольная полоса является запущенным процессом; это было просто представлено как дополнительная функция интерфейса. Система просто описывала безликие фоновые приложения как «системные приложения».[нужна цитата ]

Языковые функции в архитектуре открытого сценария (и, следовательно, AppleScript ) изначально были реализованы как динамически загружаемые плагины, известные как «скриптовые дополнения» или OSAX. В Mac OS 8 и 9 они были дополнены безликими фоновыми приложениями, которые загружались в фоновом режиме по запросу. Как и в случае с обычными приложениями, доступ к этим приложениям осуществлялся с помощью рассказать clauses: глобальное пространство имен не обновлялось, как в случае с OSAX. Операционная система не показывала запуск таких процессов и не указывала, запущены они или нет.

Другие расширения, не относящиеся к INIT

Расширения типа INIT загружались во время загрузки для обновления операционной системы. Как ни странно, в папку Extensions можно было поместить и другие файлы, многие из которых не были загружены во время загрузки. Наиболее заметными из них были общие библиотеки которые обычно помещались в папку Extensions для удобства поиска. Общие библиотеки не загружались во время загрузки.

Файлы типа INIT были не единственным типом расширения системы. Другой тип был scri, или расширение WorldScript. В BootX Загрузчик Linux был реализован как scri просто такие файлы загружались очень рано в процессе загрузки, раньше всех остальных расширений. Затем BootX может отобразить диалоговое окно, предлагающее пользователю завершить загрузку Mac OS или вместо этого загрузить Linux.

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

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