
私のローカルコンピュータには2つのディスクがありますが、同時にこのディスクに書き込むときに変更はシリアルに書き込まれますか、それとも並列に書き込まれますか?
答え1
たとえば、説明します。この数字は実際ではなく、単にデモンストレーションです。
データブロックの書き込みには10秒かかりますが(ブロックサイズを無視)、ディスクにブロックの書き込みに1秒だけかかるように指示するとします。
また、この簡単な例では、CPUは一度に1つのディスクにのみコマンドを送信できると仮定しています。
最初の1秒間、CPUはディスク1にブロックを書き込むように指示します。 CPU がディスク 2 にブロックを書き込むように指示している間、2 番目のディスク 1 で書き込みが開始されます。 3番目の2番目のディスク2への書き込みを開始します。
11秒でディスク1が完了し、12秒でディスク2が完了します。したがって、この例ではコマンドはシリアルに送信されますが、書き込み操作は最大(約9秒)並列に。
約1000の複雑さのレイヤーを追加すると、実際にコンピュータで何が起こっているのかに似ています。
簡単に言えば、そうです。システムは並行して書くために最善を尽くします。
答え2
ディスクはミラーリングされていますか?それから彼らはほとんど同時に書いていたし、偶然のこともなかった。そうでない場合は、同じコントローラにありますか?そうであれば、順番に(またはインターリーブ方式で)書いている可能性があります。異なるコントローラーにいる場合は、書き込み操作のプロファイルやシステムでキャッシュを構成する方法など、他の多くの要因に応じて同時にまたは順次書き込むことができます。
答え3
はい、書き込みは非同期ですsync
でブロックデバイスのオプションを指定しない限り/etc/fstab
。
SCSI / IDEコントローラは同時に複数のデバイス駆動をサポートしているため、同じシステムバスを共有するブロックデバイスも非同期で動作できます。