ハードウェアの書き込みの仕組み

このQ&Aのポイント
  • ハードウェアの書き込みには、外側から内側に順番にデータを埋めていく方法と、シーク時間を考慮してできるだけ連続するようにデータを配置する方法があります。
  • ディスクへのデータの書き込み方法には、外側から内側に順番にデータを埋めていく方法と、シーク時間を短くするためにできるだけ連続するようにデータを配置する方法があります。
  • ハードウェアのディスクにデータを書き込む際、一般的には外側のセクタから順番に埋めていく方法や、シーク時間を短くするために連続した場所にデータを配置する方法が用いられます。
回答を見る
  • ベストアンサー

ハードウェアの書き込みの仕組み

ディスクにデータを記録するときは、単純に外側のセクタから、埋めていくのでしょうか。それとも、シーク時間などを考慮し、一連のデータができるだけ連続するようにするのでしょうか。 以下の例で、教えていただけませんか。よろしくお願いします。 【例】 ・トラック一周 10 クラスタあり、7 クラスタ使用済みで、空きが3クラスタ。 ・そこに、5 クラスタ分の容量が必要なデータを書き込む。 この場合、以下のどちらになるのでしょうか。 (1) 空いている 3 クラスタにデータを書き込み、残りの2クラスタ分のデータは、1つ内側のトラックに書き込む。 (2)シーク時間が短くなるように、1つ内側のトラックに、5 クラスタ分のデータを書き込む。 (3)どちらでもない。

質問者が選んだベストアンサー

  • ベストアンサー
  • wormhole
  • ベストアンサー率28% (1621/5656)
回答No.1

(3) 厳密にはOSによって異なりますが今あるOSでクラスタがどのトラックにあるのかなどを意識して操作しているものはないと思います。 というよりHDD自身にはクラスタはありません。 クラスタはOSがセクタをまとめて扱う単位なので場合によってはトラックをまたがる事だってありえます。

dartymac
質問者

お礼

回答ありがとうございました。勉強になりました。

その他の回答 (1)

  • e3tatsu
  • ベストアンサー率51% (78/151)
回答No.2

(3)です。 他の方も仰っているように昔はOSがシリンダ・ヘッド・セクタ(CHS)という3つのパラメータで読み書きする場所を制御していました。 最近のHDDではLBAというディスク内のすべてのセクタに通し番号を振っていて、その通し番号によってセクタを指定する方式が使われています。 OSからはLBAのセクタ番号で読み書きするセクタをディスク上のコントローラ(ICチップ)に指示します。 で、実際円盤状のどこに記録するかはすべてディスク上のコントローラが制御しています。 このコントローラというのはディスク製品毎に物理特性等を考慮した異なる設計になって いるので、どのような順序でセクタを使用するかはコントローラの実装に依存します。 つまりディスク製品毎に動きが異なるということですね。

dartymac
質問者

お礼

回答ありがとうございました。よくわかりました!

