硬盘存储原理和硬盘数据结构

简介: 初买来一块硬盘,我们是没有办法直接使用的,你需要将它分区、格式化,然后再安装上操作系统才可以使用。就拿我们一直沿用到现在的Win9x/Me系列来说,我们一般要将硬盘分成主引导扇区、操作系统引导扇区、FAT、DIR和Data等五部分(其中只有主引导扇区是唯一的,其它的随你的分区数的增加而增加)。

初买来一块硬盘,我们是没有办法直接使用的,你需要将它分区、格式化,然后再安装上操作系统才可以使用。就拿我们一直沿用到现在的Win9x/Me系列来说,我们一般要将硬盘分成主引导扇区、操作系统引导扇区、FAT、DIR和Data等五部分(其中只有主引导扇区是唯一的,其它的随你的分区数的增加而增加)。

主引导扇区

主引导扇区位于整个硬盘的0磁道0柱面1扇区,包括硬盘主引导记录MBR(Main Boot Record)和分区表DPT(Disk Partition Table)。其中主引导记录的作用就是检查分区表是否正确以及确定哪个分区为引导分区,并在程序结束时把该分区的启动程序(也就是操作系统引导扇区)调入内存加以执行。至于分区表,很多人都知道,以80H或00H为开始标志,以55AAH为结束标志,共64字节,位于本扇区的最末端。值得一提的是,MBR是由分区程序(例如DOS 的Fdisk.exe)产生的,不同的操作系统可能这个扇区是不尽相同。如果你有这个意向也可以自己去编写一个,只要它能完成前述的任务即可,这也是为什么能实现多系统启动的原因(说句题外话:正因为这个主引导记录容易编写,所以才出现了很多的引导区病毒)。

操作系统引导扇区

 OBR(OS Boot Record)即操作系统引导扇区,通常位于硬盘的0磁道1柱面1扇区(这是对于DOS来说的,对于那些以多重引导方式启动的系统则位于相应的主分区/扩展分区的第一个扇区),是操作系统可直接访问的第一个扇区,它也包括一个引导程序和一个被称为BPB(BIOS Parameter Block)的本分区参数记录表。其实每个逻辑分区都有一个OBR,其参数视分区的大小、操作系统的类别而有所不同。引导程序的主要任务是判断本分区根目录前两个文件是否为操作系统的引导文件(例如MSDOS或者起源于MSDOS的Win9x/Me的IO.SYS和MSDOS.SYS)。如是,就把第一个文件读入内存,并把控制权交予该文件。BPB参数块记录着本分区的起始扇区、结束扇区、文件存储格式、硬盘介质描述符、根目录大小、FAT个数、分配单元(Allocation Unit,以前也称之为簇)的大小等重要参数。OBR由高级格式化程序产生(例如DOS 的Format.com)。
文件分配表

 FAT(File Allocation Table)即文件分配表,是DOS/Win9x系统的文件寻址系统,为了数据安全起见,FAT一般做两个,第二FAT为第一FAT的备份, FAT区紧接在OBR之后,其大小由本分区的大小及文件分配单元的大小决定。关于FAT的格式历来有很多选择,Microsoft 的DOS及Windows采用我们所熟悉的FAT12、FAT16和FAT32格式,但除此以外并非没有其它格式的FAT,像Windows NT、OS/2、UNIX/Linux、Novell等都有自己的文件管理方式。

目录区

 DIR是Directory即根目录区的简写,DIR紧接在第二FAT表之后,只有FAT还不能定位文件在磁盘中的位置,FAT还必须和DIR配合才能准确定位文件的位置。DIR记录着每个文件(目录)的起始单元(这是最重要的)、文件的属性等。定位文件位置时,操作系统根据DIR中的起始单元,结合FAT表就可以知道文件在磁盘的具体位置及大小了。在DIR区之后,才是真正意义上的数据存储区,即DATA区。

数据区

  DATA虽然占据了硬盘的绝大部分空间,但没有了前面的各部分,它对于我们来说,也只能是一些枯燥的二进制代码,没有任何意义。在这里有一点要说明的是,我们通常所说的格式化程序(指高级格式化,例如DOS下的Format程序),并没有把DATA区的数据清除,只是重写了FAT表而已,至于分区硬盘,也只是修改了MBR和OBR,绝大部分的DATA区的数据并没有被改变,这也是许多硬盘数据能够得以修复的原因。但即便如此,如MBR/OBR/FAT/DIR之一被破坏的话,也足够咱们那些所谓的DIY老鸟们忙乎半天了……需要提醒大家的是,如果你经常整理磁盘,那么你的数据区的数据可能是连续的,这样即使MBR/FAT/DIR全部坏了,我们也可以使用磁盘编辑软件(比如DOS下的DiskEdit),只要找到一个文件的起始保存位置,那么这个文件就有可能被恢复(当然了,这需要一个前提,那就是你没有覆盖这个文件……)。

