荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: zzt (我命由我不由天), 信区: Program
标  题: 磁盘的地址结构及应用
发信站: BBS 荔园晨风站 (Sun May 23 16:51:11 1999), 转信


发信人: mayanyi (▓▓※中坚分子※▓), 信区: Program
标  题: 磁盘的地址结构及应用
发信站: 网易虚拟社区 (Wed May 19 01:40:56 1999), 站内信件

     磁盘的地址结构及应用

    磁盘包括软盘和硬盘,是微机的重要设备。微机中的绝大多数信息连同微机
的操作
系统都是装在磁盘上,因此,熟悉磁盘的地址结构是掌握微机系统和了解操作系
统的必
由之路。磁盘的地址结构要比微机内存地址复杂,使人们难于纵观全貌,因为它
的目的
是要使磁盘能独立于软件,而使两者都有充分的发展余地。同时,更重要的是满
足微机
的应用需要。磁盘地址的最基本单位是扇区,根据扇区的排列方法,磁盘的地址
有三种
形式,即磁盘的物理地址、逻辑地址、簇地址。三种地址共存,各有各的妙用。


一、物理地址
    磁盘物理地址是由磁头号、磁道号、扇区号组成。磁头号(又称磁面号)从零
号排起
,磁道号(在磁盘中也称柱面)从零号排起,扇区号从1号排起。
    为了便于说明,建立一个磁盘的立体空间是非常必要的,如图1所示。
    这是磁盘模型,由两个磁面(每磁面有三个磁道,每个磁道有10个扇区)构成
。每一
个磁面上有一个磁头,磁头可在磁道间移动,磁盘又可相对于磁头旋转,每个扇
区都能
在磁头处经过,从而形成了磁盘物理地址。如物理地址为0磁面,1磁道,2扇区,
就是图
中标识M标记的扇区。物理地址的结构参数一般都在使用前在磁盘分区时就记录在
磁盘上
的分区表中,磁盘的分区表在0磁头、0磁道、1扇区,可以通过微机判读。
      例1:试读AST286P-140微机C磁盘的分区表。
       解:首先将有DEBUG文件的软盘装入A盘中,然后操作。
        A>DEBUG
        -A
        4FAA:0100 MOV  DL,80
        4FAA:0102 MOV  DH,00
        4FAA:0104 MOV CH,00
        4FAA:0106 MOV CL,01
        4FAA:0108 MOV BX,1000
        4FAA:010B MOV AL,01
        4FAA:010D MOV AH,02
        4FAA:010F INT 13
        4FAA:0111 INT 3
        -g=100 显示寄存器情况
        -D 1000
4FAA:1000 X  X  X  X  X  X  X  X-X  X  X  X  X  X  80  01
4FAA:1010 01  00  04  03  9C  48  1C  00-00  00  D4  FF  00  00  00
00
+FAA:1020 81 49 05 03 9C E7 F0 FF - 00 00 90 45 00 00 X X
    分区表共有16个字节。例中分区表由第4FAA:100E字节开始,第一个字节为
80,意
为C盘是引导盘;第六个子节为03,表明C盘拥有4个磁头分别为0、1、2、3号;第
九个
字节为1C,表示每个磁道有28(ICH)个扇区;第七个字节的高两位与第八个字节组
成10
位的二进制数1001001000,其十进制数为584,表明磁盘拥有的磁道数为584;第
五个字
节04,表示每簇空间在文件中占两个字节(此项将在后文说明)。
    顺便指出,磁盘的引导模块及物理地址结构是在磁盘分区时形成的。根据这
个道理
,就可以在保留磁盘信息的条件下,以重新复制引导模块与分区表的方法清除影
响微机
正常工作的干扰内容。

二、逻辑地址
    按DOS的逻辑顺序为磁盘扇区编号,从0号开始至所有DOS可用的扇区,每个扇
区都
有一个唯一的逻辑编号__逻辑地址。前面提过的磁盘立体空间模型,若以逻辑地
址表示
则如图2所示。
    图中磁盘逻辑扇区的起始地址__0扇区是物理地址的0磁头、0磁道、1扇区。
