随笔分类 - 读书
值得读的书,读的时候需要思考。
摘要:输入/输出(I/O)是在主存和外部设备之间拷贝数据的过程。是主存,和外部设备(磁盘、终端、网络)之间的。主存是主体,第一人称,从外部到主存,是入,输入。从主存到外部,是出,输出。这些外部设备都是I/O设备。从磁盘输入,是将磁盘文件拷贝到主存的一个过程。所有语言的运行时系统都提供执行I/O的较高基本的工具。——语言的运行时系统——编程语言吗?c,c++,java,这些倒是都提供了I/O工具。ANSI C提供了标准I/O库——printf和scanf这样带缓冲区的I/O函数。——缓冲区,其实好理解,外部设备和内存之间的数据拷贝是缓慢的,而且多次少量(多次在内存和外部设备之间交互少量的数据)比少次多
阅读全文
摘要:当你学完了这个部分,你将逐渐变成一个很牛的程序员,对计算机系统以及它们对程序的影响有很成熟的理解。第10章 系统级I/O第11章 网络编程第12章 并发编程
阅读全文
摘要:现代系统提供了一种对主存的抽象概念——虚拟存储器。为了更加有效的管理存储器并且少出错。虚拟存储器是硬件异常、硬件地址翻译、主持、磁盘文件、内核软件的完美交互。它为每个进程提供了一个大的,一致的,私有的地址空间。虚拟存储器提供了三个重要的能力:将主存看成是一个存储在磁盘上的地址空间的高速缓存。为每个进程提供一致的地址空间。保护了每个进程的地址空间不被其他进程破坏。理解虚拟存储器的理由:其是中心的、强大的、危险的。9.1 物理和虚拟寻址计算机系统的主存被组织为一个M个连续字节大小的单元组成的数组,每个字节都有唯一的物理地址。——物理地址是对主存的。cpu使用物理地址访问存储器——物理寻址。cpu通
阅读全文
摘要:从给处理器加电开始,直到断电为止,程序计数器里总是一个一个的地址,指令的地址,假设这些地址依次是a0,a1,...,ak,其中ak是指令Ik的地址。从ak到ak+1的过渡称为控制转移。控制转移序列叫做处理器的控制流。Ik+1和Ik不总是相邻的,不相邻一般是由诸如跳转、调用和返回这样的指令造成的。跳转、调用和返回是必要的,使得程序能够对内部程序状态中的变化做出反应。这些内部程序状态是由程序变量表示的。程序有程序的状态,系统也有系统的状态。程序的状态通过程序变量来表示,比如程序变量变成0可能就是一种程序状态,系统的状态是一种统称。定时器产生信号、网络包到达网络适配器、子进程终止这些都是系统状态。一
阅读全文
摘要:链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程。这个文件可被加载到存储器并执行。链接可以执行在编译时,可以执行在加载时,可以执行在运行时。为什么要学习关于链接的知识:理解链接器将帮助你构造大型程序。(缺少模块,缺少库,不兼容的库等链接器错误)理解链接器将帮助你避免一些危险的编程错误。(错误地定义多个全局变量)理解链接将帮助你理解语言的作用域规则是如何实现的。(static属性的变量)理解链接器将帮助你理解其他重要的系统概念。(加载和运行程序、虚拟存储器、分页和存储器映射)理解链接器将使你能够利用共享库。(使用共享库来升级压缩包装的二进制程序,web服务器依赖于共享库的动态链接来
阅读全文
摘要:在第一部分,理解了程序和硬件之间的交互关系(汇编等),在第二部分,讲述程序和操作系统之间的交互关系。可以知道,第三部分将说明程序与程序之间的关系了。第七章 连接第八章 异常控制流第九章 虚拟存储器
阅读全文
摘要:在简单模型中,存储器系统是一个线性的字节数组,而cpu能够在一个常数时间内访问每个存储器位置。实际上,存储器系统是一个具有不同容量、成本和访问时间的存储设备的层次结构。存储器层次结构是可行的。整体效果是一个大的存储器池,其成本与层次结构底层最便宜的存储设备相当,但是却以接近于层次结构顶部存储设备的高速率向程序提供数据。计算机系统中一个基本而持久的思想:如果你理解了系统是如何将数据在存储器层次结构中上下移动的,那么你就可以编写你的应用程序,使得它们的数据项存储在层次结构较高的地方,在那里cpu能更快的访问它们。这个思想围绕着计算机程序的一个称为局部性的基本属性。在本章中,我们会看看基本的存储技术
阅读全文
摘要:第四章 处理器体系结构一个处理器支持的指令和指令的字节级编码称为它的指令集体系结构ISA。不同的处理器家族有:Intel IA32,IBM/Freescale PowerPC,ARM。他们都有不同的ISA。ISA在编译器编写者和处理器设计人员之间提供了一个概念抽象层。编译器编写者只需要知道允许哪些指令,以及它们是如何编码的;处理器设计者必须建造出执行这些指令的处理器。本章将简要介绍处理器硬件的设计。(over)这一章节已经有点脱离软件了,太过于细节化了,如上所说,我只要和ISA这一个概念抽象层打交道就好。第五章 优化程序性能本章会探讨如何使用几种不同类型的程序优化技术。第一:合适的算法和数据结
阅读全文
摘要:对于严谨的程序员来说,能够阅读和理解汇编代码仍是一项很重要的技能。阅读编译器产生的汇编代码,需要具备的技能不同于手工编写汇编代码。——感觉阅读和编写在一个量级了,应该是阅读比较弱一点吧,(也许就是一个级别的)。精通细节是理解更深和更基本概念的先决条件。本章基于两种相关的机器语言:Intel IA32和x86-64,前者是当今大多数计算机的主导语言,而后者是前者在64位机器上运行的扩展。本章的内容:先快速的浏览c语言、汇编语言以及机器代码之间的关系。然后介绍IA32的细节,从数据的表示和处理以及控制的实现开始。了解c语言中的控制结构是如何实现的。然后,我们会讲到过程的实现,包括程序如何维护一个运
阅读全文
摘要:我们研究三种最重要的数字表示:无符号编码,补码编码,浮点数编码。可能我们会觉得二进制的编码,从低位开始加1,加1再加1是很正常的,但其实不是,为什么不能从高位开始加,向低位进位呢?习惯而已,前人脚印。无符号编码,我们最能接受,觉得天经地义的编码方式。其实不是天经地义的,只是前人就这么定的。补码编码也是比较能接受的,但也是一种选择,前人经过考虑后的选择。浮点数编码也是。这三个其实在一个水平面上,都是人为选择和制定的产物。需要知道,计算机的算术运算和数学世界的算术运算是不等价的,两者在很多特性上有显著的差别;但计算机算术运算希望得到正确的数学算术运算的结果,虽然有时候得不到。两者不同的根源在于:在
阅读全文
摘要:坚持 透彻第二章 信息的表示和处理第三章 程序的机器级表示第四章 处理器体系结构第五章 优化程序性能第六章 存储器层次结构
阅读全文
摘要:计算机系统是由硬件和系统软件组成的。系统的具体实现在变,但系统内在的概念没有变。所有的系统都有相似的硬件,相似的软件组件,它们执行着相似的功能。这些组件是如何工作的?这些组件是如何影响程序的正确性和性能的?本书予以解答。K&R的hello程序要完成运行,系统的每个组成部分都需要协调工作。本书就是告诉你在系统上运行hello程序时,系统发生了什么以及为什么会这样。1.1 信息就是位+上下文图1-2真的是hello.c的ASCII码表示,除了可见的字符外,不可见的是sp和\n,从第一个到最后一个完整的表示出来。这就是文本文件。“\n”是在每一行的结尾处,或者说有“\n"才有一行的
阅读全文

浙公网安备 33010602011771号