title: csapp_chapter1
date: 2020-06-13 19:24:20
tags: [网课, CSAPP, 第一章]
CSAPP 和 CMU Introduction to computer system (CS 15-213 2015 fall) 的笔记。
相关资料
1.COURSE-OVERVIEW
从编程者的角度来讲述计算机系统。这也是为什么我第一门课选择这个的原因,因为自己是数学系的,之前学习的内容主要是偏向于算法和一些比较抽象的编程,没这么关注到计算机的底层实现(也许是大计基没上心。。。)所以选择这门课做为第一门补充课,希望能对计算机系统有个整体的认识,虽说自己之后是打算做数据挖掘,但对于基础的东西个人觉得还是需要有所了解。
主要内容包括:
- COMPUTER ARITHMETIC (计算机算术规则)
- ASSEMBLY (汇编)
- MEMORY (内存)
- ASYMPTOTIC COMPLEXITY (渐近性?)
- IO (写入写出)
一些重要的概念:
-
Amdahl 定律
系统某部分执行时间和总时间比例为 α \alpha α,而该部分性能提升为 k k k,可计算加速比S
S = T o l d T n e w = 1 ( 1 − α ) + α / k S=\frac{T_{old}}{T_{new}} =\frac{1}{(1-\alpha)+\alpha / k} S=TnewTold=(1−α)+α/k1
-
并发和并行
- 并发(concurrancy):同时具有多个活动的系统。
- 并行(parallelism):使用并发来使系统运行更快。
-
一些抽象
- 文件是 I/O 设备的抽象。
- 虚拟内存是程序存储器的抽象。
- 进程(process)是正在运行程序的抽象。
- 虚拟机是整个计算机的抽象。
2.BITS,BYTES,INTEGER,float
BITS AND BYTES
- 布尔代数的and, or, not, Xor运算形成布尔环(代数中的环)。
- 集合运算的Intersection, Union, Symmetric difference, Complement。
- 逻辑运算的&&, ||, !.
- 左移(left shift): 补0。 右移:逻辑右移补0,算术右移根据补码补0/1.
INT
- represent
- Unsigned 和 Two’s Complement (补码)。
- Range: 2 w − 1 2^w-1 2w−1 和 [ − 2 w − 1 , 2 w − 1 − 1 ] [-2^{w-1}, 2^{w-1}-1] [−2w−1,2w−1−1]
- 无符号整型和补码之间的关系.[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3N39mNMh-1598882885721)(/assets/photos/bits_T2U.png)]
- 扩张和截断,扩张是填充符号位,截断是取模。
- arithmetic
- 对于加减乘,因为会溢出,通常的做法不是扩大存储的字节,而是阶段取模。
- u ∗ 2 k = u < < k u*2^k = u << k u∗2k=u<<k 乘法左移,除法右移。
- 内存可以看作是一个大的线性数组,每个地方都有对应的地址。
Float
-
IEEE float:
( − 1 ) S M 2 E (-1)^{S}\ \mathrm{M}\ 2^{\mathrm{E}} (−1)S M 2E-
S 决定正负,M是[1.0, 2.0)的二进制小数,E决定阶数。
以32位的float为例,0-22位是frac,即M; 23-30位是exp, E = e x p − b i a s E = exp - bias E=exp−bias, 其中 b i a s = 2 k − 1 − 1 bias = 2^{k-1} -1 bias=2k−1−1, 这样做的好处是exp变为unsign的了;31位是S。 -
根据exp的值,分为规格化(normalized), 非规格化(denormalized(阶码全为0)), 和特殊值(infinity(阶码全1,分数为0), nan(阶码全1,分数不为0)).
-
注意到浮点数的分布越趋于0越密集。
-
-
舍入(rounding) 默认向偶数舍入。
-
arithmetic
- 加:可交换不可结合(大数吃小数),Abelian Group. 有单调性。
- 移位对其后加减
- 乘:可交换不可结合
- S 1 ∧ S 2 \mathrm{S} 1^{\wedge} \mathrm{S} 2 S1∧S2, M 1 × M 2 \mathrm{M} 1 \times \mathrm{M} 2 M1×M2, E 1 + E 2 E 1+E 2 E1+E2