shuichiの日記: そろそろ基本情報処理試験の追い込み時期なの、少し混乱させてみよう 8
日記 by
shuichi
磁気ディスクの平均アクセス時間は、
平均シーク時間+平均回転待ち時間+データ転送時間
で計算できる。
ここまでは基本情報処理持ってる人なら常識だと思う。
だが、待って欲しい。
回転を待っている間、磁気ヘッドはなにもせず遊んでるのか?
max(平均シーク時間, 平均回転待ち時間)+データ転送時間
じゃないのか?
磁気ディスクの平均アクセス時間は、
平均シーク時間+平均回転待ち時間+データ転送時間
で計算できる。
ここまでは基本情報処理持ってる人なら常識だと思う。
だが、待って欲しい。
回転を待っている間、磁気ヘッドはなにもせず遊んでるのか?
max(平均シーク時間, 平均回転待ち時間)+データ転送時間
じゃないのか?
あつくて寝られない時はhackしろ! 386BSD(98)はそうやってつくられましたよ? -- あるハッカー
遊んでいない (スコア:2)
読書きする位置を探すために読んでいる。
Re:遊んでいない (スコア:2)
読書きする位置を探すために読んでいる。
シークで、サーボトラックなり(シリンダ#が豆に書いてある)データトラックなりを使う場合は、「読んでいる」。他の方法でのシークでは、「遊んでる」が、セクタサーチはできなゐ。
応用持ってる人に聞いてみた (スコア:1)
「そうテキストに書いてあったので…」
だそうだ。
こういうときに、皆さんのような答えを返せるのが真の知識だと思う。
順序的にはヘッド移動→回転待ち (スコア:1)
ヘッドが移動している間に目的のセクタは通り過ぎているかもしれない、ヘッドは移動後に待てるけどセクタはヘッドを待つことはできない、だからヘッド移動後に平均約半周の回転待ちが発生すると。
・・・いや待てよ、IntelliPowerのような回転数可変技術を使えばいずれは「セクタが通り過ぎそうなときは速度を落とす」なんてことが可能になるのか?
Re:順序的にはヘッド移動→回転待ち (スコア:1)
ハード面は疎いのですが、
浮力が一定でないとヘッドの制御が大変そうですが。
ちょっと立ち止まって考えてみる (スコア:0)
いやいや、最近のドライブはコマンドを複数うけつけるらしい。
ということは、連続したアクセスではシークとデータ転送は同時に行われるはずだ。
max(max(平均シーク時間, 平均回転待ち時間),データ転送時間)
わけわかんなくなった。
Re: (スコア:0)
最近のドライブなら複数コマンドを受け付けた上でシーク速度を最短にするようにデータを読み込む順番を変えたりするので、もっとわけわからないと思います
NCQ http://www.pasonisan.com/customnavi/hdd/hdd4other.html [pasonisan.com]
ヘッドは遊んでいるのか? 答え、遊んでいます。 (スコア:0)
専門家ではありませんが、
HDDのヘッドは特定の位置で、半径方向にしか動くことができません。
目的とするトラック(ある同心円の一つ)へ半径方向の移動をしたあとは、
その同心円上で目的のセクタが回って来ることを待つことしかできません。
そして、半径方向からヘッドが到着するタイミングにあわせて、円周方向の
速度を変えるということも行われません、回転速度は一定です。
また、まだ回転方向でクラスタは来ないから、半径方向のシークの速度を
遅くするといったこともないはずです。全速力でシークして運が良ければ
すぐに目的のクラスタを読めますし、運が悪ければ一周待ちます。
HDDにどのように分布しているデータを読むかで、ランダムアクセス時間とか
シーケンシャルアクセス時間といった呼び方があります。
試験問題での表現がどうか分かりませんが、直近にアクセスしたデータとは
無関係の位置に格納されているデータが欲しいと思った場合、要求を出して
から、データ得られるまでの待ち時間の期待値は
平均シーク時間+平均回転待ち時間+データ転送時間
となります。最大待ち時間ではありませんが、システムを設計する際、
データを望んでから実際に得られるまでの時間の見積もりは重要です。
並列してコマンドの実行ができれば、コントローラのオーバーヘッドが
(多分、シーケンシャルアクセスの時には特に)小さくなると思われますが
試験問題ではコントローラの処理時間は無視されるかと思います。