读取一个 k 字节块的时间(以毫秒为单位)

Posted

技术标签:

【中文标题】读取一个 k 字节块的时间(以毫秒为单位)【英文标题】:The time in milliseconds to read a block of k bytes 【发布时间】:2013-06-11 20:04:09 【问题描述】:

以下是 Andrew S. Tanenbaum 的《操作系统设计与实施》一书中的一个问题及其答案。

 As an example, consider a disk with 131,072 bytes/track, a rotation time of 8.33 msec, and an
average seek time of 10 msec. The time in milliseconds to read a block of k bytes is then the sum
of the seek, rotational delay, and transfer times:

10 + 4.165 + (k / 131072)x 8.33

现在,如果每个磁道有 131,072 字节,则要为此块读取 k/131,072 个磁道。更改磁道是否涉及旋转延迟?为什么要乘以 8.33?

旋转时间究竟是什么意思?

4.165 是从哪里来的?

这是我用来描绘轨道的图像。

【问题讨论】:

自从本书写作以来,硬盘设计已经有了很大的飞跃,所以你引用的整个部分有点过时了。现在的情况要复杂得多。 是的,但我想理解这些可能有助于理解复杂的技术。感谢您的信息 【参考方案1】:

4.165 毫秒是绕到一半所需的时间 (8.33 毫秒 / 2)。由于磁盘可以准确地旋转到您需要开始的位置,或者尽可能远离您需要开始的位置,因此您可以分开差异。

您乘以 8.33 毫秒,因为这是绕一圈所需的时间。这就是“轮换时间”。

k / 131072 是以 k 字节为单位的旋转次数。

平均寻道时间(10 毫秒)会考虑更改磁道。

编辑:将我对搜索时间和旋转时间的解释移出评论。)

我会用电唱机做一个类比(希望我没有在这里显示我的年龄)。

寻道时间是读/写磁头移动到指定磁道所用的时间。在电唱机上,这是您将指针移到您最喜欢的歌曲所需的时间。

旋转时间是磁盘旋转一周所花费的时间。 8.33 ms 的旋转时间意味着磁盘每秒运行大约 120 次 (1 / 0.00833)。在电唱机上,这将是 33 1/3 RPM(对于 LP),或 45 RPM 对于单曲。

【讨论】:

那么寻道时间和旋转时间实际上有什么区别?我从您的解释中理解了 4.165 是如何产生的。 我在答案中添加了对寻道时间和旋转时间的解释。

以上是关于读取一个 k 字节块的时间(以毫秒为单位)的主要内容,如果未能解决你的问题,请参考以下文章

Java - 确定要从波形文件中读取以获取时间戳的字节数

汇编 x86 从任何文件读取并转义所有特殊字符并以字节为单位获取文件大小

Realstudio (2011 4.2) 以毫秒为单位的日期

如何从以毫秒为单位的长度中找到以帧、字节和整数为单位的音符长度

读取文件方法大全

java I/O框架 文件流