《深入理解计算机系统》速读提问

20179203李鹏举 20179203李鹏举     2022-10-01     163

关键词:

一、计算机系统漫游

本章通过运行一个hello程序为例,概述了计算机操作系统的运行过程,讲述了组成计算机系统的硬件和系统软件,讲到了处理器处理一个程序的过程。
这一章中出现了一个我首次听说到的词汇Amdahl定律,该定律的主要思想是,当我们对系统的某个部分加速时,其对整体性能的影响取决于该部分的重要性和加速程度。也就是说要加速整个系统,必须提升系统中大部分的速度。

问题:这个提速是指的硬件性能上的提升,还是操作系统算法上的优化,或是两个都能影响,谁起到的影响作用更大呢?

二、信息的表示和处理

本章重点讲述了计算机中信息的位表示形式,介绍了无符号数,补码这些信息在计算机中的不同存放方式。同时向我们介绍了32位于64位计算机的区别。最后像我们介绍了计算机中的位级运算和算术运算的方法,计算时会出现溢出的原因和其相对应的实例,让我们感受到不同定义类型的不同存储区间和计算时出现溢出计算机的显示情况。

问题:本章让我看到了平时使用的强制类型转换和计算溢出的弊端,会造成很大的误差,那么我们在大型程序编写时可能很难考虑清每一个变量应当定义怎样的数据类型,也不能全都往大了定义,会造成严重的资源浪费,那么我们该怎么正确解决这个呢,想好变量在程序中未来会不会溢出吗?还是定义动态大小呢?

三、程序的机器级表示

本章主要向我们介绍了汇编语言,介绍了计算机系统中的各种寄存器以及每一个寄存器的作用。本章通过一个个我们熟悉的C语言的代码,如赋值,指针,循环,算术运算等常用的C语言指令向我们讲述当它工作在底层,作为和机器直接交流的汇编语言的时候应当是怎么书写的,以此来让我们更加清晰的了解到计算机系统中指令执行的过程以及各个寄存器的不同功能。

问题1:加载有效地址的leaq命令这是首次用到,不过按书中介绍的看来这个命令主要用来进行公式的运算,不过它在使用时是不是真的与地址的计算无关呢?

问题2:上周的测试中在查看sum.o的汇编书写时发现了cltq这样一条汇编语句,查询之后没有找到合理的解释,书中也没介绍这条语句,不知怎么使用?

四、处理器体系结构

本章主要介绍了ISA,讲解了Y86-64指令集,分析了一下它与我们常见的X86-64的不同,然后向我们讲解了处理器的流水线操作以及其中的一些异常处理机制,本章最主要介绍的还是一些汇编语言的书写,在阅读汇编语句的方面还需要一定的功底,了解指令执行的模式也是这一章需要掌握的重点内容。

问题1:对于本章中出现的一些硬件结构的图没有特别看懂?

问题2:流水线冒险的原理分析和处理还需要深入了解,之前没有学习?

五、优化程序性能

本章主要讲解了代码的优化,讲述了编译器如何能生成高效的代码,首先指出了编程的时候的一些不好的习惯造成的内存资源的浪费,加大系统的开销和执行的时间。接着从底层的硬件架构讲起,了解处理器,寄存器,内存的性能以此来讲解怎么进行高效的编程,消除不必要的工作。

问题:本章重要讲述了优化程序性能,展开循环等等,运用优秀的算法降低开销,那么这与Amdahl定律是否相关呢?

六、存储器层次结构

本章介绍基本的存储技术RAM、ROM等,并且讲解了其价格、读写速度等等的一系列差异,告诉了我们计算机系统中对这些存储器的使用,例如CPU高速缓存区主要使用SRAM,硬盘主要采用ROM制作。那么不同的存储技术的使用就会造成整台计算机各个部件之间的读写速度差异,因此本章还像我们介绍了计算机系统平衡速度差异的办法比如映射,组相联高速缓存等方式

问题:第一次接触存储器山的概念依据书中讲述主要是为了记录程序的相应的读吞吐量的,但是还是不大了解其使用的方法,对于其生成的函数图象看不明白?

七、链接

