《深入理解计算机系统》读后感_第1页
《深入理解计算机系统》读后感_第2页
《深入理解计算机系统》读后感_第3页
《深入理解计算机系统》读后感_第4页
《深入理解计算机系统》读后感_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、深入理解 计算机系统读后感第一次听到这本书还是我们的导师袁志斌老师介绍的。在这之前我是对它毫无概念可言。袁老师对这本书可谓是推崇备至,因此就介绍给我们全班,并希望说让我们能够静下心好好的去看它、了解它。于是我开始了阅读" 深入"的征程。之所以说是 " 征程 " 是因为这本说的内容确实是很难。至少是对于我来说。很多东西之前都没有接触过。除了那点少的可怜的 C 语言底子之外就剩下数字电路的东西了。其他的基本上是听都没听过。毕竟这本书要求先修的课程有很多,神马计算机组成原理,汇编程序设计。这些都没有学过。但是,就算是这样,凭着被袁老师鼓起的热情,硬着头皮买了它

2、,开始了啃 " 深入 " 的日子。在这里先简单的介绍一下" 深入 " 的基本章节内容。第一章 A Tour of Computer System对计算机系统总体的做了一个简单的介绍,第二章 Representing and Manipulating Information主要说的是信息在计算机中的表示形式。包括整数和浮点数的表示形式。第三章 Machine-Level Representation of Program汇编语言的复习。过程调用,尤其是过程调用 ( 包括递归调用 ) 中堆栈的使用情况是经常会考到的。数据在内存中的 " 对齐 &qu

3、ot; 方式,也是经常出现在考题中的。比如定义一个结构体数组,打印出其中一个元素的地址,问这个地址相对数组起始地址有多少个字节的距离。第四章 Processor Architecture计算机体系结构的内容。处理器结构,各种逻辑门、功能单元,指令集,指令的执行,指令执行的流水线等。第五章 Optimizing Program Performance如何优化程序的执行效率,包括代码的优化,编译器的优化,及 CPU级别的优化。CPU级别的优化,微指令的概念,功能单元上微指令的并行,程序分支的预测等。第六章 The Memory Hierarchy详细介绍了计算机系统中的存储结构。6.1 介绍了不同

4、种类的存储设备以及对应的存取数据的方式。6.2-6.5介绍了存储设备的组织形式,着重介绍了Cache 及其工作方式。6.6-6.7 介绍了程序如何和 cache 打交道,不同的循环嵌套顺序、遍历方向等对 cache 命中的影响。第七章 Linking顾名思义,详细讲解了程序的链接过程,主要分为静态链接和动态链接,以及链接过程中使用到的技术。第八章Exceptional Control Flow顾名思义,本章主要讲解异常控制,不过这里的" 异常 " 并不是 Java 或者C+里的狭义的异常,而是一个广义的"Exceptions"的概念,包括中断(Inter

5、rupt ,硬件层面,主要是 I/O 中断 ) ,陷阱 (Trap, 主动产生的异常,主要用于用户程序和系统内核间的交互,如系统调用 ) ,错误 (Falut ,如除 0 错误;页错误:在虚拟内存中,所请求页面并不在内存中,需要从硬盘读取等。错误可能恢复 ) ,中止 (Abort ,致命错误,无法恢复,如硬件问题等 ) 。在介绍异常处理的同时,引入了进程的概念,对进程控制也进行了详细介绍,以及进程级别的 Exception :信号 (signal), 这个级别的异常处理由操作系统完成,通常叫做上下文切换 (context switch) 。第九章 Measuring Program Execu

6、tion Time本章介绍了如何尽可能准确的测量程序执行的时间。第十章 Virtual Memory非常重要的一章,虚拟存储机制是计算机实现多任务的一项重要技术。计算机正是通过时间片技术使得每个进程在执行时仿佛独占 CPU,进而又通过虚拟存储机制使得每一个进程在执行时,仿佛独占内存。10.1 介绍了虚拟地址和物理地址, CPU进行寻址操作产生的是虚拟地址,通过存储管理单元 (memory management unit) 转换为实际的物理内存地址。10.310.5 讲述了虚拟存储机制的优点:使得内存可以作为硬盘的cache;能够更方便的管理内存;能更好的提供内存保护机制。10.6 介绍了虚拟地

7、址如何转换为物理地址。10.7 很精彩的一节,通过Intel Pentium和 Linux 的实例讲述了整个存储管理机制。记得以前上操作系统课的时候,各种理论、机制学了一大堆,但是就是不知道实际的操作系统到底用的哪套方法。而本节内容正是通过实例让你对刚学的理论机制有一个直观的了解。10.810.10 讲述了存储映射 (Memory Mapping) 、动态内存分配和垃圾回收机制。10.11 很实用的一节,列举了一些C 编程中容易犯的内存引用错误。第十一章 System-Level I/O介绍类 Unix 系统下的 I/O 读写,主要介绍系统层面的 I/O 接口。由于我们日常编程所用的 I/O