图1与
图2两种地址扇区相互对应,可以互相转换,公式如下:
    已知逻辑地址,求相应的物理地址:
       磁道号=逻辑地址÷(扇区数×磁头数)+起始地址磁道号
       磁头号=(逻辑地址-扇区数×磁道号×磁头数)÷扇区数+起始地址头号

       扇区号=逻辑地址-扇区数×磁道号×磁头数-扇区数×磁头号+起始地址
扇区号
    已知物理地址,求相应的逻辑地址:
       逻辑地址=(物理地址扇区号-起始地址扇区号)+(物理地址磁头号-起始地
址磁头
       号)×扇区数+(物理地址磁道号-起始地址磁道号)×扇区数×磁头数

       (说明:公式中的磁头数、扇区数分别为磁盘结构中的磁头数和扇区数目
;公式
        中除法的商只留整数部分而舍去所有小数;没特别注明的逻辑地址均采
用十进
        制数。)
        例2:磁盘参数如图1,已知逻辑地址为22扇区,试求其物理地址。
        解:
        磁道号=22÷(10×2)+0=1
        磁头号=(22-10×1×2)÷10+0=0
        扇区号=22-10×1-10×0+1=3
        答:逻辑扇区22的物理地址为0磁头、1磁道、3扇区。
        例3:磁盘结构如图2,已知物理地址为0磁头、1磁道、2扇区,试求其逻
辑地
             址。
        解:逻辑地址=(2-1)+(0+0)×10+(1+0)×10×2=21
        答:逻辑地址为21扇区。
        在软盘上,全部空间都分给了DOS使用,所以全部扇区都有逻辑地址。在
硬盘
        上,除大部分扇区分给DOS外,还留有一小部分扇区没有被DOS编号,只
有物理
        地址没有逻辑地址。关于逻辑扇区在实际磁盘中的分布情况,都记录在
分区表
        中。如例1中,分区表指明了AST286P一140机C盘的逻辑扇区开始地址是
1磁头、
        0磁道、1扇区(第2、3、4字节:010100),逻辑扇区的终止地址为3磁头
,584
        磁道,28扇区(第6、7、8字节:039C48)。例中第101E字节开始是D盘分
区表的
        16个字节记录项,留给读者自行判读。判读结果列于下表:
        AST286P一硬盘分区表磁 盘      引导区  DOS分区起始地址 终止地址
        C       有      1磁头 0磁道 1扇区       3磁头 584磁道 28扇区
        D       无      0磁头 585磁道 1扇区     3磁头 743磁道 28扇区

三、簇地址
    磁盘文件以簇为单位进行存储,文件地址以簇来表示。簇是由一定数目的扇
区组成
,如常用的5.25英寸软盘每簇是由两个扇区构成,10MB硬盘每簇含8个扇区。每簇
都有簇
号,簇号从0号开始,并按逻辑顺序排列,形成簇地址系统。
    DOS操作系统把存储的文件名和文件在磁盘上的起始簇地址等信息列在磁盘的
文件
目录表(FDT)中。另外,又考虑到磁盘作为微机的输入输出设备,其文件会被经常
地增
、删或编辑,文件存储空间具有变动的特点,因此,为了能有效地利用磁盘空间
,每簇
的簇号都列入文件分配表(FAT)中。FDT与FAT两表相互配合,准确又全面地表示了
簇地址
占有情况。
    在FAT中,每簇都占有一个登记项,每簇的登记项在表中都有固定的位置。文
件存
储可能占有一个以上的簇空间,那么在FDT中记入它的起始簇号,在FAT中起始簇
的登
记项中记入与起始簇相链的簇号。在相链簇位置的登记项中又记录着下一个相链
的簇
号,直到文件的最后一簇在该簇登记项中记录着文件结尾的符号为止,从而形成
了文件
的由起始簇号链接一些簇号,直至结尾簇的簇号链。
    例4:有两个文件,文件长度为3簇,占用簇2、3、6;文件2长度为4簇,占用
