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

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

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

BIOS 时期

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

全部留言(140)

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

    作者回复: 牛

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

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

    3
    58
  • 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…

    作者回复: 赞

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

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

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

    作者回复: 赞

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

    作者回复: 对的

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

    作者回复: 是的

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

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

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

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

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

    作者回复: 左移四位

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