硬盘分区方式

我们平时说到的分区概念,不外乎三种:主分区、扩展分区和逻辑分区。

  主分区是一个比较单纯的分区,通常位于硬盘的最前面一块区域中,构成逻辑C磁盘。在主分区中,不允许再建立其它逻辑磁盘。

  扩展分区的概念则比较复杂,也是造成分区和逻辑磁盘混淆的主要原因。由于硬盘仅仅为分区表保留了64个字节的存储空间,而每个分区的参数占据16个字节,故主引导扇区中总计可以存储4个分区的数据。操作系统只允许存储4个分区的数据,如果说逻辑磁盘就是分区,则系统最多只允许4个逻辑磁盘。对于具体的应用,4个逻辑磁盘往往不能满足实际需求。为了建立更多的逻辑磁盘供操作系统使用,系统引入了扩展分区的概念。

  所谓扩展分区,严格地讲它不是一个实际意义的分区,它仅仅是一个指向下一个分区的指针,这种指针结构将形成一个单向链表。这样在主引导扇区中除了主分区外,仅需要存储一个被称为扩展分区的分区数据,通过这个扩展分区的数据可以找到下一个分区(实际上也就是下一个逻辑磁盘)的起始位置,以此起始位置类推可以找到所有的分区。无论系统中建立多少个逻辑磁盘,在主引导扇区中通过一个扩展分区的参数就可以逐个找到每一个逻辑磁盘。

  需要特别注意的是,由于主分区之后的各个分区是通过一种单向链表的结构来实现链接的,因此,若单向链表发生问题,将导致逻辑磁盘的丢失。

数据存储原理

  既然要进行数据的恢复,当然数据的存储原理我们不能不提,在这之中,我们还要介绍一下数据的删除和硬盘的格式化相关问题……

文件的读取

  操作系统从目录区中读取文件信息(包括文件名、后缀名、文件大小、修改日期和文件在数据区保存的第一个簇的簇号),我们这里假设第一个簇号是0023。

  操作系统从0023簇读取相应的数据,然后再找到FAT的0023单元,如果内容是文件结束标志(FF),则表示文件结束,否则内容保存数据的下一个簇的簇号,这样重复下去直到遇到文件结束标志。

文件的写入

  当我们要保存文件时,操作系统首先在DIR区中找到空区写入文件名、大小和创建时间等相应信息,然后在Data区找到闲置空间将文件保存,并将Data区的第一个簇写入DIR区,其余的动作和上边的读取动作差不多。

文件的删除

  看了前面的文件的读取和写入,你可能没有往下边继续看的信心了,不过放心,Win9x的文件删除工作却是很简单的,简单到只在目录区做了一点小改动――将目录区的文件的第一个字符改成了E5就表示将改文件删除了。

Fdisk和Format的一点小说明

  和文件的删除类似,利用Fdisk删除再建立分区和利用Format格式化逻辑磁盘(假设你格式化的时候并没有使用/U这个无条件格式化参数)都没有将数据从DATA区直接删除,前者只是改变了分区表,后者只是修改了FAT表,因此被误删除的分区和误格式化的硬盘完全有可能恢复……
