是不是就买必要看 《深入理解计算机 pdf系统

& & & & & &本来LZ是打算好好研究一下JVM源码的,不过想来想去,LZ觉得应该先了解计算机系统的原理,再去研究JVM源码的精妙。因此LZ决定潜下心来好好研究下计算机系统原理,这是一个漫长的过程,因为《深入理解计算机系统》这本书很厚,而且这种书一般看起来速度不会太快。因此LZ打算做好每一个阶段的记录,有兴趣的猿友可以跟着LZ一起看下,了解计算机系统的运行原理其实是很有必要的。
计算机的组成
& & & & & 计算机是由硬件和软件组成的,这两个部分共同协作完成程序的运行。这两部分如何协作完成程序的运行,是本系列的重点。
信息的表示
& & & & & 信息的表示说到底就是位加上下文。举个小例子,比如这一串二进制,在表示整数的时候它表示221,但是如果放在JAVA的class文件当中,它可能代表一个JVM的指令。
程序的编译
& & & & & 对于一个简单的C语言程序来说,一般要经过预处理器、编译器、汇编器和链接器的处理,才能被翻译成一段可执行的二进制文件。
& & & & & 比如对于一个简单的C语言程序,如下。
#include &stdio.h&
int main()
printf("hello,world\n");
& & & & & 我们保存在hello.c当中,那么它的翻译过程如下。
程序的运行
& & & & & 程序的运行由解释器负责,它将逐个解释最终生成的二进制文件并执行。
计算机的硬件组成
& & & & & 首先,我们来看下计算机中硬件的大致分布,如下图。
& & & & & &其中有几个非常重要的部分,一一看下都是什么作用。
& & & & & &总线:贯穿整个系统的是一组电子管道(其实就是传输数据的线路),也就是总线。总线传送的是字,字的大小与系统相关,比如在32位操作系统当中,一个字是4个字节。
& & & & & &I/O设备:I/O设备是系统与外部联系的通道。I/O设备(键盘、鼠标、显示器等)由控制器(USB控制器)或者适配器(图形适配器,也就是显卡)与I/O总线相连,两者的区别在于一个是主板上的芯片组,一个是主板插槽上的卡。
& & & & & &主存:它是计算机中的一个临时存储设备,在处理器执行程序的时候,主存就是临时存放数据的地方。物理上来说,它是由动态随即存取存储器芯片组成,逻辑上来说,它是一组连续的字节数组,每一个字节都有唯一的地址。
& & & & & &处理器:全称中央处理单元,是解释存储在主存中指令的引擎。处理器的核心是一个程序计数器,它在整个计算机运行的期间都会指向一个主存中的一个内存地址,而地址当中则是一个计算机指令。处理器所做的,就是不停的执行程序计数器所指向的每一条指令。处理器所做的操作是围绕主存、寄存器文件以及算术/逻辑单元进行的,这里面处理器做的最多的动作就是加载(从主存将数据复制到寄存器)、存储(从寄存器将数据复制到主存)、操作(将两个寄存器的内容复制到算术/逻辑单元进行操作,结果会再次复制到寄存器)以及跳转(改变程序计数器当中的内容)。
& & & & & &处理器当中提到的是指令集结构,不过实际当中指令集的实现是非常复杂的,这么做的目的是为了加速CPU的运算速度。我们可以这样去区分指令集机构以及微体系结构,指令集结构是指令集的抽象描述,而微体系结构则是这个抽象描述的某一个具体实现,类似于JAVA虚拟机与JAVA虚拟机实现的关系。
& & & & & &计算机是由软件与硬件组成的,而硬件又包括了总线、I/O设备、主存以及处理器,其中信息是由位以及上下文表示的,而信息则是从I/O设备以位的形式通过总线进入主存,然后由处理器从主存将信息取出处理。
& & & & & &一个程序的执行,是经历了预处理器、编译器、汇编器以及链接器的处理之后,才最终成为可执行的文件。当程序成为可执行文件时就已经保存在了磁盘上,具体的执行过程在下一章再总结。
阅读(...) 评论()《深入理解计算机系统 (原书第2版) 》与《深入理解计算机系统(修订版)》有什么不同?_百度知道
《深入理解计算机系统 (原书第2版) 》与《深入理解计算机系统(修订版)》有什么不同?
我想买这本书但是有两个版本不知道那个好些!
我有更好的答案
《深入理解计算机系统(修订版)》
原书第1版的修订版《深入理解计算机系统 (原书第2版) 》 原书第2版 我刚刚买了本原书第2版的
采纳率:50%
第三版更新了最新到X86-64位,各个章节更加容易阅读和理解,中文第三版高清版本的可以参考:
为您推荐:
其他类似问题
计算机系统的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
请问,《深入理解计算机系统》这本书有没有相关的视频公开课呢(我google下,没找着)?
在看这本书之前,需要有哪些基础呢?
各个章节的关联性会很强吗,可否挑着看?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
首先~~~你这个标签贴的有问题啊~~
csapp这本书呢,是基础入门书~是理解计算机整个运行原理的必备书籍(虽然我没看完)...它涵盖了计算机组成原理,汇编,简单的逆向,还有c语言编程等等的东西,把这本书搞透你的底子也就打好了~~
至于公开课是没有的....但是不需要公开课不是嘛~~只要你认真看哪怕慢点也没关系~但是一定要搞懂~
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
不才看完了这本书,觉得里面的内容写的很不错。按照书本自身前言的说法是你只需要一点C基础就行了。
个人觉得第一章,第三章和第九章是这本书的精华。应该仔细看看,看不懂的话先看过去再回看。
里面的练习题一定要做,可以巩固一下你学的知识。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
看归看,书上的题目一定要做。看不看公开课是次要的。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
这本书是cmu某一门课(忘了)的教材,也是上海交大se101和111的教材。
cmu目前貌似没有提供相关的公开课以及视频。
书分为三个部分
汇编反汇编
第一部分的重要性不用多提了,了解底层对于程序员来说非常有帮助(不仅仅是c,java和php也是)。此外第一部分也挺好玩的,学会了就可以入门破解了。第二部分稍微有些枯燥,难懂,y86比起mips那是相当的复杂,还是建议直接学习后者。第三部分对于linux下面的开发很有帮助,但是讲的不够详细,不懂的地方可以参考《apue》。
个人感觉就是,这本书比较省时间,传统的课时,这三部分可能要开三门课,但是用了这本书能够压缩到两门课,甚至一门半。(据说cmu那边只用一个学期就讲完了这本书,作业量应该挺恐怖的。)
在看这本书之前,需要有哪些基础呢?
个人认为,看所有计算机书都最好有编程基础。对于这本书来说,c,c++,java无所谓,随便哪个都行。倒不是要求基础强到能够自己独立完成一个项目,只是看到一段代码知道它是什么意思,不要总是返回去查语法书就可以。另外这本书还需要linux的基础知识。知道shell怎么用,以及一些基本命令就好。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
这本书讲的都是计算机基本原理的知识,个人觉得配合《编码:隐匿在计算机软硬件背后的语言》一起看更易理解!
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
怎么说呢,重复看,最好看英文版的。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
我看了下这书,虽说只要求浅显的c语言.但看起来想要轻松点的话,基础知识一定要都熟练才行.这本书应该放在以后看
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
之前一直在学习编程语言,现在依靠学习的语言找到了一份工作,那么是好好开始研究这本书的时候了。基础是一定要好的
该答案已被忽略,原因:
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。《深入理解计算机系统》这本书数学公式完全不懂啊!第二章感觉就很难理解,这本书应该怎样去读呢? - 知乎136被浏览<strong class="NumberBoard-itemValue" title="1分享邀请回答281 条评论分享收藏感谢收起71 条评论分享收藏感谢收起}

我要回帖

更多关于 深入理解计算机基础 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信