Erweiterung (Mac OS) - Extension (Mac OS)

Unter dem klassischen Mac OS (dem ursprünglichen Apple Macintosh-Betriebssystem ) waren Erweiterungen kleine Codeteile, die die Funktionalität des Systems erweiterten. Sie wurden anfänglich zum Startzeitpunkt ausgeführt und durch eine Vielzahl von Mechanismen betrieben, einschließlich Trap- Patching und anderer Code-Modifikationstechniken. Ursprünglich ein Apple-Entwickler-Hack, wurden Erweiterungen zum Standard für die Bereitstellung eines modularen Betriebssystems. Große Mengen wichtiger Systemdienste wie die TCP / IP-Netzwerkstacks (MacTCP und Open Transport) sowie die Unterstützung von USB und FireWire waren optionale Komponenten, die als Erweiterungen implementiert wurden. Der Ausdruck "Systemerweiterung" umfasste später auch gesichtslose Hintergrundanwendungen .

Erweiterungen im Allgemeinen die gleiche Rolle wie gefüllt DOS ‚s beenden und resident bleiben Programme oder Unix ‘ s - Dämonen , obwohl durch den zugrunde liegenden Betriebssystem - Code Patchen sie die Fähigkeit hatten bestehende OS Verhalten zu ändern, hat die beiden andere nicht.

Der INIT-Mechanismus

Das Konzept der Erweiterungen war in der ursprünglichen Macintosh-Systemsoftware nicht vorhanden, aber das System verfügte dennoch über einen privaten Patch-Mechanismus, den Entwickler bald nutzen konnten - den INIT-Loader. Dieser Code würde nach Systemressourcen vom Typ 'INIT' suchen und diese beim Booten laden und ausführen. Die Code - Ressourcen hatte direkt im Mac gespeichert werden System - Koffer ‚s Resource Fork , was bedeutet , es war nur wirklich zur Verfügung‚Power - User‘ , die bequem sein würde mit ResEdit oder einer anderen Ressource - Editor.

