《深入学习计算机系统(C语言)》学习进程之开篇第一章计算机系统漫游WeekeyJanelan

程序的生命周期从源程序开始——这是一个有着某种扩展名(比如C源程序的文件扩展名为.c,java源程序的文件扩展名为.java,c++源程序的扩展名为.cpp等等)的文本文件。这些文本文件由一个个文本字符构成,而每个文本字符又由8个bit来构成。

数据有不同的数据对象,即不同的由bit组成的“实体”。

1.2程序被其他程序翻译成不同的格式

为了在(操作)系统上运行程序,每条源程序上的语句都被其他程序转化为机器语言指令。然后将这些指令以可执行目标程序的格式打好包,以二进制磁盘文件的形式存储。

在UNIX系统中,从源文件到目标文件的转化由编译器驱动程序完成。以C源程序为例,这个过程有四个阶段(注意:与C/C++不同,java编译器把java源程序翻译成字节码(class文件),运行该文件时首先会运行JVM,然后class文件被加载到JVM上运行。而编译和连接一个C/C++程序时,所获得的可执行二进制文件只能在指定的硬件平台和操作系统上运行,属于“本地”执行程序):

i.C源程序的开头都有预处理命令,此命令告诉预处理器(cpp)读取源程序的头文件并把这些文件直接插入到程序文本中形成新的文本文件,并以.i为文件扩展名。

ii.编译器(ccl)将上一步的文本文件翻译成新的以.s为文件扩展名的文本文件,它包含一个汇编语言程序(不同的cpu,与其对应的汇编语言也会有所不同)。

iii.汇编器(as)将上一步的文件翻译成机器语言指令并将其打包成可重定位目标程序,其文件的扩展名为.o。该文件是二进制文件,字节编码由机器语言来完成,故无法用文本编辑器来正确打开。

iv.若在源程序中有涉及到标准库的函数,则链接器(ld)将这些函数的以.o为扩展名的目标文件合并到上一步的文件中,最终,可执行目标文件完成(.exe或.com等后缀名)。这种文件可被加载到内存中,由系统执行。

1.3了解编译系统如何工作是大有益处的

同一个结果,不同的源程序指令会有不同的程序性能。这与机器代码和编译器将各种源程序语句转化为机器代码的方式有关。

1.4处理器读并解释存储在存储器中的命令

通常我们所说的32位、64位的字长,其实就是总线传送定长的字节块信息的长度。

编译后的可执行文件在未执行前存储在磁盘上。

指令集结构描述的是每条机器代码指令的效果,而微体系结构描述的是处理器是如何被实现的。

1.5高速缓存至关重要

根据机械原理,较大的存储设备要比较小的存储设备运行得慢,但在造价上两者是相反的。

在运行速度上,磁盘驱动器>内存>寄存器。

缓存一般内嵌在cpu中,通过存放cpu近期可能会用到的数据来对内存和cpu在处理速度上的差异进折中。其中,一级缓存运行速度可与寄存器相当,而二级缓存通过总线与处理器连接,容量比一级缓存要高出不少,但在运行速度上比一级缓存稍慢。缓存通过SRAM的硬件技术来实现。

1.7操作系统管理硬件

应用程序对硬件的操作都必须要经过操作系统。OS有两个功能:①防止硬件被失控的应用程序滥用;②向应用程序提供简单一致的机制来控制复杂的低级硬件设备。

进程是OS对一个正在运行的程序的抽象。OS可同时执行多个进程,即并发运行,指的是一个进程的指令和另一个进程的指令其实是在交错执行的。而实现这种交错执行的机制称为上下文切换。何为上下文?OS跟踪进程运行时所需的所有状态信息。

单处理器系统只能在同一时刻执行一个进程的代码。在进行上下文切换时,OS保存当前进程的上下文、恢复新进程的上下文,新进程获得控制权后就能在上次停止的地方开始运行。

一个进程由多个线程组成。每个线程都在该进程的上下文下运行,共享同样的代码和全局数据,且多线程之间的数据共享比多进程之间更容易。

无法理解这个章节中所讲到的虚拟存储器的有关内容。估计得在以后的章节中探索了。

文件可囊括计算机系统的所有I/O设备。

1.9总结

并发:系统可同时执行多个进程。

并行:用并发使系统运行得更快。

多核处理器指的是将多个CPU(“核”)集成到一个集成电路芯片上,每个核都有自己的L1和L2缓存,但是它们共享更高层次的高速缓存以及到主存的接口。

