bios系统调用_如何自制一个简单的操作系统

6ae1c6453be5cecd575b394685a8c935.png

关于操作系统启动的最重要的一个概念就是Boot Sector,也就是引导扇区,通常指设备的第一个扇区,用于加载并转让处理器控制权给操作系统。

硬盘的0柱面、0磁头、1扇区称为主引导扇区,也叫主引导记录MBR,该记录占用512个字节,它用于硬盘启动时将系统控制权转给用户指定的、在分区表中登记了某个操作系统分区。MBR的内容是在硬盘分区时由分区软件写入该扇区的,MBR不属于任何一个操作系统,不随操作系统的不同而不同,即使不同,MBR也不会夹带操作系统的性质,具有公共引导的特性。但安装某些多重引导功能的软件或LINUX的LILO时有可能改写它,它先于所有的操作系统被调入内存并发挥作用,然后才将控制权交给活动主分区内的操作系统。

可以理解为:

pull oneself up by one's bootstraps

通过拉自己的鞋带把自己拽起,而对计算机来说,boot拉起的是整个操作系统。

那么如何编写一个可以完成引导的MBR帮助我们加载操作系统呢?

附上正在开发中的操作系统源代码 : https://github.com/CasterWx/AntzOS

一. MBR的构成

1.主引导程序代码,占446字节

硬盘的主引导程序代码是从偏移0000H开始到偏移01BDH结束的446字节;主引导程序代码包括一小段执行代码。启动PC 机时,系统首先对硬件设备进行测试,成功后进入自举程序INT 19H;然后读系统磁盘0柱面、0磁头、1扇区的主引导扇区MBR的内容到内存指定单元0:7C00 首地址开始的区域,并执行MBR程序段。

2. 磁盘签名

3.硬盘分区表DPT,占64字节

4.主引导扇区结束标志55AAH,为什么是55AA后面会解释。

二. MBR的功能

1.扫描分区表查找活动分区;
 2.寻找活动分区的起始扇区;
 3.将活动分区的引导扇区读到内存;
 4.执行引导扇区的运行代码。

如果主引导代码未完成这些功能,系统显示下列错误信息。

      Invalid partition table
      Error loading operating system
      Missing operating system

MBR是BIOS接力的第一棒,在他之后,会由分区引导扇区DBR接力,至于为什么不直接给DBR。那是因为BIOS大小有限,无法完成所有操作,在给DBR之前会通过MBR完成。

三. 关于MBR的解释

在BIOS自检等一系列工作完成后,要开始引导了。计算机会将硬盘0面0道1扇区512字节加载到07c00h(0000::7c00)处。

  1)为什么是0面0道1扇区?

这个可以理解为是规定,当Bios工作完成后会去将硬盘0面0道1扇区512字节进行加载。但是真实情况是根据“魔数”来确定的,魔数就是有特殊意义的数,更大作用是用来做标记,比如MBR就是在512个字节的最后两个字节填入 0x55 ,0xaa来进行标记的。放在第一个扇区是因为0面0道1扇区是磁盘最开始的地方,一开始检验出有 0x55 ,0xaa就直接开始加载。

  2)为什么是07c00h?

这个也可以当作是规定,在IBM文档中没有具体说明07c00h是为什么,但是在世界上第一台个人计算机诞生时,0

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值