汪道之

有人的地方就有江湖

0%

病毒_基础_硬盘数据结构

硬盘分区

作用

建立硬盘数据结构(分区表、扩展分区等)

执行

分区划分以柱面为单位,一个柱面不能属于两个分区

主引导扇区(第一个扇区)

图示

image-20210508163959563

找到分区入口

分区表项的内容

image-20210508164230521

相对扇区数

相对于引导记录头部的偏移扇区数

MBR和EBR

主分区表中的四个分区表项,属于MBR

扩展分区的分区表项,属于EBR(Extended MBR)

EBR为了兼容MBR,完全复用了MBR的引导扇区格式,但前466个字节为0,后两个分区表项无效,结束标识55AA

主分区表中最后一个有效主分区记录指向的磁盘空间(主扩展分区)将用EBR划分,分为N个逻辑盘,形成EBR链

image-20210508165341507

整个图示

image-20210508165548520

定位主分区和扩展分区的关键区别

主分区:

  1. 偏移量是相对物理盘开始(MBR)的偏移,根据偏移得到的就是该分区的引导扇区和文件系统

扩展分区:

  1. 偏移量是相对于包含该分区的扩展分区开始处(EBR)而言

image-20210508170556297

硬盘引导过程

  1. 开机加电自检

    开机,CPU跳到FFFF:0000处,由该处的一条JMP指令跳到BIOS的自检程序(POST),自检通过后,加载引导程序(与操作系统无关的MBR,按用户在BIOS中指定顺序,硬盘,软盘,光驱或U盘等)

  2. 读主引导扇区

    将主引导扇区MBR读入到内存的0000:7C00,扫描主分区表,搜索激活分区,分区表项第一个字节为0x80表示激活分区

  3. 读激活分区引导扇区

    如果有多个激活分区或没有,报错结束。否则读取激活分区引导扇区到0000:7C00

  4. 操作系统引导代码引导系统并读取操作系统初始化文件

注意

  1. MBR中硬盘数据结构与操作系统无关
  2. 操作系统相关的引导代码在激活分区的引导扇区,而MBR的引导程序选择激活分区
  3. 以上步骤采用的是标准MBR,但硬盘也可以引导多系统,要引导多系统必须用专门的引导程序替换标准MBR,这样替换后的硬盘引导代码执行时可让用户选择启动哪个硬盘分区

X86实模式寻址

  1. 一个段64k,2字节表示
  2. 段地址:段内偏移 例如:0001:1234
  3. 省略段地址 相对DS数据段寄存器
  4. 为了方便,CS(指令段)、DS(数据段)、ES(附加段)、SS(栈段)设定为相同段
  5. 指令获取 CS:IP、栈操作 SS:SP
  6. 涉及内存的操作指令中没有段信息用DS

硬盘逻辑锁

最后一个分区表项又指向了新的MBR形成一个死锁

思考题

  1. 如何遍历FAT表获得一个文件所占的簇?
  2. 对于一个多层嵌套的文件,如何找到文件所对应的目录项?
  3. 如何找到硬盘的主分区和扩展分区?
  4. 简述硬盘引导的过程?