Betriebssysteme (5) - Gerätesteuerung : Controller und Gerätetreiber

in #de-stem4 years ago

In den letzten Beiträgen haben wir uns mit wichtigen Komponenten vertraut gemacht, aus denen die Hardware eines Computers besteht: Prozessor, Cache, Hauptspeicher, Sekundär- und Tertiärspeicher. Nun wollen wir sehen, wie die Komponenten eines Computers zusammenwirken, welche Hilfe die Hardware dabei leistet und welche Aufgaben dabei das Betriebssystem übernimmt.
Eine wichtige Aufgabe des Betriebssystems ist die Kommunikation mit Geräten.

Der Controller

In dem vorletzten Artikel wurde beschrieben, wie CPU und Hauptspeicher über Adress- und Datenbus miteinander kommunizieren. Auch die Ein-/Ausgabegeräte sind mit Prozessor und Hauptspeicher über einen Bus verbunden. Ein Bus ist grob gesagt ein Bündel von Leitungen zusammen mit einem Protokoll, das genau festlegt, welche Nachrichten über den Bus geschickt werden können und wie diese Nachrichten durch Signale auf den Leitungen dargestellt werden.
Ein Bus verbindet nicht nur zwei Geräte miteinander, sondern viele Geräte, die alle über den Bus miteinander kommunizieren können. Zu jedem Zeitpunkt kann aber nur eine Nachricht über den Bus verschickt werden; welches Gerät den Bus zuerst "ergreift", ist an der Reihe. Die folgende Grafik zeigt exemplarisch einen solchen Bus.

bs.png

Die Geräte sind nicht direkt an den Bus angeschlossen, sondern über einen sogenannten Controller. Das hat folgenden Grund: Wenn die CPU alle Geräte selbst steuern müsste, wäre sie damit so belastet, dass für die eigentliche Programmausführung zu wenig Zeit bliebe. Aus diesem Grund gibt es für jeden Gerätetyp einen Controller, der die Steuerung des Geräts übernimmt. Die Controller und die CPU arbeiten parallel, aber nur einer von ihnen kann zu einem gegebenen Zeitpunkt den Bus benutzen. Ein Controller ist ein Stück elektronische Hardware.
So kommt zum Beispiel eine Maus mit einem sehr einfachen Controller aus, während der Controller einer HDD schon recht kompliziert ist. Der Plattencontroller steuert zum Beispiel die Armbewegung, führt Fehlererkennung durch und kann einen schadhaften Sektor der Platte dem Betriebssystem melden.

Der Gerätetreiber

Das Betriebssystem hat die Aufgabe, die Geräte zu steuern; dazu kommuniziert es mit den Controllern. Weil sich die Controller sehr voneinander unterscheiden, ist für jeden Controller ein eigener Teil des Betriebssystems zuständig: ein Gerätetreiber; Als Teil des Betriebssystems ist der Gerätetreiber ein Stück Software.

bs2.png

Der Gerätetreiber kommuniziert nur mit dem Controller, nicht direkt mit dem Gerät. Zu diesem Zweck besitzt der Controller mehrere Register, darunter die folgenden:

  • Datenausgangsregister (data-out); hierhin schreibt der Treiber Daten, die für den Controller bestimmt sind

  • Dateneingangsregister (data-in), in das der Controller Daten schreibt, die für den Gerätetreiber bestimmt sind

  • Statusregister (status); hier kann der Treiber den Zustand des Geräts abfragen, ob es zum Beispiel noch beschäftigt ist oder ob Daten aus dem Dateneingangsregister abgeholt werden können

  • Kontrollregister (control); hier hinterlegt der Treiber Befehle an den Controller, zum Beispiel einen Lesebefehl

Eine andere Technik für die Kommunikation zwischen der CPU und Controllern ist die speicherabgebildete Ein-/Ausgabe (memory-mapped I/O) genannt. Dabei werden die Register des Controllers als Teil des Hauptspeichers realisiert, d. h. ein Teil des Hauptspeicher wird für die Speicherung von Inhalten der Register von Controller reserviert. Der auf der CPU laufende Gerätetreiber kann dann die sehr viel schnelleren Prozessorbefehle für den Datenaustausch mit den Controllerregistern verwenden;

Die Anwendungsprogramme und andere Teile des Betriebssystems können nur über den Gerätetreiber auf das Gerät zugreifen. Wie sich Controller und Gerätetreiber die Arbeit teilen, ist von Fall zu Fall verschieden. Generell ist die Implementierung von Funktionen in Hardware effizienter als eine Softwarelösung, und sie dient der Abstraktion, weil die Details in der Hardware verschwinden. Eine Implementierung in Software macht dagegen oft weniger Arbeit und lässt sich leichter ändern.
Gerätetreiber, Controller und das Gerät bilden konzeptuell eine Einheit, die als virtuelles Gerät (grauer Bereich in Abbildung 2) bezeichnet wird.

Quelle
Zlatanov, Nikola. Computer Busses, Ports and Peripheral Devices. CES, Las Vegas. 2016. page 3

Sort:  


This post has been voted on by the SteemSTEM curation team and voting trail. It is elligible for support from @curie and @minnowbooster.

If you appreciate the work we are doing, then consider supporting our witness @stem.witness. Additional witness support to the curie witness would be appreciated as well.

For additional information please join us on the SteemSTEM discord and to get to know the rest of the community!

Please consider using the steemstem.io app and/or including @steemstem in the list of beneficiaries of this post. This could yield a stronger support from SteemSTEM.

Du hast ein Upvote von unserem Kuration – Support Account erhalten.

Dieser wird nicht von einem Bot erteilt. Wir lesen die Beiträge. (#deutsch) und dann entscheidet der Kurator eigenverantwortlich ob und in welcher Stärke gevotet wird. Unser Upvote zieht ein Curation Trail von vielen Followern hinter sich her!!!

Wir, die Mitglieder des German Steem Bootcamps möchten "DIE DEUTSCHE COMMUNITY" stärken und laden Dich ein Mitglied zu werden.

Discord Server an https://discord.gg/Uee9wDB

Congratulations @ozelot47! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You published more than 40 posts. Your next target is to reach 50 posts.

You can view your badges on your Steem Board and compare to others on the Steem Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

To support your work, I also upvoted your post!

You can upvote this notification to help all Steem users. Learn how here!

Coin Marketplace

STEEM 0.26
TRX 0.11
JST 0.033
BTC 64359.90
ETH 3105.50
USDT 1.00
SBD 3.87