闪存存储原理
  闪存(Flash Memory)是非挥发存储的一种,具有关掉电源仍可保存数据的优点,同时又可重复读写且读写速度快、单位体积内可储存最多数据量,以及低功耗特性等优点。 其存储物理机制实际上为一种新型EEPROM(电可擦除可编程只读存储)。是SCM(半导体存储器)的一种。早期的SCM采用典型的晶体管触发器作为存储位元,加上选择、读写等电路构成存储器。现代的SCM采用超大规模集成电路工艺制成存储芯片,每个芯片中包含相当数量的存储位元,再由若干芯片构成存储器。目前SCM广泛采用的主要材料是金属氧化物场效应管(MOS),包括PMOS、NMOS、CMOS三类,尤其是NMOS和CMOS应用最广泛。RAM(随机存取存储),是一种半导体存储器。必须在通电情况下工作,否则会丧失存储信息。RAM又分为DRAM(动态)和SRAM(静态)两种,我们现在普遍使用的PC机内存即是SDRAM(同步动态RAM),它在运行过程当中需要按一定频率进行充电(刷新)以维持信息。DDR DDR2内存也属于SDRAM。而SRAM不需要频繁刷新,成本比DRAM高,主要用在CPU集成的缓存(cache)上。PROM(可编程ROM)则只能写入一次,写入后不能再更改。EPROM(可擦除PROM)这种EPROM在通常工作时只能读取信息,但可以用紫外线擦除已有信息,并在专用设备上高电压写入信息。EEPROM(电可擦除PROM),用户可以通过程序的控制进行读写操作。闪存实际上是EEPROM的一种。一般MOS闸极(Gate)和通道的间隔为氧化层之绝缘(gate oxide),而Flash Memory的特色是在控制闸(Control gate)与通道间多了一层称为“浮闸”(floating gate)的物质。拜这层浮闸之赐,使得Flash Memory可快速完成读、写、抹除等三种基本操作模式;就算在不提供电源给存储的环境下,也能透过此浮闸,来保存数据的完整性。 Flash Memory芯片中单元格里的电子可以被带有更高电压的电子区还原为正常的1。Flash Memory采用内部闭合电路,这样不仅使电子区能够作用于整个芯片,还可以预先设定“区块”(Block)。在设定区块的同时就将芯片中的目标区域擦除干净,以备重新写入。传统的EEPROM芯片每次只能擦除一个字节,而Flash Memory每次可擦写一块或整个芯片。Flash Memory的工作速度大幅领先于传统EEPROM芯片。 MSM(磁表面存储)是用非磁性金属或塑料作基体,在其表面涂敷、电镀、沉积或溅射一层很薄的高导磁率、硬矩磁材料的磁面,用磁层的两种剩磁状态记录信息"0"和"1"。基体和磁层合称为磁记录介质。依记录介质的形状可分别称为磁卡存储器、磁带存储器、磁鼓存储器和磁盘存储器。计算机中目前广泛使用的MSM是磁盘和磁带存储器。硬盘属于MSM设备。ODM(光盘存储)和MSM类似,也是将用于记录的薄层涂敷在基体上构成记录介质。不同的是基体的圆形薄片由热传导率很小,耐热性很强的有机玻璃制成。在记录薄层的表面再涂敷或沉积保护薄层,以保护记录面。记录薄层有非磁性材料和磁性材料两种,前者构成光盘介质,后者构成磁光盘介质。ODM是目前辅存中记录密度最高的存储器,存储容量很大且盘片易于更换。缺点是存储速度比硬盘低一个数量级。现已生产出与硬盘速度相近的ODM。CD-ROM、DVD-ROM等都是常见的ODM。

目录
相关文章
|
2月前
|
存储 缓存 Windows
探秘磁盘的奥秘:物理结构、缓存和虚拟内存的作用
本文介绍了磁盘的物理结构、磁盘缓存和虚拟内存的重要性,并解释了它们在计算机系统中的作用。了解磁盘的物理结构可以帮助我们更好地理解数据的存储和访问过程,从而进行系统优化和性能提升。磁盘缓存和虚拟内存则能够提高数据读取速度和运行程序的能力。深入了解这些知识,将为您的计算机系统带来更好的性能和效率。
191 1
|
3月前
|
存储 移动开发 算法
大容量存储(涉及到的硬盘存取的原理)
大容量存储(涉及到的硬盘存取的原理)
52 0
|
5月前
|
存储 小程序 编译器
C/C++数据在内存中的存储方式
C/C++数据在内存中的存储方式
43 0
|
7月前
|
存储 缓存 移动开发
【软考学习6】计算机存储结构——局部性原理、Cache、主存地址单元、磁盘存取、总线和可靠性
【软考学习6】计算机存储结构——局部性原理、Cache、主存地址单元、磁盘存取、总线和可靠性
127 0
|
9月前
|
存储 Linux 虚拟化
带你读《存储漫谈:Ceph原理与实践》——3.1.1 块设备映射
带你读《存储漫谈:Ceph原理与实践》——3.1.1 块设备映射
|
10月前
|
存储 缓存 算法
计算机底层知识之内存和磁盘的关系&数据压缩
不读入内存就无法运行 推荐阅读指数 ⭐️⭐️⭐️⭐️ 磁盘缓存 推荐阅读指数 ⭐️⭐️⭐️ 虚拟内存 推荐阅读指数 ⭐️⭐️⭐️ 节约内存的编程方式(DLL文件) 推荐阅读指数 ⭐️⭐️⭐️⭐️ 磁盘的物理结构 推荐阅读指数 ⭐️⭐️⭐️⭐️ 文件以字节位单位保存 推荐阅读指数 ⭐️⭐️⭐️⭐️ RLE算法 推荐阅读指数 ⭐️⭐️⭐️⭐️ 哈夫曼算法 推荐阅读指数 ⭐️⭐️⭐️⭐️ 可逆压缩和非可逆压缩
119 0
计算机底层知识之内存和磁盘的关系&数据压缩
|
10月前
|
存储 缓存 NoSQL
缓存存储介质是什么?底层原理是什么?
缓存存储介质是什么?底层原理是什么?
132 0
|
11月前
硬盘的转速是干什么的?底层原理是什么?
硬盘的转速是干什么的?底层原理是什么?
123 0
|
存储 缓存 固态存储
磁盘存储和文件系统| 学习笔记
快速学习磁盘存储和文件系统
141 0
磁盘存储和文件系统| 学习笔记
|
存储 运维 IDE
linux运维存储结构与磁盘划分
存储结构与磁盘划分Linux命令介绍
97 1

相关产品

  • 云迁移中心