簇4、
         5、7、8,试绘两个文件的簇号链图(见图3)。
        簇B号    0    1    2    3    4    5    6    7    8    9    A
        登记号··           3    6    5    7   尾    8    尾   空   空
      文件名    起始簇
        文件1        2
        文件2        4
    由以上不难看出,在FDT、FAT两表配合下,簇号链(即簇地址)的优越性能有
效地利
用磁盘空间。特别是当删除旧文件建立新文件时,能将零乱散落在不同地址的空
簇顺序
地链成新文件的簇号链。
    关于FAT、FDT表在磁盘上的地址等参数记录在参数表中,参数表位于逻辑0扇
区的
后半部,可由微机判读。参数表的格式见图4。
    第1-5字节  每扇区字节数     每簇扇区数      主导模块分区表所占扇区数
    第6-10字节  FAT表数目           FDT所含目录数目     逻辑扇区总数
    第11-15字节  磁盘标志      每个FAT所占扇区数        每磁道所含扇区数
    第16-19字节  磁头数         磁盘保留扇区数
     图4
     《注》磁盘标志:360KB软盘为FD,1.2MB及720KB软盘为F9,硬盘为F8。

       例5:试读AST286P一140机C盘的参数表。
    A>DEBUG
       -L 1000 2 0 1 读C盘 0扇区 1个扇区内容
       -D 1000
4FAA:1000 EB  34  90  4D  53  44  4F  53--33  2E  33  00  02  04  01
 00
4FAA:1010 02  00  02  X  X  X  40  00--X  XX  X  X  X  X  X
    第100B字节开始是参数表,参数表共有19个字节,表的第一字节,第二字节为
0002,
表示0200H,十进制为512,即每扇区有512字节。第三字节为04,表示每簇由4个
扇区组
成。第四、五字节为0100,即0001H,表示FAT表从逻辑地址1扇区开始。第六字节
为02,
表示有两个FAT表。第七、八字节为0002,表示0200H即512,意为FDT(根目录)表
可容纳
512个目录。在DOS中规定每目录项为32个字节,由此可算出FDT表的长度占32个扇
区。
第十二、十三两个字节为4000,表示0040H即64,意为每个FAT表占64个扇区。
从参数
表的内容可知,FAT表从逻辑.地址1扇区开始,占64个扇区,两个FAT表共占128个
扇区。
FAT表下面紧接FDT表,所以FDT表应从逻辑地址129扇区开始,占32个扇区。FDT表
下紧
接着文件区,所以文件区应从逻辑地址161扇区开始。掌握了参数表数据就可以判
读FAT
、FDT两表的信息。
    例6:试读AST286P__140机C盘的FAT表。
    A>DEBUG
      -L 1000 2 1 1 读C盘 0扇区  1个扇区内容
4FAA:1000 F8  FF  FF  FF  03  00  04  00-05  00  06  00  07  00  08
00
4FAA:1010 09  00  0A  00  0B  00  0C  00-0D  00  FF  FF  0F  00  10
00
4FAA:1020 11  00  12  00  13  00  14  00-15  00  16  00  17  00  18
00
4FAA:1030 19  00  1A  00  1B  00  1C  00-FF  FF  1E  00  1F  00  20
00
    FAT从第1000字节开始,表中每2个字节位置(按顺序)与0簇开始编号的各簇空
间相
对应,而字节中的内容便是该簇登记项的内容。表中第五、六两字节表示第2簇链
第3簇
。第七、八两字节表示第3簇链第4簇。按登记项的内容可逐次写出簇号链。登记
项中,
0000表示空簇,FFFF表示结束簇(文件区),F7FF表示坏簇(不能用)。第一至第四
字节的
登记为F8FFFFFF,表示开始的两簇(第0、1簇)是保留簇,而F8则是硬盘的标志符
。
    例7:试读AST286P一140机C盘FDT表。
    A>DEBUG
      -L 1000 2 41 1 读C盘 65扇区 1个扇区内容
