Betriebssystem und Hardware
Was muss bei einem System, in dem die Hardware die Cache-Kohärenz nicht gewährleistet (nicht kohärent), vor dem Lesen von per DMA vom Gerät in den Hauptspeicher geschriebenen Daten durch die CPU von der Software erledigt werden?
- ADie Taktfrequenz der CPU vorübergehend senken
- BDen Cache-Inhalt des betreffenden Bereichs ungültig machen, sodass aus dem Hauptspeicher neu gelesen wird
- CDen gesamten Cache-Inhalt in den Hauptspeicher zurückschreiben und anschließend das per DMA gelieferte Ergebnis verwerfen
Antwort und Erläuterung anzeigen
Antwort: B. Den Cache-Inhalt des betreffenden Bereichs ungültig machen, sodass aus dem Hauptspeicher neu gelesen wird
DMA überträgt Daten ohne Umweg über die CPU zwischen Gerät und Hauptspeicher; in Systemen, in denen die Hardware keine Kohärenz gewährleistet, können im CPU-Cache daher noch veraltete Daten dieses Bereichs liegen. Würde man direkt lesen, bekäme man den alten Wert statt der per DMA gelieferten neuen Daten. Deshalb macht der Treiber vor dem Lesen den Cache dieses Bereichs ungültig, damit der neue Wert aus dem Hauptspeicher gelesen wird. Umgekehrt werden an das Gerät zu sendende Daten vor dem DMA-Start aus dem Cache zurückgeschrieben.