Jor*_*vis 2 storage hard-drive filesystems
在 LBA 之前,您只是拥有磁盘的物理映射,最初在旧的 IBM-PC 兼容机器上使用 BIOS 进行磁盘访问将如下所示:
总 CHS 地址 : 24b (10+8+6)
回到过去,平均(文件|块|扇区)大小为 512B。
来自维基百科的例子:
512(bytes) × 63(sectors) x 256(heads) × 1024(cylinders) = 8064 MiB (yields what is known as 8 GiB limit)
Run Code Online (Sandbox Code Playgroud)
我感到困惑的是,在 LBA 公式中提到头部时,它的实际含义 是什么heads-per-cylinder
。这对我来说没有意义,因为据我所知,头部是头部,除非它是可移动媒体,否则每个盘片都有两个(顶部,底部)一个用于每个表面。
在我看来,将它们称为heads-per-disk
or会更有意义heads-per-surface
,因为圆柱体穿过整个磁盘(多个盘片)。
逻辑块寻址:
公式: A = (c ? Nheads + h) ? Nsectors + (s ? 1)
A
- 逻辑块地址Nheads
- 磁盘上的磁头数 heads-per-disk
Nsectors
- 轨道上的扇区数 sectors-per-track
c,h,s
- 是气缸,头部,扇区号 24-bits total (10+8+6)
看这里的第一个例子:
For geometry 1020 16 63 of a disk with 1028160 sectors CHS 3 2 1 is LBA 3150=(3× 16+2)× 63
Run Code Online (Sandbox Code Playgroud)
几何形状:(这是由制造商定义的)
总的来说,您对术语相当草率,因此这是进一步混淆的根源。
1024 位可寻址数 (1024 = 2^10)
IBM PC/XT 使用 Western Digital WD1010 磁盘控制器,该控制器使用(在硬件寄存器中)一个 10 位柱面编号。
第一个柱面的地址为 0,因此有 1024 个柱面地址。
“可寻址号码”是荒谬的。
-1 用于“引导扇区” (c-0,h-0,s-0)
63 位可寻址数 (63 = 2^6 - 1)
(每个磁道的)第一个扇区是地址 1,因此 6 位扇区号可以寻址每个磁道上多达 63 个扇区(扇区号 1 到 63)。
没有扇区地址零。它没有保留。它不存在。
减去这个偏移量是一种算术必要性,与引导扇区没有任何关系。使用磁盘驱动器的第一个扇区(或任何扇区)进行引导(或任何功能)与需要减去起始偏移量无关。
所以我知道你可以获得以下的理论最大地址:
512(字节)× 63(扇区)× 256(磁头)× 1024(柱面)= 8064 MiB
不,这是最大容量。
磁盘地址用于扇区,而不是字节。
我知道头号是一个 246 位的可寻址数字......
咦???一个“可寻址号码”???
驱动器参数之一是磁头数(在柱面中)。
CHS 地址中的数字之一是头号。
246位???
我感到困惑的是,当头被称为 时,它实际上是什么
heads-per-track
。
Heads-per-track
是您编造的,因为 PC 中使用的典型 HDD 没有这样的参数(即该数字始终为 1)。
一个特定的磁道只能由一个特定的 R/W 磁头读取和写入。
每个表面有一个 R/W 磁头。(您不太可能使用双端口驱动器。)
R/W 磁头安装在臂的末端。
所有的 R/W 头和臂包括一个由致动器移动/旋转的组件。
(但也有固定磁头磁盘驱动器,例如每磁道一个磁头,其寻道时间为零。)
这些术语对我来说没有任何意义,因为据我所知,磁头是(进行读/写的实际手臂),除非它是可移动媒体,否则每个盘片都有两个(顶部,底部),所以它真的会自从将它们称为每盘磁头或每磁盘磁头以来,它就变得更多了……实际上它应该是每磁道扇区,对吗?
那么显然你对头部是什么感到困惑。
您还将“拼盘”与“表面”混淆。
没有要求必须使用盘片的两面,因此将每个表面视为一个单元,而不是将盘片视为一个单元。
有一个名为 的驱动器参数sectors per track
。
现在,
heads-per-track
当您查看从 CHS 到 LBA 的转换时,就会出现这个术语。
再一次,你似乎已经编造了一些东西。每个轨道的磁头是统一的。
但是几何 1020,16,63 如何转换为 CHS 3,2,1 有人可以向我解释一下吗?
LBA 是扇区地址。
CHS 也是一个扇区地址。
要将一种地址样式转换为另一种样式,您需要指定驱动器几何结构:
. number of cylinders
. number of heads (per cylinder)
. number of sectors per track
Run Code Online (Sandbox Code Playgroud)
你不能*翻译*几何到一个地址;您使用几何图形来转换地址。
CHS地址3,2,1
相当于LBA地址3150
,如果驱动器几何1020,16,63
。
在我看来,将它们称为每磁盘磁头或每表面磁头会更有意义,因为圆柱体穿过整个磁盘(多个盘片)。
在我阅读的众多技术文档(来自磁盘驱动器制造商)中,(单端口)驱动器的规格表将列出R/W 磁头的数量和盘片的数量。从来没有heads per disk
, heads per surface
, 或的比率heads per platter
。
在我作为开发控制器固件、磁盘设备驱动程序和文件系统处理程序的软件/固件工程师的工作中,我从不关心或不得不使用盘片的数量。盘片的数量或盘片有两个可能的表面是机械特性,与用于 CHS 寻址的驱动器几何结构完全无关。
CHS 中的 C 指的是柱面地址。磁盘驱动器必须(机电)寻找请求的柱面地址/位置,以便正确定位 R/W 磁头组件。
CHS 中的 H 指的是 R/W 头地址。磁盘控制器(电气地)通过其地址选择请求的 R/W 磁头(在寻道完成后)以访问正确的磁道。所有其他 R/W 磁头都被(电气)禁用。
CHS 中的 S 指的是扇区地址。磁盘控制器(以编程方式)扫描每个扇区(在寻道和磁头选择之后),因为它在(选定的)R/W 磁头下旋转,直到找到所请求的扇区(例如读取扇区的 ID 记录,并执行地址比较)。
此外,
如果您熟悉 Dimensional Analysis,那么将磁盘驱动器的磁头数量指定为heads per cylinder
比heads per drive
.
我了解几何 CHS 数,但是 (3,2,1) 元组 CHS 数从何而来?
这只是在转换为 LBA 地址的示例中选择使用的任意 CHS 地址。
顺便说一句,
在最终用户行话中,“磁盘”== 磁盘驱动器。
在专业硬盘行话中,“磁盘”==磁盘盘片。
归档时间: |
|
查看次数: |
10041 次 |
最近记录: |