8、接口都是各种高级语言提供的经过封装的标准接口,故而如果不进行嵌入式编程的话这部分知识不是必须的,我跳过没读。第十二章 Network Progranmming简单介绍了网络模型, TCP/IP 协议,类 Unix 系统的 socket 接口等。第十三章 Concurrent Programming本章简单介绍了并发程序设计的内容,主要包括:进程级别的并发,各子进程拥有不同的虚拟地址空间,需要 IPC(InterProcess Communication) 机制共享数据,进程之间切换开销大。I/O 复用,事件驱动,单进程运行,共享虚拟地址空间,并发效果不理想。线程,介于上述两种中间,各子线程共享

9、进程的虚拟地址空间,线程间切换开销较小。另外介绍了并发编程中访问共享变量的信号量机制。给出了 4 类容易引起线程不安全的函数。上面这些是我粗略的通读一遍所了解的。限于各种原因,如专业课程,时间安排不来等等,我只能精读过了前面三章,所以与其说是读后感倒不如说是读书笔记。下面便是我的学习所得。1) 对于一个无符号数字x, 截断它到 k 位的结果就相当于计算x mod 2k.(2) 在大多数的机器上 , 整数乘法指令相当地慢 , 需要 12 或者更多的始终周期 , 然而其他整数运算 - 例如加法、减法、位移运算和移位 - 只需要 1 个时钟周期 . 因此 , 编译器使用的一项重要的优化就是试着使用移

10、位和加法运算的组合来代替乘以常数因子的乘法 .(3) 在大多数的机器上 , 整数除法要比整数乘法更慢 - 需要 30 或者更多的始终周期 . 除以 2 的幂也可以用移位运算来实现 , 只不过我们用的是右移 , 而不是左移 . 对于无符号和二进制补码数 , 分别使用逻辑移位和算术移位来达到目的 .(4) 反汇编器一些特性说明:(5)IA32 指令长度从 115 个字节不等 . 指令编码被设计成使常用的指令以及操作较少的指令所需的字节数少 , 二那些不太常用或操作数较多的指令所需字节数较多 .(6) 指令格式是按照这样一种方式设计的 , 从某个给定位置开始 , 可以将字节唯一地解码成机器指令 .

11、例如 , 只有指令 pushlp 是以字节值 55 开头的 .(7) 反汇编器只是根据目标文件中的字节序列来确定汇编代码的 . 它不需要访问程序的源代码或汇编代码 .(8) 反汇编器使用的指令命名规则与 GAS(Gnu ASembler)使用的有些细微的差别 .(9) 与 code.s 中的汇编代码相比 , 我们发现结尾多了一条 nop 指令 . 这条指令根本不会被执行 ( 它在过程返回指令之后 ), 即使执行了也不会有任何影响( 所以称之为 nop, 是"no operation" 的简写 , 同城读作 "no op"). 编译器插入这样的指令是为了填

12、充存储该过程的空间 .(10)IA32 加了一条限制 , 传送指令的两个操作数不能都指向存储器位置.将一个值从一个存储器位置拷到另一个存储器位置需要两条指令 - 第一条指令将源值加载到寄存器值写入目的位置 .(11) 根据惯例 , 所有返回真书或指针值的函数都是通过将结果放在寄存器x 中来达到目的的 .(12) 加载有效地址 (Load effective address) 指令指令的变形 . 它的指令形式是从存储器读取数据到寄存器有引用存储器 . 它的第一个操作数看上去是一个存储器引用指定的位置读入数据 , 而是将有效地址写入到目的操作数leal实际上是 movl, 但实际上它根本就没, 但

13、该指令并不是从( 如寄存器 ).(13) 一元操作 , 只有一个操作数 , 既作源 , 也作目的 . 这个操作数可以是一个寄存器 , 也可以是一个存储器位置 . 比如说 incl(%esp) 会是栈顶元素加 1. 这种语法让人想起 C中的加 1 运算符 (+) 和减 1(-).(14) 二元操作 , 第二个操作数既是源又是目的 . 这种语法让人想起 C中向+=这样的赋值运算符 . 不过要注意 , 源操作数是第一个 , 目的操作数是第二个 , 这是不可交换操作特有的 . 例如 , 指令 sublx,x 使寄存器 x 的值减去 x 中的值 . 第一个操作数可以是立即数、寄存器或存储器位置 . 第二个操作数可以是寄存器或是存储器位置 . 不过同 movl 指令

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论