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

06 | x86架构:有了开放的架构,才能打造开放的营商环境

32位处理器
控制单元
数据单元
开放的架构
IBM和x86的故事
内存
总线
CPU
课堂练习
总结时刻
从8086的原理说起
x86成为开放平台历史中的重要一笔
计算机的工作模式
x86架构

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

做生意的人最喜欢开放的营商环境,也就是说,我的这家公司,只要符合国家的法律,到哪里做生意,都能受到公平的对待,这样就不用为了适配各个地方的规则煞费苦心,只要集中精力优化自己的服务就可以了。
作为 Linux 操作系统,何尝不是这样。如果下面的硬件环境千差万别,就会很难集中精力做出让用户易用的产品。毕竟天天适配不同的平台,就已经够头大了。x86 架构就是这样一个开放的平台。今天我们就来解析一下它。

计算机的工作模式是什么样的?

还记得咱们攒电脑时买的那堆硬件吗?虽然你可以根据经验,把那些复杂的设备和连接线安装起来,但是你真的了解它们为什么要这么连接吗?
现在我就把硬件图和计算机的逻辑图对应起来,带你看看计算机的工作模式。
对于一个计算机来讲,最核心的就是 CPU(Central Processing Unit,中央处理器)。这是这台计算机的大脑,所有的设备都围绕它展开。
对于公司来说,CPU 是真正干活的,将来执行项目都要靠它。
CPU 就相当于咱们公司的程序员,我们常说,二十一世纪最缺的是什么?是人才!所以,大量水平高、干活快的程序员,才是营商环境中最重要的部分。
CPU 和其他设备连接,要靠一种叫做总线(Bus)的东西,其实就是主板上密密麻麻的集成电路,这些东西组成了 CPU 和其他设备的高速通道。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

x86架构:开放、统一、兼容的计算机平台 x86架构作为计算机领域的开放平台,为计算机提供了高度的灵活性和通用性。本文从计算机的工作模式出发,介绍了CPU、内存以及总线的作用和相互配合关系。通过对CPU内部结构和工作原理的解析,读者可以了解到CPU如何执行指令、处理数据,并与内存进行交互。此外,文章还介绍了进程切换和总线的作用,帮助读者理解计算机内部数据传输的机制。 x86架构的历史起源于IBM PC时代,随着IBM PC的成功,x86架构逐渐成为了行业的开放事实标准。英特尔的技术因此成为了行业的开放事实标准,由于这个系列开端于8086,因此称为x86架构。x86架构的CPU数据总线和地址总线不断扩展,但始终坚持标准、开放、兼容的原则。 文章还深入介绍了8086处理器的原理,包括数据单元和控制单元的组成,以及内存访问的机制。通过对8086处理器的解析,读者可以了解到当时计算机的内存访问限制和处理能力。 总的来说,本文通过深入浅出的方式,向读者介绍了x86架构的技术特点和工作原理,为读者提供了对计算机内部运行机制的初步了解。文章内容涵盖了x86架构的历史、技术特点和处理器原理,适合读者快速了解x86架构的概况。

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

全部留言(174)

  • 最新
  • 精选
  • 一命赌快乐
    置顶
    move a b :把b值赋给a,使a=b call和ret :call调用子程序,子程序以ret结尾 jmp :无条件跳 int :中断指令 add a b : 加法,a=a+b or :或运算 xor :异或运算 shl :算术左移 ahr :算术右移 push xxx :压xxx入栈 pop xxx: xxx出栈 inc: 加1 dec: 减1 sub a b : a=a-b cmp: 减法比较,修改标志位

    作者回复: 赞,认真学习的典范

    2019-04-08
    4
    297
  • Frank_51
    作为一个搞硬件的,这章是我学习最轻松的,推荐一个入门的系统学习汇编的视频课,网易云课堂上的一个课程,《汇编从零开始到C语言》,通俗易懂,小白入门必备

    作者回复: 推荐书籍

    2019-04-08
    6
    115
  • Lin
    妥妥地复习了一把“计算机体系结构”🌹

    作者回复: 后面很多地方要用到寄存器,所以必须先讲一下

    2019-04-08
    53
  • 老师讲地太精彩了 点赞。由于基础弱,还有几个问题希望老师万忙中答疑一下,谢谢: 问题1:程序编译成二进制代码的时候,包含有指令起始地址吗?若包含那么后续每一行指令的涉及到的指令地址是计算出来的? 或者说加载进程的程序的时候才会确定起始地址?很好奇这个指令的指针寄存器里的值是什么时候、怎么放进去的? 问题2: CPU两个寄存器处理保存当前进程代码段的起始地址,已经数据起始地址。切换进程时会将这两个寄存器里的值一并切换,那么同一个进程出现多线程的时候了? 问题3:数据总线拿数据的时候没有限制大小吗,若数据很大,数据单元里的数据寄存器放不下怎么办的?

    作者回复: 1.会有指令起始地址,后面讲ELF格式的时候会说这个事情。当执行一个程序的时候,会加载ELF格式,加载的时候会设置指令指针 2.多线程共享同一个进程内存空间,所以代码段的起始地址还是一样的。只不过每个线程执行不同的func,指令指针会不一样,在内核中,线程也是有独立的task_struct 3.寄存器是有限的,如果把程序编译成汇编看的话,再大的数据,也是要转换为对寄存器的操作。当然寄存器里面可以包含对内存的访问地址,这样内存里面的数据就很多了

    2019-04-08
    36
  • 微秒
    当然为了快速拿到段起始地址,段寄存器会从内存中拿到 CPU 的描述符高速缓存器中。 这句话感觉有点语义不通啊,能否详细解释下???

    作者回复: 首先先建立一个观念,CPU里面的比内存块很多,内存比硬盘快很多。原来段的起始地址是放在寄存器里面的,所以速度就比在内存里面快很多,但是到了保护模式下,端起始地址放到内存里面了,就慢了,怎么办呢?将内存中的段描述符拿到CPU内的高速缓存中,就又快了。

    2019-04-08
    4
    34
  • why
    Guide to x86 Assembly: http://www.cs.virginia.edu/~evans/cs216/guides/x86.html

    作者回复: 赞

    2019-04-08
    30
  • 佳佳大魔王
    实模式和保护模式的英文中模式应该为pattern吧,另外这两个模式不太理解。

    作者回复: 可以理解为,CPU和操作系统的一起干活的模式,在实模式下,两者约定好了这些寄存器是干这个的,总线是这样的,内存访问是这样的,在保护模式下,两者约定好了这些寄存器是干那个的,总线是那样的,内存访问是那样的。这样操作系统给CPU下命令,CPU按照约定好的,就能得到操作系统预料的结果,操作系统也按照约定好的,将一些数据结构,例如段描述符表放在一个约定好的地方,这样CPU就能找到。两者就可以配合工作了。

    2019-04-08
    27
  • 马上想好
    老师您好,我想问下 为什么高16位分成两个8位就不兼容列呀。

    作者回复: 没有人写程序用高位的

    2019-04-09
    4
    22
  • Pluto
    原来 x86 架构是指 8086 ,而 x86 是代表 32 位操作系统是因为 80386,原来这两个 x86 不是同一个意思啊,以前学操作系统的时候一直想不明白 x86 为什么是指代 32 位操作系统

    作者回复: 哈哈

    2019-04-08
    3
    19
  • 尚墨
    上周看了 Go 夜读社区 《Go Plan 9汇编入门》https://www.bilibili.com/video/av46494102 听的云里雾里的,在来看这篇文章好像感觉出了点门道。

    作者回复: 呜哇,没想到能和go联系在一起,看来底层原理比较容易互通

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