Besturingssysteem en hardware
Welke bewerking moet de software uitvoeren voordat de CPU gegevens leest die een apparaat via DMA naar het hoofdgeheugen heeft geschreven, in een systeem waarin hardware de cache niet coherent houdt (niet-coherent)?
- ADe kloksnelheid van de CPU tijdelijk verlagen
- BDe inhoud van de cache voor het betreffende bereik ongeldig maken, zodat opnieuw uit het hoofdgeheugen wordt gelezen
- CDe hele inhoud van de cache terugschrijven naar het hoofdgeheugen en daarna het via DMA aangekomen resultaat weggooien
Antwoord en toelichting tonen
Antwoord: B. De inhoud van de cache voor het betreffende bereik ongeldig maken, zodat opnieuw uit het hoofdgeheugen wordt gelezen
DMA draagt gegevens tussen apparaat en hoofdgeheugen over zonder de CPU, dus in systemen waarin hardware de coherentie niet bewaakt, kunnen in de cache van de CPU nog verouderde gegevens van dat bereik staan. Als die gelezen worden, leest men de oude waarde in plaats van de nieuwe gegevens die via DMA zijn aangekomen. Daarom maakt de driver vóór het lezen de cache voor dat bereik ongeldig, zodat de nieuwe waarde uit het hoofdgeheugen wordt gelezen. Omgekeerd worden gegevens die naar een apparaat gaan vóór de start van DMA uit de cache teruggeschreven.