Da die Nutzung dieses Mechanismus ein nicht unterstützter Hack war und nur 32 INITs auf diese Weise geladen werden konnten, reagierte Apple mit einer besser verwalteten Lösung. Anfänglich war dies selbst eine Form von 'INIT'-Ressource mit der ID 31 in der Systemdatei , die im Systemordner nach weiteren Dateien vom Typ' INIT ' suchte und darin INIT-Ressourcen lud und ausführte. (Aus diesem Grund bezeichnen einige erfahrene Mac-Programmierer den Mechanismus zum Laden von Erweiterungen immer noch als "INIT 31-Trick". INITs können jetzt einfach durch Platzieren einer Datei im Systemordner installiert werden, was den Fähigkeiten eines durchschnittlichen Benutzers entspricht. Beginnen Sie mit System In 7 wurden Erweiterungen der Einfachheit halber in den Ordner "Erweiterungen" im Systemordner verschoben, und ein automatischer Routing-Mechanismus wurde implementiert, sodass die Datei durch Ziehen und Ablegen in den Systemordner tatsächlich in den entsprechenden Unterordner verschoben wird.

Erweiterungen behielten den Ressourcentyp "INIT" während ihrer gesamten Lebensdauer bei, und der Loader wurde schrittweise erweitert, um an zahlreichen Stellen nach diesen Ressourcen zu suchen, einschließlich in den Ressourcengabeln von Bedienfeldern in verschiedenen Formaten und in der Auswahl .

Erweiterungen

INITs entwickelten sich zu Systemerweiterungen und erhielten unterwegs zusätzliche Ad-hoc- Protokolle, z. B. die Bereitstellung eines Symbols, das beim Booten angezeigt werden soll (der Ursprung davon war 'ShowINIT'). Die "Parade der Puzzleteile und Symbole" auf dem Bildschirm, während jede Erweiterung geladen wurde, wurde allen Mac-Benutzern bekannt. Apple selbst veröffentlichte schließlich wichtige (aber optionale) Teile des Betriebssystems als Erweiterungen wie QuickTime , QuickDraw 3D und viele andere. Eine beträchtliche Anzahl von Diensten und Treibern unter Mac OS - sowohl offizielle als auch Drittanbieter - wurden als Erweiterungen bereitgestellt, sodass das Betriebssystem durch Deaktivieren reduziert werden konnte.

Systemerweiterungen waren eine häufige Ursache für Instabilität auf dem Macintosh, da Code von Drittanbietern von variabler Qualität war und das System häufig auf eine Weise gepatcht wurde, die nicht immer ordnungsgemäß funktionierte. Einige Erweiterungen funktionierten nicht richtig zusammen oder nur, wenn sie in einer bestimmten Reihenfolge geladen wurden. Darüber hinaus versuchen verschiedene Erweiterungen möglicherweise, denselben Teil des Systems zu patchen, was zu Erweiterungskonflikten und anderen Instabilitäten führen kann. Das Aufspüren dieser Problemquellen war eine weitere Aufgabe, auf die die meisten Mac-Benutzer irgendwann stießen. Die Fehlerbehebung bei Mac OS-Erweiterungen kann ein zeitaufwändiger Prozess der Halbierung und des Versuchs und Irrtums sein .

Der einfachste Weg, das Betriebssystem sauber neu zu starten, bestand darin, die Umschalttaste gedrückt zu halten: Das Laden von Erweiterungen würde umgangen. System 7.5 fügte den Erweiterungs-Manager hinzu , mit dem der Benutzer bestimmte Erweiterungen schnell aktivieren oder deaktivieren und Sätze von ihnen definieren konnte, die ordnungsgemäß zusammenarbeiten würden. Extensions Manager wurde mit zwei schreibgeschützten Basissätzen geliefert: einem, der die Teilmenge der Erweiterungen enthielt, die für den grundlegenden Betriebssystembetrieb erforderlich sind, und einem, der alle offiziellen Erweiterungen aktiviert, die mit dem Betriebssystem geliefert wurden, aber alle Erweiterungen von Drittanbietern deaktivierte.

Die Ladereihenfolge von Erweiterungen war ein Nebeneffekt der GetFInfo-Funktion, die vom Loader zum Auflisten der Dateien im Erweiterungsordner verwendet wurde. Während Apple immer gesagt hat, dass die Reihenfolge, die sich aus der Aufzählung von Dateien mit dieser Funktion ergibt, undefiniert ist, hat diese Funktion auf HFS-Volumes Dateien in der Reihenfolge aufgelistet, die im HFS-Katalog gespeichert ist. Die Leute fanden heraus, dass das Ändern des ersten Zeichens im Dateinamen die Reihenfolge des Ladens der Erweiterung ändern kann, was zu Problemen führte, als Mac OS 8.1 auf HFS + umgestellt wurde. Apple musste schließlich den Loader ändern, um die von dieser Funktion zurückgegebenen Dateinamen in eine Tabelle zu sortieren, und stellte eine Schnittstelle bereit, über die Software die Tabelle ändern konnte.

Konfigurations- und Bedienfelder

Systemerweiterungen hatten keine Benutzeroberfläche: Es gab keinen Standardmechanismus, mit dem der Benutzer die von einer Erweiterung bereitgestellten Dienste konfigurieren konnte. Erweiterungen konnten die grafische Oberfläche ändern (z. B. neue Menüs zur Menüleiste hinzufügen) und so die Benutzerkonfiguration akzeptieren, oder sie konnten von einer Anwendung zur Bereitstellung der Konfigurationsoberfläche begleitet werden.

Mit System 7 , Bedienfelder werden getrennte Finder Plug - in auf der Disc, die vom Benutzer gestartet werden konnte. Durch Einfügen von INIT-Code in ein Control Panel wurde es möglich, Erweiterungs- / Control Panel-Hybride zu erstellen, die das Betriebssystem beim Booten modifizierten und eine eigene integrierte Konfigurationsschnittstelle in derselben Form wie jedes andere Control Panel des Betriebssystems enthielten.

Gesichtslose Hintergrundanwendungen

MultiFinder und System 7 und höher unterstützten gesichtslose Hintergrundanwendungen , die UNIX-Daemons oder Windows-Diensten ähneln , jedoch kooperatives Multitasking verwenden . Beispiele hierfür waren Time Synchronizer ( Sommerzeitanpassung und Remote-Zeitsynchronisierung), Software Update Scheduler und Ordneraktionen (Behandlung von Ordnerereignissen). Gesichtslose Hintergrundanwendungen waren reguläre Anwendungen mit der Einschränkung, dass sie nicht im Anwendungsmenü angezeigt wurden. Die einzigen technischen Unterschiede zwischen einer gesichtslosen Hintergrundanwendung und einer regulären Anwendung bestanden darin, dass das Flag "Nur Hintergrund" in der SIZE Ressource ' ' gesetzt wurde. Es war ihnen untersagt, ein normales Fenster auf Anwendungsebene zu öffnen. Andernfalls würde das System einfrieren.

Es stand ihnen jedoch frei, globale schwebende Fenster zu öffnen, da diese weder den Fokus gewinnen noch verlieren konnten. Der Control Strip in Mac OS 8 und 9 war ein Beispiel für eine gesichtslose Hintergrundanwendung, die ein globales schwebendes Fenster zur Benutzerinteraktion anzeigte. Der Application Switcher war ein anderer. Dem Benutzer war jedoch zu keinem Zeitpunkt bewusst, dass der Kontrollstreifen ein laufender Prozess war. Es wurde einfach als zusätzliche Schnittstellenfunktion präsentiert. Das System beschrieb gesichtslose Hintergrundanwendungen einfach als "Systemanwendungen".

Sprachfunktionen in der Open Scripting Architecture (und damit in AppleScript ) wurden ursprünglich als dynamisch ladbare Plugins implementiert, die als "Scripting Additions" oder OSAXes bezeichnet werden. In Mac OS 8 und 9 wurden diese durch gesichtslose Hintergrundanwendungen ergänzt, die bei Bedarf im Hintergrund geladen wurden. Genau wie bei regulären Anwendungen wurde auf diese Anwendungen mithilfe von tell Klauseln zugegriffen : Der globale Namespace wurde nicht wie bei OSAXes aktualisiert. Das Betriebssystem hat weder den Start solcher Prozesse angegeben noch angegeben, ob sie ausgeführt wurden oder nicht.

Andere Nicht-INIT-Erweiterungen

Beim Start wurden Erweiterungen vom Typ INIT geladen, um das Betriebssystem zu aktualisieren. Verwirrenderweise konnten auch verschiedene andere Dateien in den Ordner "Erweiterungen" gestellt werden, von denen viele beim Booten nicht geladen wurden. Am bemerkenswertesten waren gemeinsam genutzte Bibliotheken, die zur Vereinfachung des Auffindens häufig in den Ordner "Erweiterungen" gestellt wurden. Freigegebene Bibliotheken wurden beim Booten nicht geladen.

Dateien vom Typ INIT waren nicht die einzige Art von Systemerweiterung. Ein anderer Typ war scri oder WorldScript-Erweiterung. Der BootX Linux Bootloader wurde als scri implementiert, einfach solche Dateien wurden sehr früh im Bootprozess geladen, vor allen anderen Erweiterungen. BootX könnte dann ein Dialogfeld anzeigen, in dem der Benutzer das Booten von Mac OS beenden oder stattdessen Linux laden kann.

Siehe auch

Verweise