fread は処理能力を必要としますか / DMA で動作しますか?
ファイルが存在するデバイスが DMA をサポートしていると仮定しますか?
はい、そうです。ただし、Linuxで「time」コマンドを使用すると、「システム」時刻として表示されます。
基本的に、システムコールを実行して、読み取るデータとデータを配置する場所をOSに指示し、次にOS(ここではCPUサイクル)がバッファを設定し、DMAにデータを配置する場所を指示します。プロセスがブロックされ、OSが実行する新しいプロセスを選択しますが、それは実際にはfread呼び出しにカウントされません。最終的に、読み取りが完了し、DMAシステムがプロセッサに割り込みを発行し(CPUサイクルが増える)、その時点でOSは、準備ができているデータがプログラムに返されることを確認します(そして、スレッドを準備完了キューに入れます-終了CPU時間)。
DMA を使用するか nt を使用するかは、ファイルからの読み取りに使用する C ライブラリ呼び出しとは無関係です。通常、管理者権限がなければ、とにかく影響を与えることはできません。
編集:
システムが DMA を使用してデバイスにアクセスするかどうかは、scanf、fread、read、またはその他のファイル アクセス関数を使用するかどうかには依存しません。これは、通常のユーザーが変更できないデバイス ドライバーの設定に依存します。
デバイスとの通信に費やされた時間に関する限り、そのほとんどすべてがプロセスのシステム タイマーによってカウントされ (上記の回答で述べたように)、ごく一部はまったくカウントされません。