请教:磁盘数据读写
假设有1个硬盘,它由4个盘片组成,则有8个盘面,分别为 A1,A2,B1,B2,C1,C2,D1,D2(一个盘片有2面);且即有8个磁头,分别为 HA1,HA2,HB1,HB2,HC1,HC2,HD1,HD2(每个盘面对应一个磁头)。开始时所有磁头都在相应盘面的0磁道。
1、假设有一个字节的数据存放在 A1 盘面 第 7 磁道的 第 10 个扇区里,那读取该数据的过程是怎样的?磁头怎样移动的?
2、假设一个磁道有20个扇区,每个扇区512字节(即一个磁道可以存放的总字节数为 512 * 20 = 10kb)。现有一个大小为 6kb 的数据存放在以 A1盘面 第 7 磁道 第10 个扇区起的“连续“区域里。那读取该数据的过程是怎样的?
我的想法是这样的,对于1,我觉得是 所有的磁头(HA1,HA2,HB1,HB2,HC1,HC2,HD1,HD2等共8个)一起从各自的盘面的 第 0 磁道 移动到 第 7 磁道,且都在该磁道下停留,直到 第 10 个扇区 出现在磁头下。即,个人认为在同一时刻里,各个磁头都处在相同的磁道及相同的扇区下。
对于2,个人感觉读的过程个1类似,但当读完5kb数据后,剩下的1kb在哪里呢?是在 A1盘面 第 8 磁道 第0 个扇区里,还是在 A2盘面 第 7 磁道 第10 个扇区里(即6kb的数据是存放在同一个柱面里)?个人认为是放在A2盘面 第 7 磁道 第10 个扇区里,即同一柱面下。读的过程跟上面的一样,但个人认为整个读的过程应该是按照整个柱面来读,即一次过读 512 * 20 * 8 = 80kb 到缓冲区里(不管你是要 1个字节 还是 6kb 数据),然后再根据要求取 6kb 给应用程序。
不知道我的理解是否正确?(我也翻阅过一些资料,但上面一般都说的比较笼统,缺乏比较形象的例子........)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
回复 1# tomkedy
顶
回复 1# tomkedy
有人知道吗?
不能简单地看硬盘扇区的分布。如果是旧式硬盘,不具有扇区动态分布的功能,数据都是连续分布的。这就要求操作系统实现扇区的动态分布。对于新式硬盘,其本身就具有扇区动态分布的功能,提供给用户接口的是扇区的逻辑地址。这一切对于用户而言是透明的。
动态分布扇区的作用主要包括:提高访问速度,屏蔽坏扇区,设置系统保留区,……,等等。设置系统保留区可用于HPA和硬盘的控制代码。
楼上,.............
只从一般的情况来看就行........我关心的是在一般情况下,磁盘数据的读写过程........
一般情况已经说了。“对用户透明”。你不可能知道物理扇区是如何存储的。只能从理论上研究研究。
CHS如何为求速度应该先存储同个柱面的同个扇区,然后再移动扇区,最后才是柱面。但实际不可能这么简单。
因为还有许多制约因素。如传输速率,硬盘微芯片处理能力,坏扇区,保留扇区等。
打个比方。如果硬盘是7200转/s的,有2张磁片,一个磁道63个扇区,则采用最快布局方式一秒种需要传输7200 * 63 * 4 * 512 = 928972800字节/s,约合886MB/s。现在的硬盘根本不能达到这种速度。因此只能是无论从接口传输速率上还是内部微芯片的处理能力上都不能达到这种要求。因此只能理论上研究研究。
另外磁片并不是一种数字存储设备,而是模拟设备,需要同步和编解码的。这就限制了其处理能力。
那磁头的移动又是如何的呢?
柱面就是同个磁道组成的圆柱面