趣谈 Linux 操作系统
刘超
前网易杭州研究院云计算技术部首席架构师
85458 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 72 讲
趣谈 Linux 操作系统
15
15
1.0x
00:00/00:00
登录|注册

07 | 从BIOS到bootloader:创业伊始,有活儿老板自己上

启动过程
boot.img和core.img
安装启动程序
配置系统启动选项
解压缩kernel.img
打开Gate A20
启动分页
启用分段
Grub2
启动盘特点
显示结果
中断向量表和中断服务程序
硬件检查
通过grub2启动Ubuntu和CentOS
研究grub2的命令和配置
从实模式切换到保护模式
bootloader时期
初期工作
ROM和BIOS
CPU执行指令
课堂练习
BIOS时期

该思维导图由 AI 生成,仅供参考

有了开放的营商环境,咱们外包公司的创业之旅就要开始了。
上一节我们说,x86 作为一个开放的营商环境,有两种模式,一种模式是实模式,只能寻址 1M,每个段最多 64K。这个太小了,相当于咱们创业的个体户模式。有了项目只能老板自己上,本小利微,万事开头难。另一种是保护模式,对于 32 位系统,能够寻址 4G。这就是大买卖了,老板要雇佣很多人接项目。
几乎所有成功的公司,都是从个体户模式发展壮大的,因此,这一节咱们就从系统刚刚启动的个体户模式开始说起。

BIOS 时期

当你轻轻按下计算机的启动按钮时,你的主板就加上电了。
按照我们之前说的,这时候你的 CPU 应该开始执行指令了。你作为老板,同时也作为员工,要开始干活了。可是你发现,这个时候还没有项目执行计划书,所以你没啥可干的。
也就是说,这个时候没有操作系统,内存也是空的,一穷二白。CPU 该怎么办呢?
你作为这个创业公司的老板,由于原来没开过公司,对于公司的运营当然是一脸懵的。但是我们有一个良好的营商环境,其中的创业指导中心早就考虑到这种情况了。于是,创业指导中心就给了你一套创业公司启动指导手册。你只要按着指导手册来干就行了。
计算机系统也早有计划。在主板上,有一个东西叫 ROM(Read Only Memory,只读存储器)。这和咱们平常说的内存 RAM(Random Access Memory,随机存取存储器)不同。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

这篇文章以生动的比喻方式,将计算机系统启动过程比作创业公司的发展历程,从BIOS到bootloader详细介绍了计算机启动的技术细节。作者以切换到保护模式为例,比喻为创业公司切换到老板角色,生动形象地解释了计算机启动的基本原理和关键步骤。文章通过比喻的方式,让读者能够快速了解计算机启动过程的复杂性,同时提到了课堂练习,鼓励读者深入学习和实践。整体而言,本文通过生动的比喻和技术细节的介绍,为读者提供了一个全面了解计算机启动过程的入门指南。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《趣谈 Linux 操作系统》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(140)

  • 最新
  • 精选
  • Luke
    这部分的实验,大家可以去github看我的工程哈,icecoobe/oslab,已经进入保护模式了,还有很远的路,一起加油!

    作者回复: 牛

    2019-04-11
    63
  • Luke
    看到很多人留言需要资料,我来推荐一本新书《一个64位操作系统的设计与实现》,如果你有汇编基础,很感兴趣底层的细节,可以看李忠的那本《从实模式到保护模式》

    作者回复: 赞,看来我得收集一下书名,统一推荐给大家

    2019-04-11
    3
    60
  • Socrakit
    查了一些资料,关于 Gate A20 我的理解是: - 8086 地址线20根 -> 可用内存 0 ~ FFFFF 寄存器却是16位,寻址模式为 segment(16位):offset(16位), 最大范围变成 0FFFF0(左移了4位) + 0FFFF = 10FFEF 后果是多出来了 100000 ~ 10FFEF (访问这些地址时会回绕到 0 ~ FFEF) - 80286 开始地址线变多,寻址范围大大增大,但是又必须兼容旧程序,8086在访问 100000 ~ 10FFEF时会回绕,但是 80286 不会 ,因为有第21根线的存在,会访问到实际的 100000 ~ 10FFEF 地址的内存。 于是 Gate A20 开关就诞生了,它的作用是: - 实模式下 (存在的唯一理由是为了兼容8086): - 打开 -> 寻址100000 ~ 10FFEF会真正访问 - 关闭-> 回绕到 0 ~ FFEF - 保护模式下: - 打开 -> 可连续访问内存 - 关闭 -> 只能访问到奇数的1M段,即 00000-FFFFF, 200000-2FFFFF,300000-3FFFFF…

    作者回复: 赞

    2019-04-16
    5
    58
  • 我爱北京天安门
    看来从这篇开始我要看三遍四遍五遍的节奏了

    作者回复: 三遍就够,加油

    2019-04-10
    5
    55
  • Memoria
    大家有兴趣实践的话可以参考清华大学的操作系统实验课,里面第一个实验讲的就是启动的过程,可以让人理解的更加透彻。https://github.com/chyyuu/ucore_os_lab

    作者回复: 赞

    2019-05-20
    2
    32
  • wahaha
    grub2 是一个非常牛的 Linux 启动管理器 这句应该去掉Linux,因为GRUB2也能启动其它操作系统

    作者回复: 对的

    2019-04-12
    2
    17
  • 赵又新
    之前课上说的,如果没有理解错的话: 32位,分为16位寻址空间和16位偏移量。但通过左移4位的方式,将寻址空间扩充为20位。所以,0xFFFF的位置实际指的是0xFFFF0。

    作者回复: 是的

    2019-04-11
    16
  • 随风
    当电脑刚加电的时候,会做一些重置的工作,将 CS 设置为 0xFFFF,将 IP 设置为 0x0000,所以第一条指令就会指向 0xFFFF0。这个所以怎么得到的结果?为什么上面都是五位0xFFFFF, cs/ip都是四位0xFFFF? 小白越看越不明白了。

    作者回复: 左移4位+偏移量

    2019-04-10
    5
    10
  • leon
    32位处理器不是有32根地址线嘛?为啥只打开第21根地址线的控制线?这里可以再稍微解释一下吗?控制线是另外一种线嘛?

    作者回复: 实模式下,只开20以下的,32才开20以上的

    2019-04-14
    2
    9
  • 马上想好
    当电脑刚加电的时候,会做一些重置的工作,将 CS 设置为 0xFFFF,将 IP 设置为 0x0000,所以第一条指令就会指向 0xFFFF0,正是在 ROM 的范围内。 为什么第一条指令会指向0xFFFF0呢

    作者回复: 左移四位

    2019-04-10
    7
收起评论
显示
设置
留言
99+
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部