Kanal I/O
Im Computer, Kanal I/O ist eine Hochleistungs Input-Output (I/O) Architektur, die in verschiedenen Formen auf einer Reihe von Computerarchitekturen implementiert wird, insbesondere in Mainframe -Computer. In der Vergangenheit waren die Kanäle im Allgemeinen[a] implementiert mit benutzerdefinierten Geräten, unterschiedlich benannt Kanal, E/A -Prozessor, E/A -Controller, I/o Synchronisator, oder DMA -Controller.
Überblick
Viele E/A -Aufgaben können komplex sein und erfordern, dass die Logik auf die Daten angewendet werden, um Formate und andere ähnliche Aufgaben zu konvertieren. In diesen Situationen besteht die einfachste Lösung darin, das zu fragen Zentralprozessor Um die Logik zu bewältigen, aber da E/A -Geräte relativ langsam sind, kann eine CPU Zeit verschwenden (in Computerperspektive), die auf die Daten vom Gerät warten. Diese Situation heißt "I/O gebunden".
Die Kanalarchitektur vermeidet dieses Problem, indem es einige oder die gesamte E/A -Aufgabe ohne Hilfe der CPU verarbeitet, indem die Arbeit in dedizierte Logik abgeladen wird. Kanäle sind logisch[a] in sich geschlossen, mit ausreichender Logik und Arbeitsspeicher, um E/A-Aufgaben zu erledigen. Einige sind leistungsstark oder flexibel genug, um selbst als Computer verwendet zu werden, und können als eine Form von ausgelegt werden CoprozessorZum Beispiel der 7909 -Datenkanal auf einem IBM 7090 oder IBM 7094; Die meisten sind es jedoch nicht. In einigen Systemen verwenden die Kanäle Speicher oder Register, die vom zentralen Prozessor als Arbeitspeicher adressiert werden können, während sie auf anderen Systemen in der Kanalhardware vorhanden sind. In der Regel gibt es Standardschnittstellen zwischen Kanälen und externen peripheren Geräten, und mehrere Kanäle können gleichzeitig funktionieren.
Eine CPU bezeichnet normalerweise einen Speicherblock oder sendet einen relativ kleinen Kanalprogramm an den Kanal, um E/A -Aufgaben zu erledigen, die der Kanal und der Controller in vielen Fällen ohne weitere Intervention von der CPU vollständig eingreifen können , Nachfragen von Paging und anderen wesentlichen Systemaufgaben).
Wenn die E/A -Übertragung abgeschlossen ist oder ein Fehler festgestellt wird, kommuniziert der Controller normalerweise mit der CPU über den Kanal mit einem unterbrechen. Da der Kanal normalerweise direkten Zugriff auf den Hauptspeicher hat, wird er häufig auch als als bezeichnet direkter Speicherzugriff (DMA) Controller.
In den neuesten Implementierungen wird das Kanalprogramm eingeleitet und der Channel -Prozessor führt durch alle Erforderliche Verarbeitung bis entweder eine Endbedingung oder ein programmgesteuertes Interrupt (PCI). Dies beseitigt einen Großteil der CPU - Channel -Interaktion und verbessert die Gesamtsystemleistung erheblich. Der Kanal kann mehrere verschiedene Arten von Endbedingungen melden, die eindeutig normal sein können, kann eindeutig einen Fehler anzeigen oder dessen Bedeutung vom Kontext und den Ergebnissen einer nachfolgenden Sinnesoperation abhängen kann. In einigen Systemen kann ein E/A -Controller eine automatische Wiederholung einiger Vorgänge ohne CPU -Intervention anfordern. In früheren Implementierungen, irgendein Der Fehler, egal wie klein, erforderte die CPU -Intervention und der Overhead folglich viel höher. Eine programmgesteuerte Unterbrechung (PCI) wird immer noch von bestimmten älteren Operationen verwendet, aber der Trend besteht darin, sich von solchen PCIs zu entfernen, außer wenn sie unvermeidlich sind.
Geschichte
Die erste Verwendung von Kanal I/O war mit dem IBM 709[2] Vakuumrohr Mainframe, dessen Modell 766 Datensynchronisator der erste Kanalcontroller 1957 war. Sein transistorisierter Nachfolger, der IBM 7090,[3] Hatte zwei bis acht 6-Bit-Kanäle (7607) und einen Kanal-Multiplexor (der 7606), der bis zu acht Kanäle steuern konnte. Die 7090 und 7094 könnten mit 7909 auch bis zu acht 8-Bit-Kanäle haben.
Während IBM Daten verwendete Kanalbefehle auf einigen seiner Computer und erlaubt Befehlskettung Auf den 7090 verwendeten die meisten anderen Anbieter Kanäle, die sich mit einzelnen Datensätzen befassten. Einige Systeme, z. B., jedoch, GE-600-Seriehatte anspruchsvollere E/O -Architekturen.
Später für größere IBM System/360 und System/370 Computer Die Kanäle waren immer noch sperrig und teure separate Komponenten wie der IBM 2860 -Selektorkanal (ein bis drei Selektorkanäle in einem einzelnen Box), der IBM 2870 -Byte -Multiplexorkanal (ein Multiplexer -Kanal und optional ein Selektor -Subkanal in einem Einzelkasten) und der IBM 2880 Block Multiplexorkanal (ein oder zwei Block -Multiplexorkanäle in einer einzelnen Box). In den 303x-Prozessorkomplexen gab IBM diese Implementierung auf und verwendete dieselbe Implementierung des Zyklusstocks wie im 370/158. Kein nachfolgendes Produkt in der System/360 -Linie hatte fest verdrahtete Kanäle.
Amdahl Corporation Die Hardware -Implementierung von System/370 kompatiblen Kanälen war sehr unterschiedlich. Eine einzelne interne Einheit mit dem Namen "C-Unit" unterstützte bis zu sechzehn Kanäle mit derselben Hardware für alle unterstützten Kanäle. Zwei interne "C-Einheiten" waren möglich, was bis zu 32 Kanäle unterstützte. Jede "C-Einheit" führte unabhängig einen Prozess durch Fassprozessor), die eine spezialisierte implementierten endliche Zustandsmaschine (FSM). Jeder CPU-Zyklus, alle 32 Nanosekunden in den 470 V /6 und /5 und alle 26 Nanosekunden in der 470 V /7 und /8, las der "C-Unit" den vollständigen Status des nächsten Kanals in der Prioritätssequenz und der E/A-Kanal-In-Tags. Die notwendigen Maßnahmen, die durch das dieses Kanals definiert werden letzter Status und sein In-Tags wurden durchgeführt: Daten wurden aus gelesen oder in den Hauptspeicher geschrieben, das Betriebssystemprogramm wurde unterbrochen, wenn eine solche Unterbrechung durch das Programm der Programmsteuerung des Kanalprogramms festgelegt wurde, und der "C-Unit" speichert schließlich den nächsten Status dieses Kanals und setzte seine fest E/A-Kanal-Out-Tagsund ging dann zum nächsten Kanal mit niedrigerer Priorität. Die Präsentation war in einigen Fällen möglich. Für alle Kanäle, die durch dieses FSM nachgeahmt wurden, wurde im "C-Einheit" eine ausreichende FIFO-Speicherung bereitgestellt. Kanäle können leicht in die Auswahl des Selektors, des Byte -Multiplexors des Kunden) oder in der Block -Multiplexorkanal durch den Kunden konfiguriert werden. "Zwei-Byte-Schnittstelle" wurde ebenfalls unterstützt, ebenso wie "Daten in/Data-out" und andere Hochleistungs-IBM-Kanaloptionen. Eingebaut Kanal-zu-Kanal-Adapter wurden auch angeboten, CCAs in Amdahl-Speak genannt, aber CTCS oder CTCAs in IBM-Speak genannt. Ein echter Game-Changer, und dies zwang IBM, seine Mainframes neu zu gestalten, um eine ähnliche Kanalfunktion und Flexibilität zu bieten. Die erste Reaktion von IBM bestand darin, das abgespeckte Modell 158s, das nur im "Kanalmodus" betrieben wird, als Modell 303x-Kanaleinheiten einzuschließen. In der Amdahl "C-Unit" kann jeder Kanal jeder Typ, einen Auswahl-, Byte-Multiplexor) oder einen Block-Multiplexer sein, ohne die Kanäle 0 und 4 für die Byte-Multiplexer wie bei einigen IBM-Modellen zu reservieren.
Für kleinere IBM -Computer, System/360 -Modelle 50 und unten und System/370 -Modelle 158 und darunter wurden Kanäle in der CPUs implementiert Mikrocode, und die CPU selbst wurde in einem von zwei Modi, entweder "CPU -Modus" oder "Kanalmodus", mit dem Kanalmodus "Diebstahl" -Zyklen aus dem CPU -Modus (IBM 2860, 2870 und 2880, und Amdahl -Kanäle dedizierte Hardware) betrieben. .
Einige der frühesten kommerziellen Nicht-IBM-Kanalsysteme waren auf der Univac 490, CDC 1604, Burroughs B5000, Univac 1107 und GE 635. Seitdem sind Channel -Controller ein Standardbestandteil der meisten Mainframe -Designs und primären Vorteils -Mainframes über kleinere, schnellere Computer und Netzwerkcomputer.
Die 1965 CDC 6600 Supercomputer Verwendet 10 logisch unabhängige Computer, die als Peripherieprozessoren (PPS) und 12 einfache E/A -Kanäle für diese Rolle bezeichnet werden. PPS waren eine modifizierte Version von CDCs erstem PC, dem 12-Bit CDC 160 und 160a. Das Betriebssystem wohnte zunächst in PP0 und wurde ausgeführt. Die Kanäle hatten keinen direkten Zugriff auf Speicher und konnten keine Interrupts verursachen; Software auf einem PP verwendete synchrone Anweisungen[b] Daten zwischen dem Kanal und dem A -Register oder dem PP -Speicher übertragen.
Viele später wurden die Kanäle als in der gleichen Box wie der CPU lebende On-Board-Prozessor implementiert, der im Allgemeinen als "Kanalprozessor" bezeichnet wird und normalerweise ein war RISC Prozessor, aber ein System/390 Mikroprozessor mit speziellem Mikrocode wie bei IBMs sein CMOs Mainframes.
Scsi Einführung 1981 als kostengünstiger Kanal, der dem IBM Block Multiplexer -Kanal entspricht[4] ist jetzt allgegenwärtig in Form von Faserkanal und Serial angeschlossen SCSI.
Moderne Computer haben möglicherweise Kanäle in Form von Bus -Mastering periphere Geräte wie z. PCI direkter Speicherzugriff (DMA) Geräte. Die Begründung für diese Geräte ist dieselbe wie für die ursprünglichen Kanalcontroller, nämlich Off-Lading-Transfer, unterbricht und Kontextumschaltung Aus der Haupt -CPU.
Kanalcontroller wurden so klein wie Single-Chip-Designs mit mehreren Kanälen, die in der verwendet werden Nächste Computer zum Beispiel.
Beschreibung
Die Referenzimplementierung von Channel I/O ist die des IBM -Systems/360 -Mainframes und seiner Nachfolger, aber ähnliche Implementierungen wurden von IBM auf anderen Zeilen, z. B., übernommen. 1410 und 7010, 7030und von anderen Mainframe -Anbietern wie z. Steuerungsdaten, Stier (General Electric/Honeywell) und Unisys.
Computersysteme, die Kanal -E/A verwenden, verfügen über spezielle Hardwarekomponenten, die alle Eingangs-/Ausgangsvorgänge in ihrer Gesamtheit unabhängig von den CPUs der Systeme verarbeiten. Die CPU eines Systems, das Kanal -E/A verwendet Maschinenanweisung in seinem Repertoire für Eingabe und Ausgabe; Diese Anweisung wird verwendet, um Eingangs-/Ausgabebefehle an die spezielle E/A -Hardware in Form von zu übergeben Kanalprogramme. Die E/A erfolgt anschließend ohne Intervention von der CPU, bis ein Ereignis, das eine Benachrichtigung über das Betriebssystem erfordert, erfolgt. Zu diesem Zeitpunkt signalisiert die E/A -Hardware einen Interrupt in die CPU.
Ein Kanal ist eine unabhängige Hardwarekomponente, die alle E/O -Set von Controllern oder Geräten koordiniert. Es ist trotz des Namens nicht nur ein Kommunikationsmedium; es ist ein programmierbar Geräte, das alle Details der E/A nach einer Liste von E/A -Operationen abwickelt (das Kanalprogramm).
Jeder Kanal unterstützt möglicherweise einen oder mehrere Controller und/oder Geräte, aber jedes Kanalprogramm kann nur an eines dieser verbundenen Geräte gerichtet sein. Ein Kanalprogramm enthält Listen von Befehlen für den Kanal selbst und an den Controller und das Gerät, auf das er gerichtet ist. Sobald das Betriebssystem eine vollständige Liste der Kanalbefehle erstellt hat, führt es eine einzige E/A -Maschinenanweisung aus, um das Kanalprogramm zu initiieren. Der Kanal übernimmt anschließend die Kontrolle über die E/A -Operationen, bis sie abgeschlossen sind.
Es ist möglich, sehr komplexe Kanalprogramme zu entwickeln, einschließlich der Prüfung von Daten und der bedingten Verzweigung innerhalb dieses Kanalprogramms. Diese Flexibilität befreit die CPU vom Overhead der Starten, Überwachung und Verwaltung einzelner E/A -Operationen. Die spezialisierte Kanalhardware wiederum ist der E/A gewidmet und kann sie effizienter ausführen als die CPU (und vollständig in Parallel zur CPU). Kanal I/O ist nicht anders als dem Direkter Speicherzugriff (DMA) von Mikrocomputern, nur komplexer und fortgeschrittener.
Auf großen Mainframe -Computersystemen ist CPUs nur eine von mehreren leistungsstarken Hardwarekomponenten, die parallel funktionieren. Spezielle Eingangs-/Ausgangscontroller (die genauen Namen von einem Hersteller zu einem anderen variieren) handhaben E/A ausschließlich. Es kann mehrere CPUs und mehrere E/A -Prozessoren geben. Die Gesamtarchitektur optimiert die Eingangs-/Ausgangsleistung, ohne die reine CPU -Leistung abzubauen. Da die meisten realen Anwendungen von Mainframe-Systemen stark I/O-intensive Geschäftsanwendungen sind, liefert diese Architektur das sehr hohe Maß an Durchsatz Das unterscheidet Mainframes von anderen Computertypen.
Im IBM ESA/390 Terminologie, ein Kanal ist eine parallele Datenverbindung im baumartigen oder hierarchisch organisierten E/A-Subsystem. In System/390 E/A -Käfigen stellen Kanäle entweder direkt an Geräte her, die im Käfig installiert sind (Kommunikationsadapter wie z. Escon, Ficon, Offener Systemadapter) oder sie rennen außerhalb des Käfigs unter dem Erhöhter Boden Als Kabel der Dicke eines Daumens und direkt an Kanalschnittstellen an größeren Geräten wie Bandsubsystemen herstellen. Direktzugriffsspeichergeräte (DASDS), Endkonzentratoren und andere ESA/390 -Systeme.
Arten von Kanälen
Kanäle unterscheiden sich in der Anzahl und Art der gleichzeitigen I/A -Operationen, die sie unterstützen. In IBM Terminologie a Multiplexer -Kanal Unterstützt eine Reihe von gleichzeitigen Schritten mit langsamer Geschwindigkeit, wobei jeweils jeweils ein Byte von einem Gerät übertragen wird. EIN Auswahlkanal Unterstützt einen Hochgeschwindigkeitsbetrieb und übertragen a Block von Daten nacheinander. EIN Block -Multiplexer Unterstützt eine Reihe logisch gleichzeitiger Kanalprogramme, jedoch nur eine Hochgeschwindigkeitsdatenübertragung gleichzeitig.
Kanäle können sich auch darin unterscheiden, wie sie periphere Geräte mit Speicherpuffern assoziieren. In der Univac -Terminologie kann ein Kanal entweder sein Interner Index (ISI), mit einem einzelnen Puffer und Gerät, das jeweils aktiv ist, oder externer Index (ESI), wobei das Gerät ausgewählt wird, welcher Puffer verwendet werden soll.
Kanalprogramm
A Kanalprogramm ist eine Abfolge von Kanalbefehlswörtern (CCWs), die vom E/A -Kanal -Subsystem im IBM -System/360 und den nachfolgenden Architekturen ausgeführt werden. Ein Kanalprogramm besteht aus einem oder mehreren Kanalbefehlswörtern. Das Betriebssystem signalisiert das E/A-Kanal-Subsystem, um das Kanalprogramm mit einem SSCH-Anweisungen (Start Sub-Channel) auszuführen. Der zentrale Prozessor ist dann frei, mit Nicht-I/O-Anweisungen fortzufahren, bis sie unterbrochen werden. Wenn die Kanalvorgänge abgeschlossen sind, unterbricht der Kanal den zentralen Prozessor mit einer E/A -Unterbrechung. In früheren Modellen der IBM -Mainframe -Linie war die Kanaleinheit eine identifizierbare Komponente für jeden Kanal. In modernen Mainframes werden die Kanäle mit einem unabhängigen RISC -Prozessor, dem Kanalprozessor, für alle Kanäle implementiert. IBM System/370 erweiterte Architektur[5] und seine Nachfolger ersetzten den früheren SIO (Starten Sie I/O.) und siof (Start I/O Schnelle Veröffentlichung) Maschinenanweisungen (System/360 und frühes System/370) mit dem SSCH (Starten Sie den Unterkanal) Anweisung (ESA/370 und Nachfolger).
Kanal -E/A bietet beträchtliche Volkswirtschaften in Eingang/Ausgabe. Zum Beispiel bei IBMs Linux auf ibm zdie Formatierung einer ganzen Spur von a Dasd Benötigt nur ein Kanalprogramm (und damit nur eine E/A -Anweisung), jedoch mehrere Kanalbefehlswörter (eine pro Block). Das Programm wird von der ausgeführt gewidmet E/A -Prozessor, während die Anwendung Der Prozessor (die CPU) ist für andere Arbeiten kostenlos.
Kanalbefehlswörter
A Kanalbefehlswort (CCW) ist ein Anweisung zu einem spezialisierten E/A -Kanalprozessor, der tatsächlich eine endliche Zustandsmaschine ist. Es wird verwendet, um eine E/A-Operation wie "Read", "Write" oder "Sense" auf einem kanal-angehenden Gerät zu initiieren. Auf Systemarchitekturen, die Kanal -E/A implementieren, werden normalerweise alle Geräte durch Kanäle verbunden, usw. alle E/A erfordert die Verwendung von CCWs.
CCWs sind in organisiert in Kanalprogramme durch das Betriebssystem und I/O -Unterroutine, ein Versorgungsprogramm oder durch eigenständige Software (wie Test- und Diagnoseprogramme). In solchen Kanalprogrammen ist eine begrenzte "Verzweigungs" -Funktion, daher eine dynamisch programmierbare Fähigkeit, mithilfe des Kanalflags "Statusmodifikator" und des CCW "Transfer-in-Channel" verfügbar.
Verkettung
IBM CCWs sind angekettet Um das Kanalprogramm zu bilden. Bits im CCW geben an, dass der folgende Speicherort im Speicher ein CCW enthält, das Teil desselben Kanalprogramms ist. Das Kanalprogramm führt normalerweise sequentielle CCWs aus, bis eine Ausnahme auftritt, ein CCW (Transfer-in-Channel) wird ausgeführt oder ein CCW ohne Anketten ausgeführt. Befehlskettung teilt dem Kanal mit, dass der nächste CCW einen neuen Befehl enthält. Datenverkettung Zeigt an, dass die nächste CCW die Adresse zusätzlicher Daten für denselben Befehl enthält, sodass beispielsweise Teile eines Datensatzes aus mehreren Datenbereichen geschrieben oder in Speicherbereiche gelesen werden können (sammeln Sie das Schreiben und Verstöße).[6]
Selbstmodifizierende Kanalprogramme
Kanalprogramme können ihren eigenen Betrieb während der Ausführung basierend auf Daten gelesen. Zum Beispiel wird die Selbstveränderung in Betriebssystem ausgiebig in OS/360 verwendet Isam.[7]
Beispiel für Kanalprogramm
Das folgende Beispiel[8] liest einen von a identifizierten Festplattendatensatz Taste aufgezeichnet. Der Spur, der den Datensatz und den gewünschten Wert des Schlüssels enthält, ist bekannt. Die Gerätesteuereinheit sucht die Spur, um den angeforderten Datensatz zu finden. In diesem Beispiel <> Geben Sie an, dass das Kanalprogramm die Speicheradresse des angegebenen Feldes enthält.
Such <Zylinder/Kopfnummer> Suchschlüssel gleich <schlüsselwert> TIC *-8 Zurück zu suchen, wenn nicht gleich lesedaten <puffer>
Der TIC (Übertragung im Kanal) veranlasst das Kanalprogramm, sich in den Suchbefehl zu verzweigen, bis ein Datensatz mit einer passenden Taste (oder dem Ende der Spur) aufgetreten ist. Wenn ein Datensatz mit einem passenden Schlüssel gefunden wird, enthält der DASD -Controller den Statusmodifikator im Kanalstatus, wodurch der Kanal den TIC -CCW überspringt. Daher wird das Kanalprogramm nicht verzweigt und der Kanal wird den Befehl read ausgeführt.
Das obige Beispiel ist richtig für entsperrt Datensätze (ein Datensatz pro Block). Zum verstopft Datensätze (mehr als ein Datensatz pro Block), die Taste aufgezeichnet Muss mit dem höchsten Schlüssel innerhalb dieses Blocks übereinstimmen (und die Datensätze müssen in der Schlüsselsequenz sein), und das folgende Kanalprogramm würde verwendet:
Suchen Sie <Zylinder/Kopfnummer> Suchschlüssel hoch oder gleich <schlüsselwert> TIC *-8 Zurück, um zu suchen, wenn nicht hoch oder gleiche Lesedaten <Buffer>
Wenn der Datensatz in Tracks zugeteilt wird und das Ende des Tracks ohne den angeforderten Datensatz erreicht wird, wird das Kanalprogramm terminiert und gibt eine Statusanzeige "No Record Found" zurück. Wenn der Datensatz in Zylindern zugewiesen wird und das Ende des Zylinders erreicht wird, wird der angeforderte Datensatz erreicht, dass das Kanalprogramm endet und eine "No Record gefundene" Statusanzeige zurückgibt. In einigen Fällen hat die Systemsoftware die Möglichkeit, die Spur- oder Zylindernummer zu aktualisieren und neu streichen Der E/A -Betrieb, ohne das Anwendungsprogramm zu unterbrechen.
Kanalprogramme in virtuellen Speichersystemen
Auf den meisten Systemkanälen funktionieren mit Verwendung echte (oder physische) Adressen, während die Channel -Programme mithilfe von Verwendung erstellt werden Virtuelle Adressen.[9] Das Betriebssystem ist verantwortlich für Übersetzung Diese Kanalprogramme vor der Ausführung und für diesen bestimmten Zweck die Eingangs-/Ausgaber Supervisor (IOS) hat ein besonderes Schnelle Lösung Funktion, die in den OS-Supervisor nur für diese "Korrekturen" entworfen wurde, die relativ kurz sind (d. H. Signifikant kürzer als "Wand-Clock-Zeit"). Seiten, die Daten enthalten, die von der E/A -Operation verwendet werden sollen Seite behoben. Das Kanalprogramm wird kopiert und alle virtuellen Adressen werden durch echte Adressen ersetzt, bevor der E/A -Betrieb gestartet wird. Nach Abschluss der Operation sind die Seiten nicht identifiziert.
Da die Fixierung und Unfixierung von Seiten ein CPU-teurer-Prozess ist, wird manchmal eine Langzeitfestigkeit von Seiten verwendet, um die CPU-Kosten zu senken. Hier ist der virtuelle Speicher für die Lebensdauer der Anwendung Seite fixiert, anstatt jede E/A-Operation zu reparieren und zu befreien. Ein Beispiel für ein Programm, das eine langfristige Seitenreparatur verwenden kann, ist DB2.
Eine Alternative zur Langzeit-Seitenfixierung wird die gesamte Anwendung, einschließlich aller Datenpuffer, auf a verschieben bevorzugt Bereich der Hauptspeicherung. Dies wird durch ein spezielles Sysevent in MVS/370 über Z/OS-Betriebssysteme erreicht, wobei die Anwendung zunächst ausgetauscht wird.aus von wo immer es sein mag, vermutlich von a nicht bevorzugt Bereich, um externen Speicher zu tauschen und zu pagieren, und ist zweitens ausgetauscht.in zu einem bevorzugt Bereich (Sysevent Transwap). Danach kann die Anwendung gekennzeichnet sein nicht verdrängbar von einem anderen besonderen Sysevent (Sysevent dontswap). Wenn eine solche Anwendung normalerweise oder ungewöhnlich endet, gibt das Betriebssystem implizit ein weiteres spezielles Sysevent im Namen der Anwendung aus, wenn es dies noch nicht getan hat (Sysevent Okswap).
Booten mit Kanal I/O
Eben Bootstrapping des Systems oder Erstprogrammlast (IPL) in der IBM -Nomenklatur wird von Kanälen durchgeführt, obwohl der Prozess von der CPU teilweise durch eine implizite Start -E/A (SIO) -Anweisung, ein implizites Kanaladresse (CAW) an Ort 0 und einen implizierten Kanalbefehl simuliert wird Word (CCW) mit einem Opcode von Lese -IPL, ebenfalls an Ort 0. Befehlsketten wird angenommen, so dass der implizite CCW an Ort 0 bis zur Fortsetzung des Kanalprogramms an den Standorten 8 und 16 fällt, und möglicherweise anderswo sollte einer von diesen sollten CCWs sind eine Übertragung in Kanal (TIC).[10]
Zum Laden eines Systems liest das implizite Lese-IPL CCW den ersten Block des ausgewählten IPL-Geräts in den 24-Byte-Datenbereich am Standort 0, der Kanal setzt sich mit dem zweiten und dritten Doppelwörter fort, das CCWs sind, und dieses Kanalprogramm lädt lädt Der erste Teil der Systemladesoftware an anderer Stelle im Hauptspeicher. Das erste Doppelwort enthält einen PSW, der, wenn er nach Abschluss des IPL abgerufen wird, die CPU den IPL -Text (Bootstrap Loader) ausführt Der Kern des Betriebssystems. Der Kern führt oder initiiert eine notwendige Initialisierung und beginnt dann mit normalen OS -Operationen.
Dieses IPL-Konzept ist Gerätsunabhängig. Es ist in der Lage, von einem Kartendeck, von einem Magnetband oder von a Direktzugriffsspeichergerät, (Dasd), z. B. Scheibe, Trommel. Der Befehl read iPL (x'02 '), der von der CPU simuliert wird Spezielle Read-IP-Befehl auf DASD.
DASD -Controller akzeptieren den Befehl x'02 ', versuchen Es waren ein Befehl Lesedaten (x'06 '). Ohne dieses spezielle DASD-Controller-Verhalten wäre das Gerätsunabhängige IPL nicht möglich. Auf einem DASD ist der IPL -Text auf Zylinder x'0000 ', Track X'0000' und Record X'01 '(24 Bytes) und Zylinder x'0000', Track X'0000 'und Record X' enthalten. 02 '(ziemlich groß, sicherlich etwas mehr als 3.000 Bytes). Das Volumenetikett ist immer auf Zylinder x'0000 ', Track X'0000' und Block X'03 '(80 Bytes) enthalten. Das Volumenetikett zeigt immer auf den VTOC mit einem Zeiger der Form HHHH (dh der VTOC muss sich innerhalb der ersten 65.536 Tracks befinden). Die VTOCs Format 4 DSCB Definiert das Ausmaß (Größe) des VTOC, sodass das Volumenetikett nur einen Zeiger auf die erste Spur im Ausmaß des VTOC benötigt, und als Format 4 DSCB, das den VTOC beschreibt, ist immer das allererste DSCB im VTOC, HHHH zeigt auch auf das Format 4 DSCB.
Wenn IPL von einem Gerät, das nicht mit IPL -Text initialisiert wurde, versucht wird, das System einfach in einen Wartezustand zu finden. Das Initialisierungsprogramm von DASD (Direct Access Storage Device) IBCDASDI oder die DASD -Initialisierungsanwendung Ickdsf platziert einen Wartezustand PSW und eine Dummy -CCW welche diese Programme formatieren die VTOC und andere Festplatteninitialisierungsfunktionen ausführen.
Siehe auch
Verweise
- ^ "IBM 3705 Kommunikationscontroller" (PDF). Datapro -Berichte über Datenkommunikation. McGraw-Hili. April 1990 [Mai 1987]. Abgerufen 3. April, 2022.
Cycle-Diebstahl ist eine Form von Interrupt, bei der die Komponente, die Zugriff auf den Speicher benötigt, oder auf den Prozessor für einen gesamten Maschinenzyklus übernimmt.
- ^ "IBM Archives: 709 Datenverarbeitungssystem". 03.ibm.com. Abgerufen 2014-01-22.
- ^ "IBM Archives: 7090 Datenverarbeitungssystem (Fortsetzung)". 03.ibm.com. 1958-12-30. Abgerufen 2014-01-22.
- ^ SCSI -Forum. Technologieforen. Oktober 1986. p. 202.
* Ähnlichkeiten zu Mainframe, * System 360 Block Multiplexed Channel, * Trend zu Mikrocomputern
- ^ IBM System/370 erweiterte Architekturprinzipien des Betriebs, SA22-7085-0
- ^ IBM Corporation (1968). Schülertext: Einführung in das IBM System/360 Architektur (PDF). IBM Corporation. p. 22.
- ^ Attanasio, C.R.; Markstein, P.W.; Phillips, R.J. (1976). "Durchdringung in ein Betriebssystem: Eine Studie zur Integrität von VM/370". IBM Systems Journal. 15 (1): 102–116. doi:10.1147/sj.151.0102.
- ^ IBM Corporation (1969). IBM System/360 Komponentenbeschreibungen: 2314 Direktzugriffsbehörde und 2844 Auxiliary Storage Control (PDF). IBM Corporation. p. 50.2. Archiviert von das Original (PDF) Am 2011-03-22.
- ^ IBM Corporation (1978). OS/VS2 MVS Overview (PDF). S. 8–12. Archiviert von das Original (PDF) Am 2011-03-16.
- ^ Siehe System/370 Betriebsprinzipien, GA22–7000–4, S. 54—55, Erstprogrammbelastung; System/370 Extended Architecture ist ziemlich ähnlich, obwohl XA ein "implizites" Start -Subchannel (SSCH) anstelle eines "implizierten" Start -I/A verwendet.
Anmerkungen
- ^ a b Etwas mikrokodiert Kanäle wurden vom Zyklus -Diebstahl ausgeführt[1] und nicht mit völlig unabhängiger Hardware.
- ^ Verwenden expliziter Tests des Kanalstatus und der Anweisungen
- 70 Ian
- Eingabe zu A aus Kanal D.
- 71 iam
- Eingabe (a) Wörter zu M aus Kanal D.
- 72 Oan
- Ausgabe von A bis Kanal D.
- 73 OAM
- Ausgabe (a) Wörter von m zu Kanal D.
- 74 ACN
- Kanal aktivieren d
- 75 DCN
- Kanal trennen d
- 76 Fan
- Funktion (a) auf Kanal D.
- 77 FNC
- Funktion m auf Kanal D.