4FAA:1000 49  4F  20  20  20  20  20  20-53  59  53  27  00  00  00
00
4FAA:1010 00  00  00  00  00  00  FD  6E-FA  10  02  00  3C  58  00
00
4FAA:1020 4D  53  44  4F  53  20  20  20-53  59  53  27  00  00  00
00
4FAA:1030 00  00  00  00  00  00  62  75-6B  10  0E  00  B0  75  00
00
     文件目录表从1000字节开始,第一至第八字节是文件名,第九、十、十一字
节是
扩展名,以ASCII码表示,其中20表示空字节。第十二字节是文件属性:01表示只
读文
件,04表示系统文件,20表示已被写入或修改过的存档文件,08表示卷标(文件)
,10
表示子目录文件(在子目录所在的地址有子目录的目录表)。上述只是单一属性的
代码,
实际文件可能同时具有多种属性,其代码则以各属性代码的和来表示。如文件属
性27,
表明同时具有只读、隐含系统和存档属性的文件。第十三至第二十二字节是保留
字节。
第二十三至二十六字节分别表示文件最后形成的时间和日期。第二十七、二十八
字节是
文件起始簇地址。第二十九至三十字节为以字表示的文件长度。将例6、7两表(F
DT、FAT
)结合起来,便能得到存储磁盘文件的簇号链地址结构,如图5所示。
 簇号    00  01 02  03  04  05  06  07  08  09  0a  0b  0c  0d    0e
lc
 登记项  f8  ff 03  04  05  06  07  08  09  0a  0b  0c  0d  ffff  lc  _ fff
f  FDT
 文件名 起始簇
 ID.SYS 02
 HSDOS.SYS 0e
 图5
  簇地址  逻辑地址  头道扇区  物理地址  映象图          所占扇区
  001     主引导模块(204字节)分区表
  (16字节)占1个扇区             28
  OH         101     磁盘保留区
  1H                 DOS版本参数表(19字节)DOS导块  1
  4H(65)       102     FAT                          64
  81H(129)             FAT                           64
  A1H(161)             FDT(每项32字节)              32
  A9H(169)             DOS留用区占8个扇区
  3FF5H  FFD$H                文件区                        65331
 图6 AST286P一140型微机C盘映象图
    图中两文件的登记项都是递次排列的,是由于这两个文件是系统最先排列的
,当时
磁盘是空盘,所以才这样排列。而目录表后面的文件排列将另当别论,但“见缝
插针”
的原则却适用于整个排列。
    簇地址与逻辑地址的换算
    公式:逻辑地址=(簇号-2)×(每簇扇区数)+文件区首地址
  例8:求上例中MSDOS.SYS文件在磁盘中的逻辑地址。
        解:由例5可知文件区首址(在文件表中查得)为A1H(161)。由上列FDT表
查得
            MSDOS.SYS的起始簇号为OEH(14),则:
        逻辑地址(扇区号)=(14-2)×4+161=209
        即D1H逻辑扇区。
        答:文件的逻辑地址为D1H。

四、小结
    磁盘的三种地址系统各有各的用途,谁也代替不了谁。DOS通过簇地址体系可
达到
对不同结构的磁盘实现统一的管理和使用的目的,从而使DOS的应用更广泛,使磁
盘的
发展更为便利。DOS以物理地址体系与磁盘驱动系统打交道,实现磁盘与微机间的
数据
传输。使用中,三种地址是一体的,互相转换交叉使用,在低级和高级的各种层
次上以
高效、通用的方法完成了微机与磁盘的互联。磁盘地址的形式与方法是值得在微
机与外
设的应用、设计中借鉴的。
    最后,根据本文的方法给出具体机型AST286P一140机的C盘映象图(见图6),
这将对
磁盘的使用和维护很有用。同时,这种实机分析方法也将为其他磁盘的运用做参
考。

--
m;31m※ 来源:.网易虚拟社区 http://club.netease.com.[FROM: 202.102.65.183]m
--
m;34m※ 转寄:.网易 BBS bbs.netease.com.[FROM: bbs.huizhou.gd.cn]m
..


--



日出东方,唯我不败;
    天上地下,唯我独尊。

※ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.1.143]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店