DMA - Direct Memory Access

Direct Memory Access (übersetzt: direkter Speicherzugriff) ist eine Schaltungs- und Steuermaßnahme, die über eigene Datenleitungen zwischen den Ein- und Ausgabeeinheiten und dem Arbeitsspeicher verfügt. Dadurch können Daten von Eingabe-Schnittstellen ohne Umweg über den Prozessor direkt in den Speicher geschrieben werden.

Ohne DMA muss der Hauptprozessor das Schreiben von Daten von einer Schnittstelle in den Arbeitsspeicher selber veranlassen. Dazu liest der Hauptprozessor die Daten der Schnittstelle zuerst in ein internes Register und schreibt sie dann in den Arbeitsspeicher. Dafür sind mehrere Taktschritte notwendig. In der Zeit werden keine laufenden Programme ausgeführt, was die Ausführungsgeschwindigkeit laufender Programme verringert, weil der Prozessor mit dem Lesen und Schreiben von Daten beschäftigt ist. Für den Speichertransfer benötigt ein Hauptprozessor beispielhaft 40 Takte. Der DMA-Controller führt den selben Speichertransfer am Prozessor vorbei innerhalb von 4 Takten aus.

Mit DMA lassen sich die langsamen Speicherzugriffe des Hauptprozessors vermeiden und die Ausführungsgeschwindigkeit des Gesamtsystems erhöhen. Außerdem sind die hohen Datenraten von schnellen Schnittstellen nur dann erreichbar, wenn DMA möglich ist und nicht durch den Hauptprozessor gebremst werden. Durch DMA haben Schnittstellen in einem Computer im Arbeitsspeicher eigene Bereiche in die sie lesen und schreiben können.

Funktionsweise des DMA-Controllers

Übersicht DMA-Controller

Der DMA-Controller (DMA-C) ist im Chipsatz integriert. Sollen Daten in oder vom Speicher geschrieben oder gelesen werden, trennt der DMA-Controller den Prozessor vom Bussystem. Der DMA-Controller führt dann die Anforderung mit hoher Geschwindigkeit aus. Danach wird die Verbindung zwischen Prozessor und Bussystem wieder hergestellt.

Beispiel für einen Speicherzugriff durch DMA

  • Der Host-Controller stellt die Schreib- und Lesebefehle vom Betriebssystem in eine Warteschleife. Die Befehle enthalten aber nur Verweise, wo sich die Daten im Hauptspeicher befinden.
  • Die eigentlichen Daten werden von oder in den Hauptspeicher per DMA geschrieben.
  • Der Controller des Laufwerks schreibt den Status eines Befehls in eine Completion Queue und löst einen Interrupt aus. Hat der Host-Controller davon Kenntnis genommen, schließt er den Vorgang ab.

Dank der asynchronen Abwicklung muss die Software nicht warten und das Laufwerk darf die Anfragen in beliebiger Reihenfolge abarbeiten.

Wie sicher ist DMA?

Wenn Schnittstellen direkt auf den Arbeitsspeicher zugreifen dürfen, dann wäre es denkbar, dass auf diese Weise Schadcode in einen Computer kommt oder Daten im Arbeitsspeicher durch ein externes Gerät gelesen werden. Und tatsächlich gab es schon Fälle, wo externe Schnittstellen mit DMA als Sicherheitslücke missbraucht wurden.

Grundsätzlich stellt eine DMA-fähige Schnittstelle kein Sicherheitsproblem dar. Denn DMA-Zugriff heißt nicht, dass ein angeschlossenes Gerät wahlfrei auf alle Speicher-Bereiche zugreifen kann. Die Implementierung von DMA sieht vor, dass das Gerät einen festen Speicherbereich zugewiesen bekommt und nur dort Daten schreiben und lesen kann. Die Kontrolle erfolgt durch den DMA-Controller.
Ein Angreifer könnte trotzdem versuchen, über ein externes Gerät an einer externen Schnittstelle, Schadcode in den Arbeitsspeicher zu schreiben, um den PC zu kompromittieren. Ja, das wäre denkbar. Allerdings spielt es keine Rolle, ob der Hauptprozessor oder der DMA-Controller die Daten in den Speicher schreibt. In jedem Fall muss das Betriebssystem oder eine andere Software prüfen, was da in den Speicher geschrieben wurde. Es sollte nicht automatisch ausgeführt werden.

Es hat zwar immer mal wieder Sicherheitslücken im Zusammenhang mit DMA gegeben, was aber mit einer fehlerhaften Implementierung zu tun hatte. Ja, DMA kann es einem Angreifer bei einer schlampigen Implementierung möglicherweise leichter machen. Allerdings sind lokale Angriffe, bei denen physischer Zugriff auf den Computer notwendig sind, sehr schwer durchzuführen. Und wenn es doch gelungen ist, dann stellt sich die Frage, was schief gelaufen ist, dass das möglich war?

Weitere verwandte Themen:

Lernen mit Elektronik-Kompendium.de

Noch Fragen?

Bewertung und individuelles Feedback erhalten

Freitextaufgaben zum Artikel beantworten, korrigieren lassen und zum Profi werden.

Aussprache von englischen Fachbegriffen

Die Computertechnik-Fibel, das Computer-Buch
Computertechnik-Fibel

Alles was du über Computertechnik wissen musst.

Die Computertechnik-Fibel ist ein Buch über die Grundlagen der Computertechnik, Prozessortechnik, Halbleiterspeicher, Schnittstellen, Datenspeicher, Laufwerke und wichtige Hardware-Komponenten.

Das will ich haben!

Die Computertechnik-Fibel, das Computer-Buch
Computertechnik-Fibel

Alles was du über Computertechnik wissen musst.

Die Computertechnik-Fibel ist ein Buch über die Grundlagen der Computertechnik, Prozessortechnik, Halbleiterspeicher, Schnittstellen, Datenspeicher, Laufwerke und wichtige Hardware-Komponenten.

Das will ich haben!

Artikel-Sammlungen zum Thema Computertechnik

Alles was du über Computertechnik wissen solltest.

Trends in der IT

Trends in der IT

eBook kaufen

Crashkurs IT

Crashkurs IT

eBook kaufen

Digitalisierung

Digitalisierung

eBook kaufen

Quantentechnik

Quantentechnik

eBook herunterladen