CSAPP20222023准备开搞
【3存储器|计算机组成原理-哔哩哔哩】 https://b23.tv/0edyyHJ
CSAPP. https://www.acwing.com/solution/content/40385/ 之前这个要继续维护呀
第一章参考ref:
https://blog.csdn.net/qq_29051413/article/details/116450610
https://relph1119.github.io/csapp-notes/#/ch01/note
https://chuxiaoyu.cn/csapp-chap01
第二章:
https://blog.csdn.net/qq_29051413/article/details/116455308
视频中文讲解:https://www.bilibili.com/video/BV1cD4y1D7uR?p=5
extra:目前问题:光读了没做练习exercise检验。 有空一定要做啊!
目录:
1. 第一章反复反复算是看了一遍.
2. 第二章tbc就不单独开一章了,直接接在这里(有空30日补或者这俩天)
3. 第三章 。好难。23日前要写!
---
第六章 目前还是tbc | --- QED
第一章,计算机系统漫游
#include<stdio.h>
int main()
{
cin >> n;
printf("hello, World\n");
return 0;
}
1.1 信息就是位 + 上下文
源码是以ASCII 码表示的。
#
是35, i
是105 等等。 (这里有个对应表,话说我写过转码的…逻辑就是list里对应map上即可,未来有空时写全的吧, 模仿一下百度的那些网站的逻辑, 从实践角度理解解析)
1.2 程序被其他程序翻译成不同的格式
源代码—>cpp预处理器–>hello.i—>编译器ccl—>hello.s—>汇编器as—>hello.o(可重定位目标程序, 二进制)—>链接器(Id) —>hello可执行目标程序(二进制)
1.3 编译系统如何工作是大有益处的
【优化复杂度】
【链接】
【避免安全漏洞】. 缓冲区溢出错误。(未)限制从不受信任的源接收数据的数量和格式。
1.4 处理器读并解释存储在内存中的指令
shell 0=0
linux> ./hello
hello, world
linux>
- 系统的硬件组成
- 总线
- I/O设备
- 主存(内存)。DRAM
- 处理器CPU
- 运行hello程序
1.5 高速缓存至关重要
静态随机访问存储器
局部性原理,程序倾向于访问局部区域里的数据和代码。
1.6 存储设备形成层次结构
后边明天再写 LO 寄存器
L1 高速缓存 SRAM (取自L2)
L2
L3 (取自主存)
L4 主存 DRAM
L5 硬盘存储
L6 远程二级存储,分布式文件系统,Web服务器
1.7 操作系统管理硬件
- 进程,代码和数据是系统内存中唯一的对象。进程是操作系统对一个正在运行程序的一种抽象。有多个进程,并发运行指多个进程的指令交错执行
- 线程
- 虚拟内存
- 文件
1.8 系统之间利用网络通信
P14 这个还是挺有意思,个人主机里(各硬件模块间)和外部网络的信息传递。通过via 网络适配器
1.9 重要主题
- Amdahl 定律
【就是一个配件unit的效率提升,对于整个系统而言是有限的,,只是把这块的耗时缩短,对于整个系统而言,加速效果要小于这部分的加速比】
性能指标:常用$T_{old} / T_{new}$ 原始系统时间:修改后的系统所需时间。如2.5x,即是原系统的2.5倍效率。
${T_{new}} = (1 - \alpha )T_{old} + ( \\alpha T_{old}) / k = T_{old}((1- \alpha ) + \alpha /k)$
即加速比$ S = T_{old}/T_{new} = \frac{1}{(1-\alpha ) + \alpha /k}$
- 并发和并行
并发concurrency:多个活动一起发,通讯量大
并行parallelism,使用并发来使系统运行得更快。
1. 线程级。 使用线程,我们可以再一个进程中执行多个控制流。(模拟出来的,计算机在执行过程中快速切换来实现)
2. 指令级。 pipeline【流水线】 技巧:将执行一条指令所需要的活动划分成不同的步骤。每个(视硬件)阶段执行一个步骤,这些阶段可以并行地操作,处理不同指令的不同部分。
3. 单指令、多数据并行。
cpu有特殊硬件,允许一条指令产生多个可以并行执行的操作。called单指令,多数据。SIMD(single instruction, multiple data)并行。目的:一般是提高处理影响、声音和视频数据应用的执行速度。
- 计算机系统中抽象的重要性
操作系统 – 处理器(指令集架构) –主存 – I/O设备(文件)
虚拟机 –
– – – – – – – 进程
– – – – – – – – – – – – – – – – – 虚拟内存
1.10 小结
$\color{cyan}{操作系统内核kernal是应用程序和硬件之间的媒介。}$
提供三个基本抽象:①文件对I/O设备的抽象;②虚拟内存对主存和磁盘的抽象;③进程是cpu、主存、I/O设备的抽象。
网络是pc间通讯手段,看成I/O设备。