07 | 从BIOS到bootloader:创业伊始,有活儿老板自己上
刘超
该思维导图由 AI 生成,仅供参考
有了开放的营商环境,咱们外包公司的创业之旅就要开始了。
上一节我们说,x86 作为一个开放的营商环境,有两种模式,一种模式是实模式,只能寻址 1M,每个段最多 64K。这个太小了,相当于咱们创业的个体户模式。有了项目只能老板自己上,本小利微,万事开头难。另一种是保护模式,对于 32 位系统,能够寻址 4G。这就是大买卖了,老板要雇佣很多人接项目。
几乎所有成功的公司,都是从个体户模式发展壮大的,因此,这一节咱们就从系统刚刚启动的个体户模式开始说起。
BIOS 时期
当你轻轻按下计算机的启动按钮时,你的主板就加上电了。
按照我们之前说的,这时候你的 CPU 应该开始执行指令了。你作为老板,同时也作为员工,要开始干活了。可是你发现,这个时候还没有项目执行计划书,所以你没啥可干的。
也就是说,这个时候没有操作系统,内存也是空的,一穷二白。CPU 该怎么办呢?
你作为这个创业公司的老板,由于原来没开过公司,对于公司的运营当然是一脸懵的。但是我们有一个良好的营商环境,其中的创业指导中心早就考虑到这种情况了。于是,创业指导中心就给了你一套创业公司启动指导手册。你只要按着指导手册来干就行了。
计算机系统也早有计划。在主板上,有一个东西叫 ROM(Read Only Memory,只读存储器)。这和咱们平常说的内存 RAM(Random Access Memory,随机存取存储器)不同。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
这篇文章以生动的比喻方式,将计算机系统启动过程比作创业公司的发展历程,从BIOS到bootloader详细介绍了计算机启动的技术细节。作者以切换到保护模式为例,比喻为创业公司切换到老板角色,生动形象地解释了计算机启动的基本原理和关键步骤。文章通过比喻的方式,让读者能够快速了解计算机启动过程的复杂性,同时提到了课堂练习,鼓励读者深入学习和实践。整体而言,本文通过生动的比喻和技术细节的介绍,为读者提供了一个全面了解计算机启动过程的入门指南。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《趣谈 Linux 操作系统》,新⼈⾸单¥68
《趣谈 Linux 操作系统》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(140)
- 最新
- 精选
- Luke这部分的实验,大家可以去github看我的工程哈,icecoobe/oslab,已经进入保护模式了,还有很远的路,一起加油!
作者回复: 牛
2019-04-1163 - Luke看到很多人留言需要资料,我来推荐一本新书《一个64位操作系统的设计与实现》,如果你有汇编基础,很感兴趣底层的细节,可以看李忠的那本《从实模式到保护模式》
作者回复: 赞,看来我得收集一下书名,统一推荐给大家
2019-04-11360 - 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-16558 - 我爱北京天安门看来从这篇开始我要看三遍四遍五遍的节奏了
作者回复: 三遍就够,加油
2019-04-10555 - Memoria大家有兴趣实践的话可以参考清华大学的操作系统实验课,里面第一个实验讲的就是启动的过程,可以让人理解的更加透彻。https://github.com/chyyuu/ucore_os_lab
作者回复: 赞
2019-05-20232 - wahahagrub2 是一个非常牛的 Linux 启动管理器 这句应该去掉Linux,因为GRUB2也能启动其它操作系统
作者回复: 对的
2019-04-12217 - 赵又新之前课上说的,如果没有理解错的话: 32位,分为16位寻址空间和16位偏移量。但通过左移4位的方式,将寻址空间扩充为20位。所以,0xFFFF的位置实际指的是0xFFFF0。
作者回复: 是的
2019-04-1116 - 随风当电脑刚加电的时候,会做一些重置的工作,将 CS 设置为 0xFFFF,将 IP 设置为 0x0000,所以第一条指令就会指向 0xFFFF0。这个所以怎么得到的结果?为什么上面都是五位0xFFFFF, cs/ip都是四位0xFFFF? 小白越看越不明白了。
作者回复: 左移4位+偏移量
2019-04-10510 - leon32位处理器不是有32根地址线嘛?为啥只打开第21根地址线的控制线?这里可以再稍微解释一下吗?控制线是另外一种线嘛?
作者回复: 实模式下,只开20以下的,32才开20以上的
2019-04-1429 - 马上想好当电脑刚加电的时候,会做一些重置的工作,将 CS 设置为 0xFFFF,将 IP 设置为 0x0000,所以第一条指令就会指向 0xFFFF0,正是在 ROM 的范围内。 为什么第一条指令会指向0xFFFF0呢
作者回复: 左移四位
2019-04-107
收起评论