Betriebssystem - E / A-Software
E / A-Software ist häufig in den folgenden Ebenen organisiert:
User Level Libraries- Dies bietet eine einfache Schnittstelle zum Anwenderprogramm zur Durchführung von Ein- und Ausgaben. Zum Beispiel,stdio ist eine Bibliothek, die von den Programmiersprachen C und C ++ bereitgestellt wird.
Kernel Level Modules - Dadurch können Gerätetreiber mit dem Gerätesteuerer und geräteunabhängigen E / A-Modulen interagieren, die von den Gerätetreibern verwendet werden.
Hardware - Diese Schicht enthält die eigentliche Hardware und den Hardware-Controller, die mit den Gerätetreibern interagieren und die Hardware lebendig machen.
Ein Schlüsselkonzept beim Entwurf von E / A-Software besteht darin, dass sie geräteunabhängig sein sollte, wenn es möglich sein sollte, Programme zu schreiben, die auf jedes E / A-Gerät zugreifen können, ohne das Gerät im Voraus angeben zu müssen. Beispielsweise sollte ein Programm, das eine Datei als Eingabe liest, eine Datei auf einer Diskette, einer Festplatte oder einer CD-ROM lesen können, ohne das Programm für jedes Gerät ändern zu müssen.
Gerätetreiber
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. Gerätetreiber kapseln geräteabhängigen Code und implementieren eine Standardschnittstelle so, dass Code gerätespezifische Registerlese- / Schreibvorgänge enthält. Der Gerätetreiber wird in der Regel vom Gerätehersteller geschrieben und zusammen mit dem Gerät auf einer CD-ROM geliefert.
Ein Gerätetreiber führt die folgenden Jobs aus:
- Um Anfragen von der oben genannten geräteunabhängigen Software zu akzeptieren.
- Interagieren Sie mit der Gerätesteuerung, um E / A zu erfassen und zu geben und die erforderliche Fehlerbehandlung durchzuführen
- Stellen Sie sicher, dass die Anforderung erfolgreich ausgeführt wird
Ein Gerätetreiber verarbeitet eine Anforderung wie folgt: Angenommen, eine Anforderung kommt zum Lesen eines Blocks N. Wenn der Treiber zum Zeitpunkt des Eingangs einer Anforderung inaktiv ist, beginnt er sofort mit der Ausführung der Anforderung. Wenn der Treiber bereits mit einer anderen Anforderung beschäftigt ist, wird die neue Anforderung in die Warteschlange ausstehender Anforderungen gestellt.
Handler unterbrechen
Ein Interrupt-Handler, auch als Interrupt-Serviceroutine oder ISR bekannt, ist eine Software oder genauer gesagt eine Rückruffunktion in einem Betriebssystem oder insbesondere in einem Gerätetreiber, dessen Ausführung durch den Empfang eines Interrupts ausgelöst wird.
Wenn der Interrupt auftritt, unternimmt die Interrupt-Prozedur alles, um den Interrupt zu behandeln, aktualisiert Datenstrukturen und aktiviert den Prozess, der auf einen Interrupt gewartet hat.
Der Interrupt-Mechanismus akzeptiert eine Adresse ─ eine Nummer, die eine bestimmte Interrupt-Behandlungsroutine / -funktion aus einem kleinen Satz auswählt. In den meisten Architekturen ist diese Adresse ein Offset, der in einer Tabelle gespeichert ist, die als Interrupt-Vektortabelle bezeichnet wird. Dieser Vektor enthält die Speicheradressen spezialisierter Interrupt-Handler.
Geräteunabhängige E / A-Software
Die Grundfunktion der geräteunabhängigen Software besteht darin, die allen Geräten gemeinsamen E / A-Funktionen auszuführen und eine einheitliche Schnittstelle zur Software auf Benutzerebene bereitzustellen. Es ist zwar schwierig, vollständig geräteunabhängige Software zu schreiben, aber wir können einige Module schreiben, die allen Geräten gemeinsam sind. Es folgt eine Liste der Funktionen der geräteunabhängigen E / A-Software -
- Einheitliche Schnittstelle für Gerätetreiber
- Gerätenamen - Mnemonische Namen, die den Haupt- und Nebengerätenummern zugeordnet sind
- Geräteschutz
- Bereitstellung einer geräteunabhängigen Blockgröße
- Pufferung, da Daten, die von einem Gerät kommen, nicht am endgültigen Ziel gespeichert werden können.
- Speicherzuordnung auf Blockgeräten
- Zuweisung und Freigabe dedizierter Geräte
- Fehler melden
User-Space-E / A-Software
Dies sind die Bibliotheken, die eine umfangreichere und vereinfachte Schnittstelle bieten, um auf die Funktionalität des Kernels zuzugreifen oder letztendlich mit den Gerätetreibern interaktiv zu sein. Der größte Teil der E / A-Software auf Benutzerebene besteht aus Bibliotheksprozeduren mit einigen Ausnahmen wie dem Spooling-System, mit dem dedizierte E / A-Geräte in einem Multiprogrammiersystem behandelt werden können.
E / A-Bibliotheken (z. B. stdio) befinden sich im Benutzerbereich, um eine Schnittstelle zur betriebsunabhängigen E / A-Software des Betriebssystems bereitzustellen. Zum Beispiel sind putchar (), getchar (), printf () und scanf () Beispiele für das in der C-Programmierung verfügbare E / A-Bibliotheks-Standard auf Benutzerebene.
Kernel-E / A-Subsystem
Das Kernel-E / A-Subsystem ist dafür verantwortlich, viele Dienste im Zusammenhang mit E / A bereitzustellen. Im Folgenden sind einige der angebotenen Dienstleistungen aufgeführt.
Scheduling- Der Kernel plant eine Reihe von E / A-Anforderungen, um eine gute Reihenfolge für die Ausführung festzulegen. Wenn eine Anwendung einen blockierenden E / A-Systemaufruf ausgibt, wird die Anforderung in die Warteschlange für dieses Gerät gestellt. Der Kernel-E / A-Scheduler ordnet die Reihenfolge der Warteschlange neu, um die Gesamtsystemeffizienz und die durchschnittliche Antwortzeit der Anwendungen zu verbessern.
Buffering - Das Kernel-E / A-Subsystem verwaltet einen Speicherbereich, der als bekannt ist bufferHier werden Daten gespeichert, während sie zwischen zwei Geräten oder zwischen einem Gerät mit einer Anwendungsoperation übertragen werden. Das Puffern wird durchgeführt, um eine Geschwindigkeitsinkongruenz zwischen dem Hersteller und dem Verbraucher eines Datenstroms zu bewältigen oder um sich zwischen Geräten anzupassen, die unterschiedliche Datenübertragungsgrößen haben.
Caching- Der Kernel verwaltet den Cache-Speicher, einen Bereich des schnellen Speichers, in dem Kopien von Daten gespeichert sind. Der Zugriff auf die zwischengespeicherte Kopie ist effizienter als der Zugriff auf das Original.
Spooling and Device Reservation- Ein Spool ist ein Puffer, der die Ausgabe für ein Gerät wie einen Drucker enthält, das keine verschachtelten Datenströme akzeptieren kann. Das Spooling-System kopiert die in die Warteschlange gestellten Spooldateien einzeln auf den Drucker. In einigen Betriebssystemen wird das Spoolen von einem Systemdämonprozess verwaltet. In anderen Betriebssystemen wird es von einem In-Kernel-Thread verarbeitet.
Error Handling - Ein Betriebssystem, das geschützten Speicher verwendet, kann sich vor vielen Arten von Hardware- und Anwendungsfehlern schützen.