• 深入理解计算机系统 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并行:允许一条指令产生多个可以并行的操作。这个可以用来处理矩阵运算。向量运算等。

  • 相关阅读:
    thinkphp empty标签
    thinkphp present标签
    if标签
    thinkphp 范围标签
    thinkphp 比较标签
    thinkphp switch标签
    thinkphp for标签
    thinkphp foreach标签
    QueryList 来做采集
    thinkphp volist标签
  • 原文地址:https://www.cnblogs.com/Tearix/p/6874811.html
Copyright © 2020-2023  润新知