中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 硬盘的分区链表结构 上一主题 | 下一主题
ko20010214
版主




积分 7294
发帖 1628
注册 2002-10-16
状态 离线
『楼 主』:  硬盘的分区链表结构

发信人: 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文章拷贝脚本拷贝)
==================================================




ko20010214
=================================
大功告成,打个Kiss!
ko20010214@MSN.com
神州优雅Q300C
Intel CeleronM 370处理器 | 256MbDDR内存
40G硬盘 | USB2.0 | IEEE 1394
13.3 ' WXGA 宽屏(16:10) | COMBO光驱
10/100M网卡 | 四合一读卡器
2003-6-1 00:00
查看资料  发送邮件  发短消息 网志  OICQ (16959102)  编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: