深入理解计算机系统 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并行:允许一条指令产生多个可以并行的操作。这个可以用来处理矩阵运算。向量运算等。
深入理解计算机系统 Start && 第一章要点的更多相关文章
- <深入理解计算机系统>第七章读书笔记
第七章读书笔记 链接 链接:将各种代码和数据部分收集起来并组合成为一个单一文件的过程.(这个文件可被加载或拷贝到存储器并执行) 链接可以执行于编译,加载或运行时. 静态链接: 两个主要任务: 1 符号 ...
- 深入理解计算机系统_3e 第九章家庭作业 CS:APP3e chapter 9 homework
9.11 A. 00001001 111100 B. +----------------------------+ | Parameter Value | +--------------------- ...
- 深入理解计算机系统 第三章 程序的机器级表示 part1
如题所示,这一章讲解了程序在机器中是怎样表示的,主要讲汇编语言与机器语言. 学习什么,为什么学,以及学了之后有什么用 我们不用学习如何创建机器级的代码,但是我们要能够阅读和理解机器级的代码. 虽然现代 ...
- 深入理解计算机系统 第三章 程序的机器级表示 Part2 第二遍
第一遍对应笔记链接 https://www.cnblogs.com/stone94/p/9943779.html 本章汇编代码中常出现的几个指令及其含义 1.push 操作数的个数:1 将操作数(一般 ...
- 深入理解计算机系统 第三章 程序的机器级表示 Part1 第二遍
第一遍对应笔记链接 https://www.cnblogs.com/stone94/p/9905345.html 机器级代码 计算机系统使用了多种不同形式的抽象,利用更简单的抽象模型来隐藏实现的细节. ...
- 深入理解计算机系统_3e 第二章家庭作业答案
初始完成者:哈尔滨工业大学 李秋豪 许可:除2.55对应代码外(如需使用请联系randy.bryant@cs.cmu.edu),任何人可以自由的使用,修改,分发本文档的代码. 本机环境: (有一些需要 ...
- 2013337朱荟潼 Linux&深入理解计算机系统第七章读书笔记——链接
第七章--链接 0.总结 链接编译时可以采用静态链接或动态链接. 连接器主要任务:符号解析和重定位. 多个目标文件可定义相同的符号,可以被连接到一个单独的静态库. 链接器可以生成部分链接的可执行文件 ...
- 深入理解计算机系统_3e 第二章家庭作业 CS:APP3e chapter 2 homework
初始完成日期:2017.9.26 许可:除2.55对应代码外(如需使用请联系 randy.bryant@cs.cmu.edu),任何人可以自由的使用,修改,分发本文档的代码. 本机环境: (有一些需要 ...
- 深入理解计算机系统 第三章 程序的机器级表示 part3
这周看了刘老师提供的相关视频,以及书中对应的章节“3.7 过程” 这一节分为运行时栈.转移控制.数据传送.栈上的局部存储.寄存器中的局部存储空间和递归过程这 6 个小节 其中前 3 小节看懂了一部分内 ...
随机推荐
- 当Django模型迁移时,报No migrations to apply 问题时
前言:当更改model时在次迁移是不是经常报此类错误,解决以下两点便可以更新成功 1. 删除修改模型对应的app应用下的migrations中的生成文件 2. 进入数据库,找到django_migra ...
- spring oauth2获取token时WARN:Could not decode JSON for additional information: BaseClientDetails解决办法
错误描述 简述:oauth_client_details表中additional_information字段默认为null,ClientDetails实体类中类型为Map<String,Obje ...
- SmartDb代码修改
在之前的一篇博客中介绍过SmartDB(https://blog.csdn.net/wuquan_1230/article/details/89145012),在使用的过程中发现一个问题,会造成内存泄 ...
- 019_go语言中的方法
代码演示 package main import "fmt" type rect struct { width, heigh int } func (r *rect) area() ...
- python基础语法和实战练习
(一)Python基础学习 Num01:python的基本数据类型 ①字符串:可进行拼接和截取 ②数字:int,float,complex(复数) 涉及到格式转换:int(x)转换为整数,float( ...
- 【JVM】JVM优化过程全记录
请大神移步:https://segmentfault.com/a/1190000010510968?utm_source=tuicool&utm_medium=referral 今天看JVM群 ...
- spring boot-controller中的一个方法获取其他方法返回的值
@RequestMapping("/test") public String getData() { return "redirect:/other";} re ...
- golang 总结库
前言 这个是用来进行总结学习的,相当于自学笔记 记录的东西,是随时更新的, 有些东西,可能就是记录下,并不一定代表他一定能解决问题 不要做纯粹的文字的搬运工,要多做灵感整理 我看文章会看好多,所以常常 ...
- 【异常检测】孤立森林(Isolation Forest)算法简介
简介 工作的过程中经常会遇到这样一个问题,在构建模型训练数据时,我们很难保证训练数据的纯净度,数据中往往会参杂很多被错误标记噪声数据,而数据的质量决定了最终模型性能的好坏.如果进行人工二次标记,成本会 ...
- Jmeter系列(51)- 详解 Transaction Controller 事务控制器
如果你想从头学习Jmeter,可以看看这个系列的文章哦 https://www.cnblogs.com/poloyy/category/1746599.html 简单介绍 可以添加多个取样器(samp ...