WikiDer > Расширение (Mac OS) - Википедия
Эта статья нужны дополнительные цитаты для проверка. (Февраль 2009 г.) (Узнайте, как и когда удалить этот шаблон сообщения) |
На классическая 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.