LBA线性地址概念及其与CHS地址关系
来源:互联网 发布:网络机房设备方案 编辑:程序博客网 时间:2024/06/08 05:06
LBA,全称Logic Block Address (即扇区的逻辑块地址)
为什么引入LBA概念?
首先,由于INT13的限制,三维地址C/H/S的最大值只能为1024/16/63,容量最大只能到1024X16X63 Byte=528482304 Byte=504 M。其次,在系统管理文件时记录繁琐的C/H/S也很吃力,效率较低,使用逻辑扇区后,可在硬盘读写操作时脱离柱面,磁头等硬件参数的制约。
在LBA模式下,系统把所有的物理扇区都按照某种方式或规则看做是一线性编号的扇区,即从0到某个最大值方式排列,并连成一条线,把LBA作为一个整体来对待,而不再是具体到实际的C/H/S值,这样只用一个序数就能确定一个唯一的物理扇区,这就是线性地址的由来,显然线性地址是物理扇区的逻辑地址。
线性地址如何和实际的C/H/S地址的转换关系
首先要了解线性地址的编码规则:把第一柱面(0柱面)第一磁头(0面)第一扇区(1扇区)编为逻辑“0”扇区。。。。。。直到第一柱面(0柱面)第一磁头(0面)的第63扇区(63扇区),将其编为第“63”扇区,这样编码。
(1)从C/H/S到LBA
用C表示当前柱面号,H表示当前磁头号,S表示当前扇区号,CS表示起始柱面号,HS表示起始磁头号,SS表示起始扇区号,PS表示每磁道有多少个扇区,PH表示每柱面有多少个磁道,计算公式如下:
LBA = ( C – CS ) * PH * PS + ( H – HS ) * PS + ( S – SS )
例如:
C/H/S=0/01 则 LBA = 0
C/H/S=0/0/63 则 LBA = 62
C/H/S=0/1/1 则 LBA = 63
C/H/S=0/5/1 则 LBA = 315
C/H/S=100/0/1 则 LBA = 1606500
C/H/S=100/1/1 则 LBA = 1606563
C/H/S=139/52/48 则 LBA = 2236358
C/H/S=220/156/18则 LBA = 3544145
(2)从LBA到C/H/S
变量命名依然同上,则计算公式如下
C = LBA DIV ( PH * PS ) + CS
H = ( LBA DIV PS ) MOD PH + HS
S = LBA MOD PS + SS
如果不运行MOD运算符,只用DIV运算符,则:
C = LBA DIV ( PH * PS ) + CS
H = LBA DIV PS – ( C – CS ) * PH + HS
S = LBA – ( C – CS ) * PH * PS – H – HS)* PS + SS
例如:
LBA=0 则 C/H/S = 0/0/1
LBA=62 则 C/H/S = 0/0/63
LBA=63 则 C/H/S = 0/1/1
LBA=315 则 C/H/S = 0/5/1
LBA=1606500 则 C/H/S = 100/0/1
LBA=2236358 则 C/H/S = 139/52/48
LBA=3544145 则 C/H/S = 220/156/18
本文摘自:《数据恢复技术》第二版 伦子整理
- LBA线性地址概念及其与CHS地址关系
- 硬盘LBA 和CHS的关系
- 硬盘寻址LBA与CHS转换
- 【转】硬盘CHS模式与LBA模式
- 物理内存与线性地址的关系
- 物理内存与线性地址的关系
- 物理内存与线性地址的关系
- 物理内存与线性地址的关系
- 物理内存与线性地址的关系
- 物理内存与线性地址的关系
- 逻辑地址、线性地址、物理地址和虚拟地址 概念与区别
- 物理内存与线性地址的关系(一)
- 操作系统 内存地址(逻辑地址、线性地址、物理地址)概念
- 操作系统 内存地址(逻辑地址、线性地址、物理地址)概念
- 内存地址(逻辑地址、线性地址、物理地址)概念
- 操作系统 内存地址(逻辑地址、线性地址、物理地址)概念
- 操作系统 内存地址(逻辑地址、线性地址、物理地址)概念
- 操作系统 内存地址(逻辑地址、线性地址、物理地址)概念
- 黑马程序员7--关于泛型的事
- 16个桌面Linux用户必须要知道的Shell命令
- WPF学习之资源-Resources
- 举例说明PERL特殊变量
- svg 学习笔记(各种元素)
- LBA线性地址概念及其与CHS地址关系
- 黑马程序员8--关于反射的事
- 请问这个指标在监控性能时重要吗?DB-BLOCK-CHANGES
- Extjs TabPanel Tab页面刷新操作
- 黑马程序员9--关于代理的事
- 使线程同步
- 编译Android 程序时 代码 混淆
- 黑马程序员10--java加强小知识
- template vs macro