深入理解计算机系统 Start && 第一章要点

对此书已经慕名已久了,抽空看了第1,2,3,5章,其他章节等有空闲继续看吧。

我的许多博客是给自己快速复习使用的,比如此读书后感,你可以根据我下面的建议读完原书几章再回来复习一下(或许那时候就没必要回来这里复习了):

第一章个人认为必须看,理由有:

  1.它很短,花不了多少时间

  2.它有趣味,我犹记得看此章节的畅快。

第二章个人认为必须看,而且要认真看,不要跳

第三章个人认为最好看一看,但或许用处不会太大,讲的是程序的汇编级代码,可以用来调试、逆工程、查看性能等

第四章我还没看

第五章个人认为只需看它的总结就好,不过我看此章节时状态不如看第一二章,不知道漏思考了哪些东西。

深入理解计算机系统 第一章要点:

  1.源文件到可执行程序的历程:

    预处理器:把#开头的代码或文件插入源程序中,如#define,#include等

    编译器:把上一步代码变成汇编代码

    汇编器:把汇编代码变成机器码并打包成可重定位的目标程序

    链接器:合并其他库生成可执行程序

  2.操作系统提供的3个抽象

    1.进程抽象:通过切换  上下文  切换进程,让单核cpu好像并行运行多个进程。上下文包括很多信息,比如pc(程序计数器)和寄存器的当前值,以及主存的内容等。

    2.虚拟存储器:它为每个进程提供了一个假象,即每个进程都在独占地使用主存。每个进程看到的都是一致的存储器,称为虚拟地址空间:

    

      最低部是程序代码和数据:对所有进程来说,代码是从同一固定地址开始的,接着是全局变量。

      堆:运行时堆紧随其后,可伸缩

      共享库:

      用户栈:可伸缩

      内核虚拟存储器:内核总是存在在内存中,是操作系统的一部分(相信各个进程看到的内核存储器是共同的一个)

    3.文件

      

  3.几个术语

    1.线程级并发:超线程:运行一个cpu同时执行多个控制流。它涉及cpu某些硬件有多个备份,比如pc和寄存器文件,而其他的硬件部分只有一份,比如执行浮点数算术运算的单元。常规的处理器大概需要2万个时钟周期切换不同线程,而超线程只需单个周期。比如线程a在从存储器读数据,那a就可以让出cpu的运算控制资源,cpu可以转到线程b,备份的pc和寄存器可以用来给线程b使用。

    2.指令级并发:超标量

    3.单指令、多数据并行:simd并行:允许一条指令产生多个可以并行的操作。这个可以用来处理矩阵运算。向量运算等。

posted @ 2017-05-29 10:16  BigTreee  阅读(183)  评论(0编辑  收藏  举报