第十四章 磁盘存储原理
不管是软磁盘还是硬磁盘存储器,其存储部件都是由涂有磁性材料的圆形基片组成的,由一圈圈封闭的同心圆组成记录信息的磁道。盘面上的磁道分布见图。
磁盘是由许多磁道组成的,虽然每个磁道长度不一样,但每道磁道的容量都是相同的,因而它们的信息存储密度不一样。每个磁道又被划分成多个扇区,扇区是磁盘存储信息的最小物理单位。通常对磁盘进行的所谓格式化操作,就是在磁盘上划分磁道和扇区。刚出厂的磁盘上没有这些划分,所以必须经过格式化后才能使用。
磁盘的存储原理是由写入电路将经过编码后的,0”和,1”
脉冲信号,通过磁头转变为磁化电流,使软盘上生成相应的磁元,这样便将信息记录在软盘上。读出时,软盘上的磁元在磁头上产生感应电压,再经读写电路还原出,0 "和 "1"数字信息,送到计算机中。
第十四章 磁盘存储原理第十四章 磁盘存储原理
主引导扇区
主引导扇区位于整个硬盘的 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之一被破坏的话,需要提醒大家的是,如果你经常整理磁盘,那么你的数据区的数据可能是连续的,这样即使 MBR/FAT/DIR全部坏了,我们也可以使用磁盘编辑软件(比如 DOS下的
DiskEdit),只要找到一个文件的起始保存位置,那么这个文件就有可能被恢复(当然了,这需要一个前提,那就是你没有覆盖这个文件 …… )。
第十四章 磁盘存储原理
硬盘分区方式
我们平时说到的分区概念,不外乎三种,主分区、扩展分区和逻辑分区。主分区是一个比较单纯的分区,通常位于硬盘的最前面一块区域中,构成逻辑 C磁盘。在主分区中,不允许再建立其它逻辑磁盘。
扩展分区的概念则比较复杂,也是造成分区和逻辑磁盘混淆的主要原因。由于硬盘仅仅为分区表保留了 64个字节的存储空间,而每个分区的参数占据 16个字节,故主引导扇区中总计可以存储 4个分区的数据。操作系统只允许存储 4个分区的数据,如果说逻辑磁盘就是分区,则系统最多只允许 4个逻辑磁盘。对于具体的应用,4个逻辑磁盘往往不能满足实际需求。为了建立更多的逻辑磁盘供操作系统使用,系统引入了扩展分区的概念。
第十四章 磁盘存储原理
所谓扩展分区,严格地讲它不是一个实际意义的分区,它仅仅是一个指向下一个分区的指针,这种指针结构将形成一个单向链表。这样在主引导扇区中除了主分区外,仅需要存储一个被称为扩展分区的分区数据,通过这个扩展分区的数据可以找到下一个分区(实际上也就是下一个逻辑磁盘)的起始位置,以此起始位置类推可以找到所有的分区。无论系统中建立多少个逻辑磁盘,在主引导扇区中通过一个扩展分区的参数就可以逐个找到每一个逻辑磁盘。
需要特别注意的是,由于主分区之后的各个分区是通过一种单向链表的结构来实现链接的,因此,若单向链表发生问题,
将导致逻辑磁盘的丢失。
第十四章 磁盘存储原理
文件的读取
操作系统从目录区中读取文件信息(包括文件名、
后缀名、文件大小、修改日期和文件在数据区保存的第一个簇的簇号),我们这里假设第一个簇号是
0023。
操作系统从 0023簇读取相应的数据,然后再找到
FAT的 0023单元,如果内容是文件结束标志( FF),
则表示文件结束,否则内容保存数据的下一个簇的簇号,这样重复下去直到遇到文件结束标志。
第十四章 磁盘存储原理
文件的写入
当我们要保存文件时,操作系统首先在 DIR区中找到空区写入文件名、大小和创建时间等相应信息,
然后在 Data区找到闲置空间将文件保存,并将 Data
区的第一个簇写入 DIR区,其余的动作和上边的读取动作差不多。
文件的删除
Win9x的文件删除工作却是很简单的,简单到只在目录区做了一点小改动。 Delate将目录区的文件的第一个字符改成了 E5就表示将改文件删除了。