Was verwaltet die E / A zwischen einem Puffer und einem Gerät?

357
Tim

Wenn ich richtig liege, wird ein Puffer als Zwischenstufe zwischen einer CPU und einem Gerät verwendet, um die CPU davon abzuhalten, auf die E / A mit dem Gerät zu warten, und die CPU kann andere Aufgaben ausführen

Da die CPU andere Aufgaben ausführt, scheint es nicht zu funktionieren, den Puffer zu verwalten. Wie werden die Daten vom Puffer zum Gerät verwaltet, wenn der Puffer voll ist, oder Daten vom Gerät aufnehmen, wenn der Puffer leer ist?

0
Das Betriebssystem verwaltet diese E / A-Puffer für Geräte. Das Betriebssystem (eigentlich ein Gerätetreiber) * initiiert * einen Datentransfer, wenn ein Puffer voll oder leer ist. Die eigentliche Bewegung der Daten kann von der CPU (auch Programmed I / O oder PIO), von einem Direct Memory Access Controller (auch als DMA bezeichnet) oder von einem Busmaster (ähnlich wie DMA, jedoch von einem "intelligenten" Peripheriegerät eingeschaltet) ausgeführt werden der Systembus, z. B. eine GPU auf PCI). sawdust vor 9 Jahren 0

1 Antwort auf die Frage

1
LawrenceC

Direkter Speicherzugriff (DMA) ist das fehlende Teil Ihres Puzzles. Mit DMA können E / A-Gerätesteuerungen Speicher direkt ohne Eingriffe der CPU lesen und schreiben.

Ohne DMA kann immer noch ein Puffer verwendet werden, da die Daten irgendwo leben müssen, während sie abgerufen werden, und es kann erwünscht sein, nur Daten an das anfordernde Programm zu übergeben, wenn die E / A erfolgreich abgeschlossen wurde.

Vielen Dank. Was bedeutet "" nur dann Daten an das anfordernde Programm, wenn die E / A erfolgreich abgeschlossen wurde? Was ist das Gegenteil von "Nur Daten an das anfordernde Programm übergeben, wenn die E / A erfolgreich abgeschlossen wird"? Tim vor 9 Jahren 0
Die E / A-Operation dauert einige Zeit. Während dies geschieht, werden möglicherweise andere Threads der Anwendung ausgeführt. Der betreffende Gerätetreiber kann den Geräte-DMA in einem Puffer enthalten, den er besitzt (nicht der Anwendung), und dann den Puffer in den Speicherbereich der Anwendung kopieren (oder einen Verweis darauf zurückgeben), wenn die E / A in Ordnung ist - wenn das Gerät meldet keine Fehler oder wenn die zurückgegebenen Daten geprüft werden Wenn ein E / A-Fehler aufgetreten ist, kann es sinnvoll sein, dass der Treiber keine ungültigen Daten an die Anwendung übergibt. Schauen Sie sich doch mal ein paar aktuelle Treiber an, sie können verschiedene Dinge tun. LawrenceC vor 9 Jahren 0