関連するQ&A

  • HDDへの書き込みはどのように行われますか?

    HDDの書き込み時に、セクタサイズ未満、あるいはクラスタサイズ未満の書き込みはどのように実行されるのでしょうか? 例えば、512バイト(1セクタ分)のデータの、奇数バイト目(256ヶ所)にだけデータを上書きしていく場合、「セクタを読み出して、1バイト上書きして書き戻し」という操作が256回行われるのでしょうか? もしそうだとすると、プログラマが何も工夫しなければ、たった256バイトの書き込みのために、R/Wあわせて512回ものディスクアクセスが生じてしまうことになりますよね? それとも同一セクタやクラスタに連続して行われる書き込みは、OSやランタイムのバッファで自動的にまとめてくれるのでしょうか? またこの場合、どういう方法でまとめてくれるのでしょうか? ご教授よろしくお願いします。

  • 「平均アクセス時間の求め方」について教えてください

    問題は、『両面に記憶できるフロピーディスクがある。このフロッピーディスクは、セクタ長512(Byte)トラックあたりのセクタ数18、トラック数80(Track/面)でディスク回転速度600(rpm), 平均シーク時間10(ms)であり、両面のセクタに同時にデータアクセスする(2セクタ/ブロック)2048(byte)のデータに対する平均アクセス時間を求めよ』というものでした。教科書のとき方が専門用語だらけでさっぱりわかりません; 参考になるサイトだけでもかまいません。どうかお力を貸してください!!

  • CFカードを 購入時の フォーマットに戻したい

    CFは SanDISK製32Mバイト 「買ったままで使用してください」 の指定でしたが WindowsXPで フォーマットしてしまいました 案の定 使えなくなりました。 (使用機器は 何か 聞かないで欲しいのですが) セクタ0のBPB領域を  比較してみましたところ以下の通り 明らかに違いがありました。 FORMATコマンドのパラメーター変更では 変更できません OS依存しないフォーマット方法を ご存じの方居ませんでしょうか? 以下 比較データ(16進) BPBの項目(アドレス) 初期データ、XPフォーマット後 クラスタ当りのセクター数(0D)   04 , 01 FAT当りのセクター数 (16) 003D , 00F3 トラック当りのセクタ数 (18) 0020 , 003F ヘッド数 (1A) 0004 , 00FF (項目は解釈が 違っているかもしれません) 最終手段として フォーマットしないで 直接 セクタ単位で書き換えてしまう方法が 有るのでしょうが なるべく普通の方法で解決したいのです。

  • HDD、BD、同心円状、螺旋状、記録順、内側、外側

    (a)HDDでは、記録位置が同心円状になっていて、これをトラックと呼び、トラックには番号が振ってあるそうですが、トラック0はいちばん内側のトラックでしょうか、いちばん外側のトラックでしょうか。 (b)新品のHDDにデータを記録するときには、トラック0から順に記録していくのでしょうか、最終トラックから順番に記録していくのでしょうか。 (c)BD(ブルーレイディスク)では、記録位置が同心円状ではなく螺旋状になっているそうですが、この螺旋状になっている記録位置は何と呼ぶのでしょうか。トラックでしょうか。 (d)新品のBDにデータを記録するときには、いちばん内側から順に記録していくのでしょうか、いちばん外側から順番に記録していくのでしょうか。

  • この二つの問題とける人いませんか?(基本情報処理試験)

    ○毎分 6,000 回転,平均位置決め時間 20 ミリ秒で,1トラック当たりの記憶容量 20 k バイトの磁気ディスク装置がある。1ブロック4 k バイトのデータを1ブロック転送するのに要する平均アクセス時間は何ミリ秒か。ここで,磁気ディスクコントローラのオーバヘッドは無視できるものとし,1 k バイト = 1,000 バイトとする。 A=27 シーク時間、平均回転待ち時間は分かりました。データ転送時間を求めるときに、 20kバイト×100(回転/秒)=2000(kバイト/秒) 4kバイト/2000×1000=2ミリ秒 とする計算の意味が分からないです。もっと分かりやすい考え方があったら、そちらの考え方でも良いので教えてください。 ○ 表の仕様の磁気ディスク装置に,1レコードが 500 バイトのレコード 50 万件を順編成で記録したい。 50 レコードを1ブロックとして記録するときに必要なシリンダ数は幾つか。ここで,一つのブロックは複数のセクタにまたがってもよいが,最後のセクタで余った部分は利用できない。 ・トラック/シリンダ=20 ・セクタ数/トラック=25 ・バイト数/セクタ=512 A=980 こちらは、回答を見ても考え方から分からないです。 よろしくお願いします。

  • 磁気ディスクの書き込み時間等についての質問です。

    磁気ディスクの書き込み時間等についての質問です。 平均シーク時間が50ミリ秒、平均回転待ち時間が20ミリ秒、データ転送速度が1000バイト/ミリ秒の磁気ディスク装置がある。これを用いて1件3000バイトのデータを1000件処理したい。以下の問いに答えよ (1)1000件のデータを更新する時間はいくらか (2)回転速度とデータ転送速度がともに4倍、平均シーク時間が半分になると、全データの更新処理時間はいくらか ----------------------------------- 上の問題がさっぱり分かりません。 どなたか、回答お願いいたします。

  • この問題が分からないのです・・・

     ソフトバンク社の「第二種短期集中ゼミ」の問題を解いているのですが、 この問題の解き方が分からないので、教えてください~。(泣) どこから手をつけてよいのやらもまったく分からないんです。 問題集には答えのみしか書いてなくてホント困っています。 次に示すような仕様の磁気ディスク装置とファイルがある。 ただし、1つのブロックがトラックにまたがって記録されることはないとし、読み書きはセクタ単位で行われるものとする。10万レコードのファイルを書き込むのに必要な時間は、約何秒か。 磁気ディスク装置  データ転送速度 983040バイト/秒  ディスク回転数 3600回転/分  シリンダ数 1500  トラック当たりセクタ数 32  平均シーク時間 15ミリ秒 ファイル  レコード長 600バイト  ブロック化因数 27 で、解答は ア62 イ96 ウ148 エ167 から選ぶようになってて、 答えウになっています。

  • ディスク アクセス時間とか

    回転速度が10,000回転/分、平均位置決め時間が8ms、1トラック当たりのデータ容量が12,000バイトの磁気ディスク装置に、1セクタ当たり400バイトのデータが記憶されているとき、1セクタのデータを読み取るために必要なアクセス時間は何msか? この問題のデータ転送時間の求め方が分かりません。 データ転送時間の公式は、転送するデータのバイト数÷データ転送速度。 データ転送速度が分からないので、データ転送速度から求める(データ転送速度=1トラックのバイト数÷1回転の時間) ・1トラックのバイト数は問題文より12,000バイト。 ・1回転の時間は、6ms。(1分間に10,000回転するので、60÷10,000=0.006秒、0.006秒は6ms)  だから12,000÷6=2000bps ・データ転送速度が2000bpsであることが分かった。 データ転送時間=転送するデータのバイト数÷データ転送速度より、        =転送するデータのバイト数÷2000 あとは転送するデータのバイト数が分かれば答えが解ける状態になりました。 転送するデータのバイト数はどうやって求めるのでしょうか? 最初は1セクタ当たり400バイトの400を使うのかな?と思ったのですが、この400は「1セクタあたりに400バイトのデータが記憶されている」だけであって、「転送するデータ」ではないですので、違うと判断しました。 

  • 今のCDの書き込みの時間について

    今のCDは書き込める時間は80分となっていますが、それを1秒でも超えると書き込みができなくなってしまうのでしょうか? また、書き込めるデータ数というかトラック数にも限界があるのでしょうか? 回答よろしくお願いします。

  • 復元見込みはあるでしょうか?

    1.HDDが壊れた?と思いデバイスマネージャからHDDを削除してしまった。(再起動を求められたがきえてしまうのでは?とおもい再起動しない) 2.その後、評価版でクラスタチェックをかけてセクタ保存をしました(HDD全体容量の9割、そのとき中身を見たらデータはいきていた)。 3.出かけている間に残りをしようと思い残り1割を実行して、帰ってきたらクラスタチェックは終わっていたがHDDが見えなくなっていた。(再起しても直らずBIOSに認識すらされなくなった。) その後ケーブルの刺しなおし、そして他のSATAの場所にさしたりなどしたが改善せず。 現在ここなのですが、改善策はないでしょうか? そしてHDDが見えなくなる前にとっておいたセクタ保存のデータがあり それをファイナルデータ製品版に読み込ませたところまたクラスタチェックがはじまったのですが復元見込みはあるのでしょうか?(最初にクラスタチェックをしたときと比べ、格段に時間かかるようになっている 最初40時間→今140時間) 環境:WINDOWS XP SP2 M/B:ASUS P5K-E/WIFI-AP メモリ:センチュリーマイクロ2G