FPGAベースの組み込みシステム用の低レベルSATAドライバを開発しています。運転手はうまく走っています。
ddコマンドを使用してディスクからセクタを読み取ると、SCSIのread(10)コマンド(opcode 0x28)が低レベルのドライバによって記録されていることがわかります。これは正しいと思います。しかし、ddコマンドを使用してディスクにセクタを書き込むと、SCSIドライバは最初のread(10)コマンド(opcode 0x28)を数回送信し、write(10)コマンド(opcode 0x2A)を送信しません。
書き込み操作中にSCSIドライバがread()コマンドを送信するのはなぜですか?
編集:ファイル書き込み操作中に、ドライバがLBA 0から最初に8つのセクタまで(DMAモード)を読み込むことがわかります。次に、(DMA)sgブロックを書き込み、次にディスク固有情報を読み取ります(PIO)。その後、いくつかのランダムなLBAを取り、いくつかの読み出し(DMA)を実行し、最終的にデバイス固有のデータ読み出し(PIO)を読み出すことによって停止します。これは、1KBファイルを作成するためのシーケンスです。ディスクにはパーティションテーブルはなく、ファイルシステムもありません(fdiskユーティリティで確認済み)。 ドライバの正常な動作ですか?はいの場合、それは操作の速度を低下させていませんか?書き込み操作で余分な読み込みが行われるため、ファイル全体の読み込みが書き込みより高速です。
ありがとうございましたDDコマンドを使用したディスク書き込み操作の混乱
-1
A
答えて
1
システムについて詳しく知ることなく具体的には言い難いです。 2つの可能性が考えられます:
Linuxはパーティションテーブルを探しています。これは、読み込みがLBA 0と最初の数論理ブロックにある場合、または読み込みがセカンダリGPTヘッダーがあるデバイスの最後まで行われた場合です。
あなたはファイルシステム上のファイルをddしていますが、ファイルシステムはキャッシュされていないメタデータを読み込んでいます。
+0
こんにちは、返信いただきありがとうございます。あなたが言及した最初の理由は部分的に正しいと思います。私は質問を編集し、ドライバの動作に関する詳細情報を追加しました。 –
関連する問題
- 1. ディスク書き込み操作をフックしますか? Win32/64
- 2. 書き込み操作コスト
- 3. ロック混乱の読み取り/書き込み
- 4. リポジトリ内のコマンド/書き込み操作はアンチパターンですか?
- 5. Firebaseの書き込み操作のスウィフトレスポンスハンドラ
- 6. fioエラー書き込み操作のチェック
- 7. ファイルへの書き込み操作
- 8. mswordファイルの読み込み、書き込み、操作のAPI
- 9. DataAdapter塗りつぶしコマンドで「書き込み」操作を禁止する
- 10. ゴランのディスク書き込み性能
- 11. マルチスレッドを使用したファイル読み込みの書き込み
- 12. Boost :: Asio読み込み/書き込み操作
- 13. Struts2サブミットボタンの操作が混乱する
- 14. サーバIPでのバルク書き込み操作エラー:27017。書き込みエラー:[[email protected]]
- 15. EWS書き込み操作用のOutlook Webアドインのトークンを使用
- 16. UNIXコマンドを使用したテキスト操作
- 17. 読み込み操作でデータベースの書き込み操作をブロックできますか?
- 18. .PGMイメージを書き込むと形状が混乱します
- 19. 書き込みシステムコールはデータを直接ディスクに書き込みますか?
- 20. ディスクに流し込んで書き込みスパークをシャッフル
- 21. カスタム割り込みデスクリプタテーブルの混乱
- 22. Python:大容量のファイル読み込みストア操作書き込みプログラムでのRAM使用量の削減
- 23. Linux grepコマンドの混乱
- 24. Linuxカーネルでの原子操作の読み込みと書き込み
- 25. R:パラレルを使用してディスクに書き込む
- 26. オブジェクトのNSMutableArrayをディスクに保存/書き込みしますか?
- 27. Pythonを使用してファイル内のテキストを読み込み、操作し、書き直す方法
- 28. pandasデータフレームを使用して混乱したテーブルを作成できますか?
- 29. JavaベースのAPIを使用したExcelの読み込み/書き込み - vogella
- 30. ubuntuサーバーの通常のディスク読み取り/書き込み値
ddを実行するたびにそのシーケンスが実行されますか? Linuxは新しいデバイスがオンラインになったときにパーティションテーブルをスキャンしますが、デバイスを接続したままにしてddをもう一度実行すると、そのダンスを繰り返すべきではありません。 –
はい、すべての "dd if = somefile.txt = dev/sda bs = 1KB count = 1"の場合、コマンドの同じシーケンスが実行され、最初に何回でもかまいません。デバイスは常にホストに接続されます。 SCSIドライバで何か変更する必要がありますか?私はSCSIドライバで何も変更していませんでした。私はちょうどSCSI SHT構造体と関連する機能を低レベルのドライバで初期化しました。 –