Jedes Stück Hardware, das wir installieren benötigt bestimmte Parameter, damit das Betriebssystem darauf zugreifen kann. Diese Parameter sind auf die verschiedensten Art und Weisen einstellbar, sowohl aus der Sicht des Betriebssystem, als auch aus der Sicht der Hardware selbst. Moderne Erweiterungskarten, die den PCI-Bus nutzen, kümmern sich selbst um die Einstellungen dieser Parameter, ältere Erweiterungskarten für den ISA-Bus müssen von Hand konfiguriert werden.
Damit unter Linux Hardwareerweiterungen korrekt installiert werden können, ist es notwendig etwas Basiswissen über die grundlegende Funktion solcher Karten zu besitzen. Diese Grundlageninformation soll hier auf die Schnelle vermittelt werden. Im Rahmen dieser Darstellung ist es natürlich nicht möglich, einen umfassenden Kurs über die verschiedenen Mechanismen der Erweiterungskarten abzuhalten, es soll versucht werden, sich auf die wesentlichen Grundlagen zu beschränken. Diese Darstellung bezieht sich auf die Architektur von IBM-kompatiblen Rechnern, die heute den sogenannten Industriestandard bestimmen. Andere Architekturen unterscheiden sich in Kleinigkeiten von den hier dargestellten Mechanismen.
Der wichtigste Teil des Computers - neben dem Prozessor - ist der Arbeitsspeicher. Er besteht aus einer großen Menge von Speicherbausteinen, die Daten während des laufenden Betriebs aufnehmen und speichern können. Der Zugriff auf diesen Arbeitsspeicher läuft wiederum über ein Bussystem. Damit der Prozessor genau bestimmen kann, auf welchen Teil des Speichers er zugreifen will, benötigt er ein Adressierungsschema. Jede Speicherzelle hat also eine Adresse. Will der Prozessor jetzt etwas in eine bestimmte Speicherzelle schreiben oder aus ihr lesen, so muß er zunächst einmal die Adresse dieser Speicherzelle auf den Adressbus schreiben. Dadurch öffnet sich ein Kanal auf dem Datenbus, vom Prozessor zu der angegebenen Speicherzelle. Erst jetzt können Daten auf diesem Weg übertragen werden.
Jedes Stück Hardware, auf das der Prozessor zugreifen soll, muß also eine Adresse haben. Man spricht in diesem Zusammenhang von der IO-Adresse (IO - Input/Output - Ein/Ausgabe). Ein anderer Begriff für diese Adresse ist ioport.
Diese Hardware-Adresse ist sozusagen der Schlüssel für die Kommunikationsmöglichkeit zwischen Prozessor und Hardware. Es ist zwingend erforderlich, daß der Prozessor die richtige Adresse einer Hardware kennt, die er benutzen soll. Bei zusätzlich zu installierender Hardware (Erweiterungskarten) ist die Adresse meist einstellbar, so daß es zu keinerlei Doppelbelegung einzelner Adressen kommen kann. Denn das würde zwangsläufig zu Fehlfunktionen führen. Eine wichtige Aufgabe bei der Installation neuer Hardware ist es also, dafür zu sorgen, daß neue Hardware eine eindeutige Adresse zugewiesen bekommt, und der Prozessor diese Adresse kennt.
Wenn jetzt eine bestimmte Hardware eine Eingabe an den Computer schicken will, so muß sie den Prozessor benachrichtigen, daß auf ihrer io-Adresse neue Daten liegen, die zu lesen sind. Drückt der Anwender eines Computers beispielsweise eine Taste auf der Tastatur, so liegt der Wert dieser Taste jetzt an der IO-Adresse der Tastatur an. Nur leider weiß der Prozessor das noch nicht, hat also keinerlei Veranlassung, ein Byte von dieser Adresse zu lesen.
Aus diesem Grund muß jedes Gerät, das Eingaben an den Computer zulässt die Möglichkeit haben, eine Unterbrechungsanforderung (Interrupt-Request) an den Prozessor zu schicken. Wenn der Prozessor eine solche Anforderung erhält, unterbricht er seine Arbeit und führt den zu dieser Anforderung passenden Interrupt aus. Das heißt, er führt ein kleines Programm aus, und kehrt dann zum normalen Programmablauf zurück.
Eine zwingende Voraussetzung ist es dabei aber, daß der Prozessor wiederum genau weiß, welche Interrupt-Anforderung von welchem Gerät kommt. Nur so kann er das passende Interrupt-Programm starten, das auch zu der entsprechenden Hardware gehört.
Wenn also Hardware installiert werden soll, die nicht nur Ausgaben, sondern auch Eingaben an den Computer ermöglicht, dann muß dieser Hardware ein sogenannter Interrupt Request Channel oder kurz IRQ zugewiesen werden. Wie schon bei der IO-Adresse muß der Prozessor jetzt wieder genau wissen, welcher IRQ von welcher Hardware kommt.
Einige IRQs sind bereits standardmäßig von Systemhardware belegt, andere stehen für Erweiterungen zur Verfügung. Die folgende Tabelle zeigt die gängigste Belegung eines Standard-AT Systems:
IRQ | belegt durch |
---|---|
0 | Timerbaustein |
1 | Tastatur |
2 | Kaskadierende Verbindung mit zweitem IRQ-Controller (dort 9) |
3 | zweite und vierte serielle Schnittstelle |
4 | erste und dritte serielle Schnittstelle |
5 | Frei (früher zweite parallele Schnittstelle) |
6 | Diskettenlaufwerk |
7 | Frei (früher erste parallele Schnittstelle) |
8 | RealTimeClock |
9 | Frei |
10 | Frei |
11 | Frei |
12 | Frei (meist PS/2-Maus) |
13 | Frei |
14 | Erster IDE-Controller |
15 | Zweiter IDE-Controller |
Wenn zwei Geräte auf ein- und demselben IRQ liegen, so ist die Gefahr eines Konfliktes sehr groß. COM2 und COM4 liegen z.B. standardmäßig auf dem IRQ 3. Sollten Sie also versuchen, mit einem Modem an COM4 und einer Maus an COM2 gleichzeitig zu arbeiten, kann das nicht richtig funktionieren. Moderne Rechner sind - zumindestens in einigen Fällen etwa bei PCI-Erweiterungskarten - in der Lage sich IRQs zwischen mehreren Erweiterungen zu teilen (IRQ-sharing).
Um dieses Feature zu ermöglichen sind sogenannte DMA-Kanäle vorgesehen, von denen der Rechner wiederum nicht besonders viele anbietet. Ein Standard-PC bietet acht DMA-Kanäle an, von denen einer stets belegt ist (DMA4).
Auch hier haben wir aber wiederum die Notwendigkeit, daß die Hardware wissen muß, welchen DMA-Kanal sie benutzen darf, und der Prozessor auch weiß, welche Hardware welchen Kanal benutzt. Genauso wie bei IRQs ist es essentiell, daß jeder DMA-Kanal nur von einer Hardwareinstanz benutzt wird, damit es nicht zu schweren Konflikten kommt.
Die Frage der Einstellung ist hier eine bilaterale Frage, denn die genannten Parameter müssen sowohl hardwareseitig eingestellt werden, als auch softwareseitig. Nur wenn diese beiden Einstellungen übereinstimmen, ist es möglich mit der Hardware zu arbeiten.
Die hardwareseitige Einstellung wird auf unterschiedliche Art und Weise vorgenommen, je nach verwendeter Erweiterungskartengeneration. Im Folgenden sollen kurz die üblichen Verfahren erläutert werden:
Die genannten drei Methoden bedingen grundsätzlich, daß auch das Betriebssystem bzw. damit der Prozessor erfährt, welche Einstellungen getroffen wurden. Wie oben schon gesagt, nur wenn beide Seiten (Hard- und Software) die gleiche Information haben, kann die Ansteuerung der Hardware funktionieren.
Modernere Systeme versuchen den Einbau von Erweiterungskarten dahingehend zu vereinfachen, daß die Karte und das Betriebssystem sich gegenseitig einigen, welche Parameter sie benutzen. Damit sollen auch Nicht-Spezialisten in die Lage versetzt werden, neue Hardware einzubauen. In diesem Zusammenhang ist häufig das Schlagwort "Plug And Play" zu hören, als etwa "einstecken und loslegen".