Betriebssystem - E / A-Hardware
Eine der wichtigsten Aufgaben eines Betriebssystems ist die Verwaltung verschiedener E / A-Geräte, einschließlich Maus, Tastaturen, Touchpad, Festplatten, Anzeigeadapter, USB-Geräte, Bitmap-Bildschirm, LED, Analog-Digital-Wandler, Ein / Aus-Schalter, Netzwerkverbindungen, Audio-E / A, Drucker usw.
Ein E / A-System ist erforderlich, um eine Anwendungs-E / A-Anforderung entgegenzunehmen und an das physische Gerät zu senden. Nehmen Sie dann die vom Gerät zurückgegebene Antwort entgegen und senden Sie sie an die Anwendung. E / A-Geräte können in zwei Kategorien unterteilt werden:
Block devices- Ein Blockgerät ist eines, mit dem der Treiber kommuniziert, indem er ganze Datenblöcke sendet. Zum Beispiel Festplatten, USB-Kameras, Disk-On-Key usw.
Character devices- Ein Zeichengerät ist ein Gerät, mit dem der Treiber durch Senden und Empfangen einzelner Zeichen (Bytes, Oktette) kommuniziert. Zum Beispiel serielle Ports, parallele Ports, Soundkarten usw.
Gerätesteuerungen
Gerätetreiber sind Softwaremodule, die an ein Betriebssystem angeschlossen werden können, um ein bestimmtes Gerät zu handhaben. Das Betriebssystem hilft den Gerätetreibern bei der Handhabung aller E / A-Geräte.
Der Gerätecontroller funktioniert wie eine Schnittstelle zwischen einem Gerät und einem Gerätetreiber. E / A-Einheiten (Tastatur, Maus, Drucker usw.) bestehen normalerweise aus einer mechanischen Komponente und einer elektronischen Komponente, wobei die elektronische Komponente als Gerätesteuerung bezeichnet wird.
Für jedes Gerät gibt es immer einen Gerätecontroller und einen Gerätetreiber, um mit den Betriebssystemen zu kommunizieren. Ein Gerätecontroller kann möglicherweise mehrere Geräte verarbeiten. Als Schnittstelle besteht die Hauptaufgabe darin, den seriellen Bitstrom in einen Byteblock umzuwandeln und bei Bedarf eine Fehlerkorrektur durchzuführen.
Jedes an den Computer angeschlossene Gerät ist über einen Stecker und eine Buchse verbunden, und die Buchse ist mit einer Gerätesteuerung verbunden. Im Folgenden finden Sie ein Modell zum Anschließen von CPU, Speicher, Controllern und E / A-Geräten, bei dem CPU und Gerätesteuerungen einen gemeinsamen Bus für die Kommunikation verwenden.
Synchrone vs asynchrone E / A.
Synchronous I/O - In diesem Schema wartet die CPU-Ausführung, während die E / A fortgesetzt wird
Asynchronous I/O - Die E / A wird gleichzeitig mit der CPU-Ausführung fortgesetzt
Kommunikation mit E / A-Geräten
Die CPU muss über eine Möglichkeit verfügen, Informationen an und von einem E / A-Gerät weiterzuleiten. Für die Kommunikation mit der CPU und dem Gerät stehen drei Ansätze zur Verfügung.
- Spezielle Anweisung I / O.
- Speicherzugeordnete E / A.
- Direkter Speicherzugriff (DMA)
Spezielle Anweisung I / O.
Hierbei werden CPU-Anweisungen verwendet, die speziell für die Steuerung von E / A-Geräten erstellt wurden. Mit diesen Anweisungen können normalerweise Daten an ein E / A-Gerät gesendet oder von einem E / A-Gerät gelesen werden.
Speicherzugeordnete E / A.
Bei Verwendung von speicherabgebildeten E / A wird der gleiche Adressraum von Speicher- und E / A-Geräten gemeinsam genutzt. Das Gerät ist direkt mit bestimmten Hauptspeicherplätzen verbunden, sodass das E / A-Gerät Datenblöcke zum / vom Speicher übertragen kann, ohne die CPU zu durchlaufen.
Während der Verwendung von speicherabgebildeten E / A weist das Betriebssystem Puffer im Speicher zu und weist das E / A-Gerät an, diesen Puffer zum Senden von Daten an die CPU zu verwenden. Das E / A-Gerät arbeitet asynchron mit der CPU und unterbricht die CPU, wenn es fertig ist.
Der Vorteil dieser Methode besteht darin, dass jeder Befehl, der auf den Speicher zugreifen kann, zum Manipulieren eines E / A-Geräts verwendet werden kann. Speicherzugeordnete E / A werden für die meisten Hochgeschwindigkeits-E / A-Geräte wie Festplatten und Kommunikationsschnittstellen verwendet.
Direkter Speicherzugriff (DMA)
Langsame Geräte wie Tastaturen erzeugen nach der Übertragung jedes Bytes einen Interrupt zur Haupt-CPU. Wenn ein schnelles Gerät wie eine Festplatte für jedes Byte einen Interrupt generiert, verbringt das Betriebssystem die meiste Zeit damit, diese Interrupts zu verarbeiten. Ein typischer Computer verwendet daher DMA-Hardware (Direct Memory Access), um diesen Overhead zu reduzieren.
Direkter Speicherzugriff (DMA) bedeutet, dass die CPU dem E / A-Modul die Berechtigung erteilt, ohne Beteiligung aus dem Speicher zu lesen oder in diesen zu schreiben. Das DMA-Modul selbst steuert den Datenaustausch zwischen dem Hauptspeicher und dem E / A-Gerät. Die CPU ist nur zu Beginn und am Ende der Übertragung beteiligt und wird erst unterbrochen, nachdem der gesamte Block übertragen wurde.
Für den direkten Speicherzugriff ist eine spezielle Hardware namens DMA-Controller (DMAC) erforderlich, die die Datenübertragungen verwaltet und den Zugriff auf den Systembus vermittelt. Die Steuerungen sind mit Quell- und Zielzeigern (wo die Daten gelesen / geschrieben werden sollen), Zählern zum Verfolgen der Anzahl der übertragenen Bytes und Einstellungen programmiert, die E / A- und Speichertypen, Interrupts und Zustände für die CPU-Zyklen umfassen.
Das Betriebssystem verwendet die DMA-Hardware wie folgt:
Schritt | Beschreibung |
---|---|
1 | Der Gerätetreiber wird angewiesen, Datenträgerdaten an eine Pufferadresse X zu übertragen. |
2 | Der Gerätetreiber weist den Festplattencontroller an, Daten in den Puffer zu übertragen. |
3 | Der Festplattencontroller startet die DMA-Übertragung. |
4 | Der Festplattencontroller sendet jedes Byte an den DMA-Controller. |
5 | Der DMA-Controller überträgt Bytes in den Puffer, erhöht die Speicheradresse und verringert den Zähler C, bis C Null wird. |
6 | Wenn C Null wird, unterbricht DMA die CPU, um den Abschluss der Übertragung zu signalisieren. |
Polling vs Interrupts I / O.
Ein Computer muss in der Lage sein, das Eintreffen jeglicher Art von Eingabe zu erkennen. Dies kann auf zwei Arten geschehen:polling und interrupts. Beide Techniken ermöglichen es dem Prozessor, Ereignisse zu verarbeiten, die jederzeit auftreten können und die nicht mit dem aktuell ausgeführten Prozess zusammenhängen.
Polling I / O.
Polling ist die einfachste Möglichkeit für ein E / A-Gerät, mit dem Prozessor zu kommunizieren. Der Vorgang der regelmäßigen Überprüfung des Status des Geräts, um festzustellen, ob es Zeit für den nächsten E / A-Vorgang ist, wird als Abfrage bezeichnet. Das E / A-Gerät legt die Informationen einfach in einem Statusregister ab, und der Prozessor muss kommen und die Informationen abrufen.
In den meisten Fällen benötigen Geräte keine Aufmerksamkeit, und wenn dies der Fall ist, muss gewartet werden, bis sie das nächste Mal vom Abrufprogramm abgefragt werden. Dies ist eine ineffiziente Methode, und ein Großteil der Prozessorzeit wird für unnötige Abfragen verschwendet.
Vergleichen Sie diese Methode mit einem Lehrer, der jeden Schüler einer Klasse nacheinander fragt, ob er Hilfe benötigt. Offensichtlich wäre die effizientere Methode für einen Schüler, den Lehrer zu informieren, wann immer er Hilfe benötigt.
Unterbricht die E / A.
Ein alternatives Schema für den Umgang mit E / A ist die Interrupt-gesteuerte Methode. Ein Interrupt ist ein Signal an den Mikroprozessor von einem Gerät, das Aufmerksamkeit erfordert.
Eine Gerätesteuerung legt ein Interrupt-Signal auf den Bus, wenn sie die Aufmerksamkeit der CPU benötigt, wenn die CPU einen Interrupt empfängt. Sie speichert ihren aktuellen Status und ruft den entsprechenden Interrupt-Handler unter Verwendung des Interrupt-Vektors auf (Adressen von Betriebssystemroutinen zur Behandlung verschiedener Ereignisse). Wenn das unterbrechende Gerät behandelt wurde, setzt die CPU ihre ursprüngliche Aufgabe fort, als wäre sie nie unterbrochen worden.