本章主要讲解了程序执行过程中必须经历的重要的一步链接过程,;链接是将各种代码和数据片段收集并组成一个单一文件的过程。链接器处理目标文件时有三种不同的形式:可重定位,可执行,共享。接着介绍了动态链接和静态链接的两种不同的链接方式,链接器的两个主要任务是符号解析和重定位。

问题1:动态链接和静态链接使用上的区别?我们写好程序需要链接时应当如何选择?操作系统中更多的使用哪种方式?为什么?

问题2:对书中介绍的打桩机制不太了解?

八、异常控制流

本章主要讲解的是操作系统出现的异常,以及对应异常的处理方法。异常是异常控制流的一种形式,一部分由硬件实现,一部分由操作系统实现,因此处理异常需要硬件和软件紧密合作,而异常并不是简单的出错,而是包含中断、故障、终止和陷阱四种不同类型的异常。在操作系统层内核用ECF提供进程的基本概念,在操作系统与应用程序之间的接口通过进程的发射的信号来进行不同的操作。

问题:书中介绍了30种Linux支持的30种不同类型的信号,这是不是一般说的全部的中断处理信号,还是这是不同的信号,不同的操作系统之间有相似之处吗?

九、虚拟内存

本章介绍了操作系统当中的虚拟内存,它是对主存的一个抽象,主存的空间较小,为了实现不同的进程并行,可以都分配相应大小的内存因此引入虚拟内存概念。书中主要讲解了通过分页的方式管理虚拟内存,并且详细的讲解了页表的映射方式,以及当缺页中断来临时如何进行调度的一些算法。

问题:除了分页还有分段,以及段页式的方法,单单使用分页管理不是会造成寻找浪费时间吗?为何不介绍其他的管理方式呢?还是Linux操作系统就是只使用了分页管理的方式?

十、系统级I/O

本章讲述了主存和外部设备之间复制数据的过程,介绍了一些基于Unix I/O模型的系统级函数,它们允许应用程序打开、关闭、读和写文件。Linux内核使用三个相关的数据结构表示打开的文件。通过一些编程的例子,以及具体的函数使用方法向我们展示相应的I/O操作是如何进行的。

问题:我发现C应用程序中包含着标准的I/O函数和RIO函数,而Unix I/O函数单成一类,那么我在C语言文件中可以使用相应的函数吗?

十一、网络编程

本章简单的介绍了网络编程的大体结构,基于客户端和服务器模型进行编程,并且给出了大量的实例来告诉我们如何进行网络编程,介绍了一些网络编程中才会用到的C语言函数,如connect、bind函数等。

问题:网络编程接触的较少,仅仅接触C#,不过我了解到网络编程中为了安全考虑不去使用指针,为何我在书中的程序中依然看到了指针的调用?

十二、并发编程

并发是操作系统非常重要的一个实现方式,它是在时间上重叠的一组逻辑流组成的,通过进程、I/O多路复用和线程构建的并发程序的机制,在本章中主要介绍了进程、线程的并发操作,以及并发中引发的一些问题,比如死锁的产生。

问题:在我看来并发是操作系统中应当重点了解的内容,为何书中一笔带过?就连银行家算法,读写者问题等经典的并发算法都未提及?

速读《深入理解计算机系统》(代码片段)

本周速读了《深入理解计算机系统》这本书,这本书从程序员的角度介绍了计算机系统的内在运作,展示了一些本质概念是如何实际的影响应用程序的正确性、性能和实用性的。收获如下:1、关于进程和线程进程是操作系统对... 查看详情

《深入理解计算机系统》提问

第一章计算机花费大量时间在内存,I/O设备和CPU寄存器之间复制数据,有没有什么方法可以缩短时间?第二章学习了有符号数和无符号数之间的转换,整数的运算,使用补码编码,浮点运算中有时候不注意就会错误,为什么不能... 查看详情

2018-2019-120189221书籍速读第1周

2018-2019-120189221书籍速读第1周《深入理解计算机系统》第1章:怎样理解Amdahl定律?第2章:如何让代码可以正常的运行在任意字长的机器上,怎样进行不同机器之间的代码移植?第3章:C++和Java的编译器是怎样映射产生机器级程序... 查看详情

请问哪里有《深入理解计算机系统》的习题答案

