我是
靠谱客的博主
无情睫毛膏,最近开发中收集的这篇文章主要介绍
深入浅出计算机组成原理 - 学习/实践1. 文档2. 整理输出,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
1.应用场景
学习计算机的运行工作原理,帮助更好地理解计算机世界,编程,如何高效准确地使用。 |
2.学习/实践
1. 文档
《计算机是怎样跑起来的》
《程序是怎样跑起来的》
《网络是怎样连接的》
《图解HTTP》
《图解TCP/IP》
《深入理解计算机系统》
极客时间专栏:深入浅出计算机组成原理
2. 整理输出 TBD 额外补充 作者-郑烨 我在入行的时候,有幸读了很多经典之作,比如,出身贝尔实验室的很多大师级程序员的作品,诸如《C 程序设计语言》《程序设计实践》、《Unix 编程环境》等,还有一些像 Eric Raymond 这样沉浸编程几十年的人写出的作品,诸如《Unix 编程艺术》,以及前面提及的 Kent Beck、Martin Fowler 和 Robert Martin 等这些人的作品。 每年学一门新语言,也就是每年学一个新的编程模型。 业余爱好者 操作系统等各种软件有模型,编程语言也有模型,计算机世界里模型真是无处不在啊。模型就是一种看待世界的方式,一种模型的提出的最大的动力是为了解决某个问题。 编程语言的发展就是各种编程模型的演化。从图灵机模型到冯诺依曼的存储程序模型,机器语言,汇编,一直到千姿百态的高级语言。每种语言都提供了一个编程模型,这个模型越来越高级,越人性化,越贴近人的思维。 拿自己熟悉的java语言举例。尽管java是用c++语言写成的,但Java提供了不同于c++的内存与线程模型(Java的六种线程状态并不与os的各种线程状态一一对应,内存的划分也是如此),大大简化了开发。 北天魔狼 非科班PHPer,今年目标拿下C语言 参考书是《深入理解计算机系统》,我看不懂,所以我又找了《计算机是怎样跑起来的》,《程序是怎样跑起来的》,《网络是怎样连接的》,《图解HTTP》,《图解TCP/IP》,现在就剩程序和网络那两本没看,这个月看完。下个月开始死磕《深入理解计算机系统》 作者回复: 嗯,C 语言是弄懂计算机结构的好入口。《深入理解计算机系统》是非常好的书,不过,确实不容易读。 https://time.geekbang.org/column/article/245878 qinsi 想到两个观点: 1. “设计模式是缺失的语言特性”。比如在函数是一等公民的语言中,至少有半打的设计模式是不需要的。 2. “所有非平凡的抽象(abstraction)在某种程度上都是有漏洞的(leaky)”。封装的程序库只能工作在某个抽象层次上,总会遇到无法在该抽象层次上解决的问题,此时只能绕过这层抽象从更低的抽象层次上解决。 作者回复: 非常好的补充,后面讲到设计模式,我也会提到类似的观点。 happychap 一言不合就开车,一码不便就撸库。确实在语言发展历程上,每门好的语言都有其精华,目的还是在用不同的编程哲学适应不同的应用场景。用golang的伙伴会得意于编译出的程序内存占用少,goroutin如何方便,函数支持多返回值是多么的优雅,而用java的伙伴则乐于能用到泛型、重载、多态等特性,能用到spring等等功能异常强大的框架。编程知识大爆炸的年代,语言小巧够用感觉更环保些ʘᴗʘ 作者回复: 非常好的补充! |
3.问题/补充
1. 搞明白这个事实就好了,一个程序对应多条语句,一条编程语句可能对应多条指令,一条CPU指令可能需要多个CPU周期才能完成。 2. 用户态运行和系统内核运行这两个什么区别呢 【关于用户态运行和系统内核运行,如果要深入了解的话,可以去看看刘超老师的 《趣谈Linux操作系统》。 如果简单讲一下的话,就是我们的程序实际在操作系统里面是运行在“保护模式”下的,很多指令我们的应用程序并没有权限去操作执行,需要切换到内核态,由操作系统去执行,比如说操作硬件的时候。】 3. 对于文中的CPU钟表时间间隔和时钟周期还是没有理解很清楚,时间间隔和时钟周期是互为倒数的关系吗?就是CPU主频是一个单位时间,而时钟周期就是这个单位时间被分成主频(2.8G)等份的一份吗?
作者回复: humor同学你好,如果我没理解错你的意思的话,你的理解是对的。CPU主频是一个频率(frequency),频率的单位叫做赫兹(Hz)。意思是一秒内这个事情可以发生多少次。主频2.8GHz就代表一秒内晶振振动了2.8G次,这里的G其实就是10亿次,也就是28亿次。那么我们的时钟周期时间就是1/28亿秒。
4. 老师,单个CPU的主频是有上限的,所以出现了多核CPU进行计算,为了提高更多的计算,是不是就要运用分布式计算这个技术。
作者回复: 是的
5. 看到cpu指令这一块,我想起了精简指令和复杂指令,执行同样的任务,精简指令需要的条数少,复杂指令需要的多,是不是说同样的任务,放在同样频率的精简指令cpu和复杂指令cpu上执行,精简指令cpu的执行效率高?
作者回复: 秦晋同学,某种程度上来说,你理解反了。精简指令集意味着cpu从硬件或者电路层面支持的指令数比较少。这个意味着很多复杂的操作需要执行更多的指令而不是更少的。 执行效率这个问题更复杂一些,精简指令也许更容易提高频率或者利用流水线等等,只能说具体问题具体分析。现在更多地是出于一个“混合”的状态
6. 徐老师,程序的cpu执行时间是不是由很多cpu时间片组成,而cpu并不知道自己在执行哪个程序的指令, 只是按时间片去按顺序执行指令,不知道这样理解对不对?非科班的转行人士,正在努力补基础?...
作者回复: 潜默闻雨同学你好,这个理解没错。到了cpu层面只有一条条机器码的指令,它并不关心这个指令具体是从哪个程序里来的
7. 老师我尝试了用自己的话理解一下您讲授的内容: 度量一个程序运行的时间T需要知道该程序有几条指令(n),每一个指令平均需要几个基本操作才能执行完毕(k),cpu执行一个基本操作的耗时(t),从而T = n*k*t,t作为SE一般是无法提升的,除非改进硬件,所以缩短运行时间可能主要还是从n、k入手。不知道这样理解是否正确? 此外,跑分“作弊”我猜测是利用软件暂时提升手机性能,但是性能只是衡量手机的一个维度,在不同使用场景下手机的流畅性和稳定性也是需要考虑的,“作弊”跑分的参考价值不大,对于十分注重跑分的用户作弊的跑分可能会对他们产生很强的欺骗性。
作者回复: 你的理解是正确的
8. 时钟周期是啥意思
作者回复: Ant同学你好,时钟周期,是CPU内部通过一个反馈电路形成的一个“晶振”的产生反复的0/1电路信号的一个频率,在17讲讲解CPU的时候,我们还会深入讲解一下时钟周期是怎么回事儿。
9. 有个疑问,现在CPU的时钟周期是不是都是一定的,CPU的频率是根据CPU的处理能力计算出来的。 但是现在说的超频是缩短的CPU时钟周期,让在一个更短的周期内处理相同的指令数,但是这个缩短的范围怎么定义的?会不会超过CPU的处理极限,如果每个CPU的时钟周期不一致,那怎么相互比较CPU的性能差异? 希望老师解答
作者回复: 一步同学你好,超频也会设定一个超频后的cpu主频的,比如2.8GHz超频到3.2GHz。 的确有可能会超出极限,这样也可能跑着跑着cpu就崩溃了,所以正常使用并不推荐超频。 cpu的时钟周期就是不一致的,同样指令集和体系结构的cpu,可以认为频率越高性能就越好。
|
4.参考
《计算机是怎样跑起来的》 《程序是怎样跑起来的》 《网络是怎样连接的》 《图解HTTP》 《图解TCP/IP》 《深入理解计算机系统》 极客时间专栏:深入浅出计算机组成原理 徐文浩 以及不记名网友的评论见解 |
后续补充
...
最后
以上就是无情睫毛膏为你收集整理的深入浅出计算机组成原理 - 学习/实践1. 文档2. 整理输出的全部内容,希望文章能够帮你解决深入浅出计算机组成原理 - 学习/实践1. 文档2. 整理输出所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复