【操作系统真象还原】03 编写MBR分区(一)输出信息

本文介绍了操作系统引导流程,重点讲解了MBR(主引导记录)的编写,包括MBR的任务、中断概念及其作用。通过示例,解释了如何使用中断打印字符串,并详细阐述了中断向量表的工作原理。最后,演示了如何将MBR代码编译写入镜像并在Bochs模拟器中运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引导操作系统的流程

在按下计算机电源键的瞬间,CS、IP寄存器就会被强制初始化为 BIOS(基本输入输出系统)的起始地址(CS:IP = 0xF000:FFF0)。BIOS会做一系列的初始化(如:建立 中断向量表 )和检查的工作。
其中最后一个检查工作就是:校验启动盘中位于 0盘0道1扇区的内容。如果此扇区末尾的两个字节分别是魔数 0x55, 0xaa, BIOS便认为此扇区中确实存在可执行的程序(此程序便是久闻大名的主引导记录 MBR ),便加载到物理地址 0x7c00 ,随后跳转到此地址,继续执行。
因为 MBR 只占一个扇区即 512 字节,而由于魔数 0x55, 0xaa 的存在,MBR 实际上能利用的空间只有 510 个字节,所以能做的工作极其有限,所以真正引导操作系统内核的工作是交由位于磁盘上的 bootloader 完成的。MBR 的主要任务就是读取磁盘上的 bootloader 以及输出一些(错误)信息。

编写MBR

任务总览

从上面,我们可以得知,MBR的大小为 512 个字节,最后两个字节为 0x55, 0xaa。MBR要 输出信息读取硬盘 。根据学习一门编程语言的惯例,我们先来实现 输出信息 这一步(其实是因为实现输出信息相对简单)。

中断

在说 “ 为什么要谈到中断?”之前,先来说一下什么是中断。

中断是什么?

中断,英文是 interrupt,直译过来就是:打扰、打断的意思。在计算机里就是指一直在埋头苦干的cpu被一种信号打断的手头上的工作,然后去查询 中断向量表 ,中断向量表里面记录着处理不同的中断信号的程序的地址,cpu查到之后就会跳转到那个地址执行,执行完成后就会跳转回去,继续之前的工作。

会产生中断的情况

如:突然断电就会由 硬件 通过连接cpu的引脚发出中断信号(这种由硬件产生的中断信号也被称为 硬中断 )、通过程序指令 int 中断号 发出中断信号(这种由软件产生的中断信号也被称为 软中断 )。
而硬中断是直接通过连接cpu的引脚发往cpu的,优先级最高,毕竟硬件和cpu有一腿嘛~(这一腿指的是引脚)。

为什么要用中断?

前面又说,cpu在接收到中断信号之后,会做出相应的反应。其中就有很

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值