就是每章后面习题的答案哪里能找到?谁能给个网址啊参考技术A我记得可以找到的,不过是英文的,而且不是很全,有前几章的,你用英文去搜索看看。我找到的那个不知道在哪里下的了,不过我发现他的官网提供了解决答案... 查看详情

《构建之法(第三版)》速读提问

...方法和工具。软件工程是一门交叉性的工程学科,它是将计算机科学、数学、工程学和管理学等 查看详情

学习日记之《深入理解计算机系统》

...规中矩了。所以我想去深入学习一下,系统的全面的理解计算机系统,买了《深入理解计算机系统》。书很厚实,文字生动有趣,目前2020年5月10日, 查看详情

《深入理解计算机系统》pdf下载

《深入理解计算机系统》【PDF】下载链接:https://u253469.pipipan.com/fs/253469-230062566   内容提要本书主要介绍了计算机系统的基本概念,包括最底层的内存中的数据表示、流水线指令的构成、虚拟存储器、编译系统、动态加... 查看详情

深入理解计算机系统——第六章

 存储器磁盘磁盘可以存储大量的数据,但是速度慢磁盘由盘片组成,每个盘片有两面,上面覆盖着磁性记录材料,盘片中央有一个可以旋转的主轴   查看详情

深入理解计算机系统系列计算机系统漫游(代码片段)

操作系统原理是计算机行业基本功,想要成为一名计算机领域的专业人士,必不可少要打好基础。最近打算重点读一读《深入理解计算机系统》这本书,回顾和提升自己对计算机和操作系统的理解。这是第一篇:【计算机系统漫... 查看详情

深入理解计算机系统

写好hello.cpp预处理(把include里的东西加到代码里)之后变成hello.i后编译,编译成汇编语言,然后汇编,汇编成机器指令,链接动态库什么的就完成了。hello执行的过程:       查看详情

深入理解计算机系统(代码片段)

深入理解计算机系统卡内基·梅隆一门棵。原书第3版资料.第三版源码.原书第2版资料.计算机系统漫游源文件到目标文件的翻译过程可分为四个阶段,这四个阶段的程序被称为预处理器,编译器,汇编器和链接器,它们一起构成... 查看详情

深入理解计算机系统

                   图1图1中左侧是proc.c程序。右侧是proc.s汇编程序。 proc.s中,5--15行是proc()的汇编代码                                  图2图2中... 查看详情

读书笔记《深入理解计算机系统》(第三版)概述

  《深入理解计算机系统》第三版刚出来不到一周,便买下了这本书;之所以阅读本书,一方面源于网友推荐以及豆瓣不错的评分、评价;另一方面是针对本人非科班出身,计算机系统相关的知识相对比较薄弱,很多情况下此... 查看详情

深入理解计算机系统

 对于程序员来说,计算机基础也是非常重要的一个部分,对于了解程序的执行过程、优化都是非常有帮助的。一、系统的硬件组成 1、总线贯穿整个系统的是一组电子管道,简称总线,总线携带信息字节并且负责在各个... 查看详情

深入理解计算机系统第二章

...tps://www.bilibili.com/video/BV1iW411d7hd?p=2学习书本:《深入理解计算机系统》第3版。信息存储:8位=1字节;内存所有可能地址集合称为“虚拟地址空间”;每个程序对象可以视为一个“字节快”,程序本身是一个字节序列... 查看详情

《深入理解计算机系统》csapp入坑推荐

1、CSAPP是什么CSAPP是什么?CSAPP是一本书,全称ComputerSystemsAProgrammer’sperspective,国内通常的书名翻译是《深入理解计算机系统》电子在线版本可以在github上找到:https://hansimov.gitbook.io/csapp/https://github.com/Hansimov 查看详情

《深入理解计算机系统》第一章计算机系统漫游

《深入理解计算机系统》第一章计算机系统漫游1、本章从一个程序的生命周期讲起,分别对程序的创建、编译、执行、输出、终止进行了详细的解读,从中引出了关于信息上下文、编译系统、高速缓存、操作系统等重要概念。... 查看详情

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

第一章计算机系统漫游在unix系统中从源文件到目标文件的转化室由编译器驱动程序完成的linux>gcc-ohellohello.c编译得过程预处理器,编译器,汇编器,链接器           查看详情