Frage

hat fread nimmt Rechenleistung / arbeitet mit DMA?

Es sei angenommen, dass das Gerät, auf der Datei residiert DMA-Unterstützung hat?

War es hilfreich?

Lösung

Ja, es funktioniert. Aber es wird als „System“ Zeit angezeigt, wenn Sie den „Zeit“ Befehl in Linux verwendet werden.

Grundsätzlich Sie machen einen Systemaufruf, das Betriebssystem mitteilen, welche Daten zu lesen und wo es setzen, dann das Betriebssystem (hier kommt die CPU-Zyklen) setzt auf den Puffer und teilt den DMA, wo die Daten zu setzen. Ihr Prozess wird blockiert, und das Betriebssystem nimmt einen neuen Prozess zu laufen, aber das ist nicht wirklich zählt gegen Ihren fread Anruf. Schließlich sieht die Lese abgeschlossen ist und die DMA-System einen Interrupt an den Prozessor (mehr CPU-Zyklen kommen), bei der das Betriebssystem zeigen, welche Daten bereit kehrt in Ihr Programm ist (und legt Thread auf Bereitschafts-Warteschlange - Ende der CPU-Zeit).

Andere Tipps

Ob DMA verwendet wird oder nt ist unabhängig davon, welche C-Bibliothek Anruf Sie verwenden aus einer Datei zu lesen. Normalerweise kann man nicht beeinflusst es sowieso ohne Admin-Rechte.

EDIT:

Ob System verwendet DMA den Zugriff auf ein Gerät nicht davon abhängt, ob Sie verwenden scanf, fread, lesen oder eine andere Dateizugriffsfunktion. Es hängt von Gerätetreibereinstellungen, die ein normaler Benutzer nicht ändern kann.

Soweit Zeit mit dem Gerät verbrachte die Kommunikation betrifft, fast alle davon wird von Ihrem Prozess des System-Timer gezählt werden (wie die Antwort oben) und ein kleiner Teil wird nicht gezählt werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top