程序员的自我修养---2 文件在磁盘中的结构

文 件 系 统 管 理 着 磁 盘 中 文 件 的 存 储 方 式 . 比 如 我 们 在 Linux 系 统 下 有 一 个 文 件
“ / home / user / test . dat ” , 长度为 8 000 个宁节 。那么我们在创建这个文件的时候 , Linux 的 ext 3
文件系统冇可能将这个文件按照这样的方式存储在磁盘中 : 文件的前 4 096 字节存储在磁盘
的 1000 号 扇区到 1007 号扇区 , 每个扇区 512 字节 , 8 个扇区刚好 4096 字节 ; 文件的第 4 097
个字节到第 8 000 字节共 3 904 个字节 , 存储在磁盘的 2000 号扇区到 2007 号扇区 , 8 个扇
区也是 4096 字节 , 只 不过只存储了 3 904 个有效的字节 , 剩 下 的 192 个字节无效 。 如果把
这个文件的存储方式看作是一个链状的结构 , 它的结构如图 14 所示 。 

 

这里我们先穿插一个关于硬盘的结构介绍 , 关于硬盘结构可能很多读者已经有一个大概的了解 , 那就是硬盘基本存储单位为扇区 ( Sector ) , 每个扇区一般为 512 字节 。 一 个硬盘往往有多个盘片 , 每个盘片分两面 , 每面按照同心圆划分为若干个磁道 , 每个磁道划分为若干个扇区 。 比如一个硬盘有 2 个盘片 , 每个盘面分 65 536 磁道 , 每个磁道分 1 024 个扇区 , 那么硬盘的容置就是 2*2*65 536*1 024*512 =137 438 953 472 字节 ( 128 GB ) 。 但是我们可以想象 , 每个盘面上同心圆的周长不一
样 , 如果按照每个磁道都拥有相同数置的扇区 , 那么靠近盘面外围的磁道密度肯定比内圈更加稀疏 , 这样是比较浪费空间的 。 但是如果不同的磁道扇区数又不同 , 计算起来就十分麻烦 。 为了屏蔽这些复杂的硬件细节 , 现代的硬盘普遍使用一种叫做 LBA( Logical Block Address ) 的方式 , 即整个硬盘中所有的扇区从 0 开始编号 , 一直到最后一个扇区 , 这个扇区编号叫做逻辑扇区号 。 逻辑扇区号抛弃了所有复杂的磁道 、盘面之类的概念 。 当我们给出一个逻辑的扇区号时 , 硬盘的电子设备会将其转换成实际的盘面 、 磁道等这些位置 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值