![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-15 09:10 |
共 47,813 主题排行 / 349,902 发帖 / 今日 0 篇 / 48,257 会员排行 |
| DOS疑难解答 & 问题讨论 (解答室) » 硬盘的分区链表结构 |
| 可打印版本 4,347 / 0 |
| 第1楼 ko20010214 | 发表于 2003-06-01 00:00 |
| 版主 发帖 1,628 积分 7,296 | |
|
硬盘的分区链表结构 发信人: 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· (本文采用S-Term文章拷贝脚本拷贝) ================================================== |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |