
CS:APP/深入理解计算机系统学习旅程
文章平均质量分 83
就……学习路程
RRRR_ChiAn
这个作者很懒,什么都没留下…
展开
-
CS:APP/深入理解计算机系统-第三章(3.1~3.2)
程序的机器级表示汇编代码是机器代码的文本表示,给出程序中的每一条指令。然后GCC 调用汇编器和链接器,根据汇编代码生成可执行的机器代码。通常情况下,使用现代的优化编译器产生的代码至少与一个熟练的汇编语言程序员手工编写的代码一样有效。最大的优点是,用高级语言编写的程序可以在很多不同的机器上编译和执行,而汇编代码则是与特定机器密切相关的。1. 机器级代码计算机系统使用了多种不同形式的抽象,利用更简单的抽象模型来隐藏实现的细节。对于机器级编程来说,其中两种抽象尤为重要。第一种是由指令集体系结构原创 2021-10-26 12:03:31 · 504 阅读 · 0 评论 -
CS:APP/深入理解计算机系统-第二章(2.4)
本节主要介绍浮点数。2.4.1 二进制小数首先看看十进制小数的数学表示形式:这里每个d都是一个0~9的十进制数,i是正还是负取决于d在小数点左边还是右边。那么尝试使用这种数学表示形式来使用二进制表示小数:b代表0或1的二进制数,i是正还是负取决于b在小数点左边还是右边。表示为假设我们仅考虑有限长度的编码,那么十进制表示法不能准确表达例如这种数。类似,小数的二进制表示法只能表示那些能够被携程的数。其他的值只能够被近似地表示。例如,数字可以用十进制小数0....原创 2021-10-23 16:56:10 · 130 阅读 · 0 评论 -
CS:APP/深入理解计算机系统-第二章(2.3)
2.3节主要是介绍整数运算,在写代码的时候可能会遇见整数相加得出一个负数、x<y和x-y<0的结果不一致的现象。这是由于计算机运算的有限性导致的,本节可以帮助理解。2.3.1 无符号加法考虑两个非负整数x 和y, 满足 。每个数都能表示为位无符号数字。然而,如果计算它们的和,我们就有一个可能的范围。表示这个和可能需要位。然而一般来说,编程语言支持的是固定精度的运算,因此计算机上的“加法”和“乘法”这样的运算不用于它们在整数上的相应运算。计算机上的无符号加法的定义是:假设有两个数x原创 2021-10-23 12:14:54 · 235 阅读 · 0 评论 -
CS:APP/深入理解计算机系统-第二章(2.2)
2.2.1 整型数据类型以C语言为例,32和64位程序的不同类型的整型数据取值范围如下所示:(32bit)(64bit)2.2.2 无符号数的编码无符号数的表示有一个很重要的属性:介于0~-1之间的数有一个唯一的w位的值编码。例如,有一个无符号的十进制数11,有一个4位的二进制表示,即1011。2.2.3 补码编码计算机中使用补码表示负数。对于补码来说,二进制表示中的最高有效位叫做符号位,0表示正数,1表示负数,例如,0001表示1,0101表示5,1011表示...原创 2021-10-22 21:59:04 · 108 阅读 · 0 评论 -
CS:APP/深入理解计算机系统-第二章(2.1)
学习本章的意义可以用这么一句话概括:to write programs that work correctly over the full range of numeric values and that are portable across different combinations of machine, operating system, and compiler.2.1 Information Storage计算机使用1个byte或者8个bit作为最小的可寻址内存单元。一个machi原创 2021-10-17 22:23:07 · 172 阅读 · 0 评论 -
CS:APP/深入理解计算机系统-第一章(1.8~1.10)
这两天有点忙也有点累,在周末晚上给自己充充电吧1.8 Systems Communicate with Other Systems Using Networks前面把system描述的是一个独立存在的东西,但现今的system都会用通过网络network与其他system建立起连接。从一整个系统的角度来看,网络可以看作是一个IO设备,就像下图展示的:一个system的数据可以从Main memory出发,经过Network adapter流传至另一台机器;同样数据可以把其他机器发送的数据存.原创 2021-10-10 23:15:18 · 175 阅读 · 0 评论 -
CS:APP/深入理解计算机系统-第一章(1.7~1.7)
1.7 The Operating System Manages the Hardware简单来说程序——操作系统——硬件设备三者之间的关系:操作系统是位于程序和硬件设备之间的软件层,简单示意图如下:操作系统可以起到两个主要的作用:1.保护硬件不会被应用程序滥用 2.为应用程序提供简单、统一的机制,用于方便操作复杂且差异很大的底层(low-level)硬件设备。操作系统通过下图所示的抽象来实现这两个作用:files是IO设备的抽象,virtu...原创 2021-10-06 22:05:12 · 181 阅读 · 0 评论 -
CS:APP/深入理解计算机系统-第一章(1.5~1.6)
1.5 Caches Matter前面1.4节介绍的hello程序运行流程里有很多次copy操作,这对实际程序是一个很大的负担。对于系统设计工程师来说,要想办法加速copy操作。从物理层面来说,读取大存储空间的设备内的内容时,速度会远低与读取小存储空间的设备。对应于register file和main memory,前者只存几百个byte的信息,所以读取前者的时间远小于读取后者。并且随着半导体技术的发展,processor-memory gap持续扩大,加速processor比加速main me原创 2021-10-06 12:10:21 · 285 阅读 · 0 评论 -
CS:APP/深入理解计算机系统-第一章(1.3~1.4)
1.3 It Pays to Understand How Compilation Systems Work为什么程序员需要理解编译系统是怎么工作的?本书给出如下解答:1. Optimizing program performance.为了能够make good coding decisions in our programs,我们需要对机器级的代码和编译器如何把C转化成机器代码有一定的了解。这个make good coding decisions举例来说就是:什么时候选用swith,什么时原创 2021-10-04 22:22:23 · 304 阅读 · 0 评论 -
CS:APP/深入理解计算机系统-第一章(1.1~1.2)
1.1 Information Is Bits + Context这一小节内容很简单,以#include <stdio.h>int main(){ printf("hello, world\n"); return 0;}这段hello world代码开始(瞬间把我带回了大一上C++编程课的日子)介绍了存储这段代码的text file是由一系列bit构成,每8个bit组成一个byte。大多计算机使用ASCII码表示text file里面的每个字符,一个原创 2021-10-04 20:39:56 · 148 阅读 · 0 评论 -
CS:APP/深入理解计算机系统 开篇
看到这本书的英文电子版里密密麻麻的英文字母之后感觉头皮发麻。 还是得硬着头皮看下去,本硕都不是计算机的,coding能力真的需要提升。 为了方便理解整本书,在网上搜了很多前人对如何学习这本书的建议,总的来说有以下几点:初次学习肯定不能整本书从头到尾慢慢看,这是低效的。根据前人经验,本书特色的必读章节是1,2,3,5,7;选读章节是8,9;其他书籍更合适的是:4,6。对于10,11,12,可以先看着。 结合书本里带有答案的习题能够更好的理解知识内容。...原创 2021-10-04 16:49:59 · 168 阅读 · 0 评论