- 1
- 0
- 约1.02万字
- 约 51页
- 2022-09-07 发布于上海
- 举报
操作系统的启动;2.1.1 系统引导过程简介;(8)将活动分区的第一个扇区读入内存地址0000:7c00 处。
(9)检查 (WORD) 0000:7dfe 是否等于 0xaa55, 若不等于则显示 Missing Operating System 然后停止, 或尝试软盘启动。
(10)跳转到0000:7c00 处继续执行特定系统的启动程序。
(11)启动系统。
以上步骤中 2,3,4,5 步是由 BIOS 的引导程序完成。 6,7,8,9,10步由MBR中的引导程序完成。一般多系统引导程序 (如 Smart Boot Manager、BootStar、PQBoot 等)都是将标准主引导记录替换成自己的引导程序, 在运行系统启动程序之前让用户选择要启动的分区。而某些系统自带的多系统引导程序 (如LILO,NT Loader 等)则可以将自己的引导程序放在系统所处分区的第一个扇区中,在 Linux中即为是两个扇区的SuperBlock。
注:以上各步骤中使用的是标准 MBR,其他多系统引导程序的引导过程与此不同。;2.1.2 硬盘结构;2. 基本 INT 13H 调用简介
BIOS int 13H 调用是 BIOS 提供的磁盘基本输入输出中断调用, 它可以完成磁盘(包括硬盘和软盘)的复位、读写、校验、定位、诊断和格式化等功能。
它使用的是 CHS 寻址方式, 因此最大只能访问 8 GB 左右的硬盘 ( 本文中如不作特殊说明, 均以 1M = 1048576 字节为单位)。
3. 现代硬盘结构简介
在老式硬盘中, 由于每个磁道的扇区数相等, 所以外道的记录密度要远低于内道, 因此会浪费很多磁盘空间。为了进一步提高硬盘容量,人们改用等密度结构生产硬盘。 也就是说, 外圈磁道的扇区比内圈磁道多。 采用这种结构后, 硬盘不再具有实际的3D参数, 寻址方式也改为线性寻址, 即以扇区为单位进行寻址。为了与使用3D寻址的老软件兼容 (如使用BIOS INT13H接口的软件), 在硬盘控制器内部安装了一个地址翻译器, 由它负责将老式3D参数翻译成新的线性参数。不同的工作模式(如LBA、LARGE、NORMAL)对应不同的3D参数。;4. 扩展 INT 13H
虽然现代硬盘都已经采用了线性寻址,但是由于基本INT 13H 的制约,使用 BIOS 的INT13H 接口的程序(如 DOS 等)还只能访问8G以内的硬盘空间。为了打破这一限制, Microsoft 等几家公司制定了扩展 INT 13H 标准(Extended INT13H), 采用线性寻址方式存取硬盘,突破了8 G 的限制,并还加入了对可拆卸介质 (如活动硬盘) 的支持。;2.1.3 引导扇区;Boot Sector 的具体结构如下图所示:
;2. 分区表结构简介
分区表由四个分区项构成, 每一项的结构如下:
BYTE State: 分区状态, 0 = 未激活, 0x80 = 激活 (注意此项)
BYTE StartHead: 分区起始磁头号
WORD StartSC : 分区起始扇区和柱面号, 底字节的低6位为扇区号,高2位为柱面号的第 9,10 位, 高字节为柱面号的低 8 位
BYTE Type: 分区类型, 如 0x0B = FAT32, 0x83 = Linux 等,00 表示此项未用
BYTE EndHead: 分区结束磁头号
WORD EndSC : 分区结束扇区和柱面号, 定义同前
DWORD Relative : 在线性寻址方式下的分区相对扇区地址(对于基本分区即为绝对地址)
DWORD Sectors : 分区大小 (总扇区数); 在 DOS / Windows 系统下, 基本分区必须以柱面为单位划分( Sectors * Heads 个扇区), 如对于 CHS 为 764/256/63 的硬盘, 分区的最小尺寸为 256 * 63 * 512 / 1048576 = 7.875 MB。
由于硬盘的第一个扇区已经被引导扇区占用, 所以一般来说, 硬盘第一个磁道(0头0道)的其余 62 个扇区是不会被分区占用的。 某些分区软件甚至将第一个柱面全部空出来。
3. 扩展分区
由于主分区表中只能分四个分区, 无法满足需求, 因此设计了一种扩展分区格式。 基本上说, 扩展分区的信息是以链表形式存放的, 但也有一些特别的地方。 ; 首先, 主分区表中要有一个基本扩展分区项, 所有扩展分区都隶属于它,也就是说其他所有扩展分区的空间都必须包括在这个基本扩展分区中。 对于DOS / Window
原创力文档

文档评论(0)