摘要:
先献上几个梗 1.1.1.1 不是测试用的,原来一直没分配,现在被用来做一个DNS了,宣传是比谷歌等公司的dns服务 更保护用户隐私。 IP地址255.255.255.255,代表有限广播,它的目标是网络中的所有主机。 IP地址0.0.0.0,通常代表未知的源主机。当主机采用DHCP动态获取IP地址 阅读全文
摘要:
人用纸和笔来做运算,都是用十进制,直接用十进制和我们最熟悉的符号不是最简单么? 为什么计算机里我们最终要选择二进制呢? 来看看,计算机在硬件层面究竟是怎么表示二进制的,你就会明白,为什么计算机会选择二进制。 1 怎么做到“千里传书” 马拉松的故事相信你听说过。公元前490年,在雅典附近的马拉松海边, 阅读全文
摘要:
程序 = 算法 + 数据结构 对应到计算机的组成原理(硬件层面) 算法 各种计算机指令 数据结构 二进制数据 计算机用0/1组成的二进制,来表示所有信息 程序指令用到的机器码,是使用二进制表示的 存储在内存里面的字符串、整数、浮点数也都是用二进制表示的 万物在计算机里都是0和1,搞清楚各种数据在二进 阅读全文
摘要:
把对应的不同文件内的代码段,合并到一起,成为最后的可执行文件 链接的方式,让我们在写代码的时候做到了“复用”。 同样的功能代码只要写一次,然后提供给很多不同的程序进行链接就行了。 “链接”其实有点儿像我们日常生活中的 标准化、模块化 生产。 有一个可以生产标准螺帽的生产线,就可生产很多不同的螺帽。 阅读全文
摘要:
比尔·盖茨在上世纪80年代说的“640K ought to be enough for anyone” 也就是“640K内存对哪个人来说都够用了” 那个年代,微软开发的还是DOS操作系统,程序员们还在绞尽脑汁,想要用好这极为有限的640K内存 而现在,我手头的Mac Book Pro已经是16G内存 阅读全文
摘要:
既然程序最终都被变成了一条条机器码去执行,那为什么同一个程序,在同一台计算机上,在Linux下可以运行,而在Windows下却不行呢? 反过来,Windows上的程序在Linux上也是一样不能执行的 可是我们的CPU并没有换掉,它应该可以识别同样的指令呀!!! 如果你和我有同样的疑问,那这一节,我们 阅读全文
摘要:
用Google搜异常信息,肯定都访问过 "Stack Overflow网站" 全球最大的程序员问答网站,名字来自于一个常见的报错,就是栈溢出(stack overflow) 从函数调用开始,在计算机指令层面函数间的相互调用是怎么实现的,以及什么情况下会发生栈溢出 1 栈的意义 先看一个简单的C程序 阅读全文
摘要:
CPU执行的也不只是一条指令,一般一个程序包含很多条指令 因为有if…else、for这样的条件和循环存在,这些指令也不会一路平直执行下去。 一个计算机程序是怎么被分解成一条条指令来执行的呢 1 CPU如何执行指令 CPU里差不多几百亿个晶体管 实际上,一条条计算机指令执行起来非常复杂 好在CPU在 阅读全文
摘要:
在上一篇中,我们谈到过 要提升计算机的性能,可以从上面这三方面着手。 通过指令数/CPI,好像都太难了。 因此工程师们,就在CPU上多放晶体管,不断提升CPU的时钟频率,让CPU更快,程序的执行时间就会缩短。 从1978年Intel发布的8086 CPU开始,计算机的主频从5MHz开始,不断攀升 1 阅读全文
摘要:
0 学习路线的知识点概括 学习计算机组成原理,就是学习计算机是如何协调运行的 计算机组成原理的英文叫Computer Organization Organization 意"组织机构"。 该组织机构能够进行各种计算、控制、读取输入,进行输出,达成各种强大的功能。 把整个计算机组成原理的知识点拆分成了 阅读全文