超线程(即同时多线程)是一种允许一个CPU执行多个控制流(即线程)的技术。

指令级并行:处理器可以同时执行多条指令。这就用到了流水线技术,即其将每一条指令所需的活动分成不同的步骤,将CPU里的硬件组织成一系列的阶段,每个阶段执行一个步骤。这些阶段可以并行操作,用来处理不同指令的不同部分。

超标量处理器:执行速率达到一个周期一条指令以上。

单指令、多数据并行(SIMD并行):允许一条指令产生多个可以并行执行的操作,用于提高处理影像、声音和视频数据应用的执行速度。

线程级并发、指令级并行、以及SIMD并行是在不同的抽象层次上对系统并发和并行的阐述。

THE END
1.理论学习不深入不全面问题有哪些?理论学习不深入,首先表现为对理论知识的理解肤浅。学习者可能只是简单地记忆了一些概念和定义,而没有深入探究其背后的原理和逻辑。这种浅尝辄止的学习方式,使得理论知识无法真正转化为个人的认知和能力,也无法在实际工作中发挥应有的指导作用。其次,理论学习不全面常常体现在缺乏系统性。理论知识是一个有https://zhidao.baidu.com/question/700229476644501684.html
2.理论学习不够深入系统6篇理论学习不够深入系统6篇【篇1】理论学习不够深入系统学校在全体党员中开展了“创先争优”系列活动。作为一名党员教师,我对照“五个带头”即带头学习提高、带头争创佳绩、带头服务群众、带头遵纪守法、带头弘扬正气,联系个人工作实践,总结如下:一、存在不足:(1)政治理论学习不够深入。(2)、服务宗旨不够宰固。(3)https://www.gongwentang.com/doc/666013/
3.理论学习不够深入系统(全文)理论学习不够深入 存在问题的主要原因 (一)政治理论学习不够深入。一是思想上对党的政治理论学习重视程度不够,没有真正实现从要我学到我要学的转变。二是理论与实践隔离,忽视了理论与实践的辨证唯物关系,对政治理论的学习只满足于记住几条重要论断和几句讲话,缺乏系统性、经常性的深入学习,造成实际工作中运用马列https://www.99xueshu.com/w/vo96kmkl6ypw.html
4.理论学习方面存在的差距与不足风不纯不正,学习不走心不深入不系统佚名· 6068实践,问题,学习 还剩33页未读,继续阅读 文本内容: 2023主题教育在理论学习方面存在的差距与不足(共二十篇)理论学习方面存在的差距与不足主要涵盖学风不纯不正,学习不走心不深入不系统,用党的创新理论指导实践、解决问题存在差距和不足【第1篇?共20篇】一是学习深度有所欠缺在拥护“两个确立”、做https://www.yxfsz.com/view/1723082341755228162
5.这几天用得着!1.理论学习不够深入。对理论知识的学习缺乏系统相互批评意见,这几天用得着!1.理论学习不够深入。对理论知识的学习缺乏系统性、经常性,用理论指导实践http://www.360doc.com/content/12/0121/07/78322787_1014578117.shtml
6.《深入理解计算机系统(CSAPP)》第5章优化程序性能本文是学习《深入理解计算机系统》的笔记,涵盖了编译器优化的技巧如-Ox选项、内存别名和函数调用的影响,以及优化方法如代码移动和循环展开。文章还讨论了现代CPU的设计,包括超标量和乱序执行,以及指令级并行、分支预测和寄存器重命名等提升性能的技术。 摘要由CSDN通过智能技术生成 https://blog.csdn.net/m15253053181/article/details/130939696
7.全面系统学深入思考学联系实际学思想的时代背景和历史方位、贯通主题和重大意义、精髓要义和根本原则以及新时代中国特色社会主义的总体布局和基本特征几个方面,为教育部直属机关广大党员干部深入学习领会习近平新时代中国特色社会主义思想的时代意义、理论意义、实践意义、世界意义,深刻理解这一思想的核心要义、精神实质、丰富内涵、实践要求,作了全面系统的http://www.jyb.cn/rmtzgjyb/201906/t20190618_242307.html
8.关于孩子学习问题方面的提问6、重在平时复习,考前不紧张,不复习 7、作文时,没有想清楚,没组织好就动笔了 8、听课记笔记会跟不上老师的进度 9、学过的知识在脑子里很清楚很条理,用的时候很容易能想到 10、对学习的感觉,是喜欢还是讨厌 学习方法:记忆方法是否合理,思维活动是否深入、系统 https://www.meipian.cn/1q5f7lbz