2018-2019-1 20189221 《深入学习计算机系统》第 1 周学习总结
第 1 章 计算机系统漫游
这一章通过研究“hello,world”这个简单程序的生命周期,介绍计算机系统的主要概念和主题
1.1 信息就是位+上下文
计算机系统中的一切数据都是由一串比特表示的,区分不同数据对象的唯一方法是我们读到这些数据对象时的上下文
C语言与Unix操作系统关系密切,是为实践目的设计的1.2 程序被其他程序翻译成不同的格式
如娄老师上课所讲(以Linux中gcc为例):
hello.c—>hello.i—>hello.s—>hello.o—>hellogcc -E hello.c -o hello.i /*预处理生成编译文件*/ gcc -S hello.i -o hello.s /*编译生成汇编语言程序*/ gcc -C hello.s -o hello.o /*汇编生成可重定位目标程序*/ gcc hello.o -o hello /*链接生成可执行目标文件*/
1.3 了解编译系统如何工作是大有益处的
优化程序性能
理解链接时出现的错误
避免安全漏洞1.4 处理器读并解释存储在存储器中的指令
- 1.4.1 系统的硬件组成
典型的硬件组织:总线、I/O设备、主存、处理器- 1.4.2 运行hello程序
1.5 高速缓存至关重要
cache及调页算法对程序性能有极大影响1.6 存储设备形成层次结构
上一层的存储器作为低一层存储器的高速缓存1.7 操作系统管理硬件
防止硬件被失控的应用程序滥用
向应用程序提供简单一致的机制来控制复杂而又通常大不相同的低级硬件设备
- 1.7.1 进程
进程是OS对正在运行的程序的抽象
上下文切换是保存当前进程的上下文,恢复新进程的上下文- 1.7.2 线程
进程可以由多个线程组成,线程不独自占有资源,更易被共享- 1.7.3 虚拟内存
对每个进程都虚拟全部的内存资源,通过调页算法完成磁盘到主存的交换- 1.7.4 文件
文件就是字节序列1.8 系统之间利用网络通信
使用telnet服务器在远程主机上运行hello程序
- 用户在键盘上输入hello
- 客户端向telnet服务器发送字符串“hello”
- 服务器向shell发送字符串“hello”,shell运行hello程序并将输出发送给telnet服务器
- telnet服务器向客户端发送输出的字符串“hello world ”
- 客户端在显示器上打印字符串“hello world ”
1.9 重要主题
- 1.9.1 Amdahl定律
加速比为[S = 1/((1-a)+a/k) ]
- 1.9.2 并发和并行
并发指同一时刻:线程级并发指多处理器或超线程(同时多线程)
并行指同时间段:指令级并行指流水线或超标量处理器- 1.9.3 计算机系统中抽象的重要性
文件是对I/O设备的抽象
虚拟内存是对程序存储器的抽象
进程是对一个正在运行的程序的抽象
虚拟机是对整个计算机系统的抽象- ...