操作系统 --- 如何启动 Boot

打开电源

  1. 内存中寻址0xFFFF0, 运行这里的代码检查RAM, 键盘,显示器等硬件
    默认 CS = 0xFFFF, IP = 0x0000, CS左移四位加IP等于 0xFFFF0
  2. 将硬盘中的0磁道0扇区加载到内存中的0x7c00处
    0磁道0扇区储存着操作系统的引导扇区 (boot扇区),从这里开始启动操作系统
  3. 设置 cs=0x07c0, ip = 0x0000:寻找0x7c00
    在这里插入图片描述

boot扇区: bootsect.s

1.bootsects.s 将操作系统分段读入: 首先读入setup.s, 然后读入system.s
在这里插入图片描述
在这里插入图片描述

setup扇区: setup.s

  • 在setup模块获取计算机基本信息,如光标位置,扩展内存大小,显卡参数等
    在这里插入图片描述
  • 此时计算机使用的是16位模式(计算机此时解释cs, ip结果为16位),大小远远不够
  • setup.s在最后通过mov ax, #0x0001 mov cr0,ax将计算机切换为32位模式(保护模式)
  • 然后通过jmpi 0, 8 跳转至system模块
    在这里插入图片描述
  • 切换之后通过GDT表解释cs, ip. 结果为32位模式
  • CS的作用变为查表+ip位移
    在这里插入图片描述

system扇区: system.s

  • system扇区初始化系统
  • system.s 通过makefile执行head.s
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 当执行到move_to_user_mode时系统启动成功, 开机完毕
  • main函数是死循环函数,计算运行时永远不会结束
    在这里插入图片描述
  • 这里是内存初始化,将内存分为每页为4k的map
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值