标题: 硬盘的分区链表结构
[打印本页]
作者: ko20010214
时间: 2003-6-1 00:00
标题: 硬盘的分区链表结构
发信人: microbe (奇妙的微生物), 信区: DOS
标 题: 硬盘的分区链表结构
发信站: BBS 水木清华站 (Wed Sep 17 14:09:05 1997)
【 在 watch (乾坤一剑) 的大作中提到: 】
: 各个分区表是以琏表方式存放的。
: 且每一个分别在各自的分区的首善区?
: 可以用DEBUG命令先调出第一个,在利用本分区大小来算出下一个分区位置。
: 以此类推(虽麻繁乐点〕可以都查出来!!
: 我以前做过。
: 也可以用NORTON的DISKEDIT,。
不用算。一个表项的标志字节如果是06(表示扩展分区)的话,它就含有指向
下一分区表的指针。这些指针在硬盘上形成一个链表结构。
以典型的只含有DOS主分区和扩展分区的硬盘为例,假设共有1000个柱面,第一
分区(即逻辑C盘)为500个柱面,第一扩展分区(逻辑D盘)为200个柱面,
第二扩展分区(逻辑E盘)为300个柱面,那么第一个分区表即在0柱0头1扇区
的那个表有两个表项:第一个表项的标志是BIGDOS(05),当然是可引导的,指
向C盘的引导区,在0柱1头1扇区;第二个表项的标志是扩展分区(06),指向500
柱0头1扇区,即第二个分区表的地址。这个分区表也含有两个表项:第一个表项
也是BIGDOS,指向500柱1头1扇区即D盘的引导区;第二个表项又是扩展分区,指
向第三个分区表的地址,在700柱0头1扇区。这也就是最后一个分区表。在这个
分区表里,只有一个表项,标志是BIGDOS,指向E盘的引导区,在700柱1头1扇区。
总之,在只有DOS分区的情况下,如果硬盘有N个逻辑盘符,就有N个分区表与之对应。
除了最后一个分区表外,都有两个表项。一个指向真正的逻辑盘的引导区(一般在
此分区表的反面,即相同柱面的1头1扇区),一个指向下一个分区表。分区表总是
位于0头1扇区,而具体逻辑盘的引导区位于1头1扇区。
无论在硬软盘的启动方式下,DOS的IO.SYS中的一段程序都要搜索这个链表来建立
逻辑驱动器。可以看到,如果这个链表出现问题,引导过程就有可能失败。比如,
如果某个一个分区表不含有指向某个逻辑盘的引导区的表项,而只含有一个标志
为扩展分区并指向自身的表项,那么DOS将永远查找不到正确的引导区,并无限循
环下去。这就是KV300炸弹所利用的地方。
--
走过天涯路 终究还是回头
看尽花似海 如雪落
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 202.38.72.18]
(本文采用S-Term文章拷贝脚本拷贝)
==================================================