- 计算机系统由硬件和系统软件组成。
- 信息 = 位 + 上下文
- 程序被其他程序翻译成不同的格式(编译系统)
- 处理器读并解释储存在内存中的指令(程序运行)
- 操作系统
- 网络
- 一些重要概念
信息 = 位 + 上下文
- 源程序:0和1组成的比特序列(字节序列),序列中每个字节对应程序的一个字符。
- 所有信息都是一串比特,区分数据对象的唯一方法是上下文。
- 只由ASCII码字符构成的文件称为文本文件, 其他文件成为二进制文件。
程序被其他程序翻译成不同的格式(编译系统)
处理器读并解释储存在内存中的指令(程序运行)
编译系统的翻译结果储存在磁盘上,等待命令行调用后运行。
-
shell:命令行解释器
系统的硬件组成
I/O总线:传送字节或字(字节块)[1]
-
I/O设备:用户输入,用户输出,磁盘
每个I/O设备都通过控制器或适配器与总线相连
主存:临时存储设备,存储程序和数据(可以理解为线性字节数组)
-
处理器CPU:驱动解释或执行主存中的指令
- PC:程序计数器,指向主存中的命令地址
- ALU:算术/逻辑单元,对数据或地址进行算术运算
- 寄存器文件
程序运行过程
高速缓存存储器
- 用于存储处理器近期可能用到的信息,使得大部分内存操作都可以在高速缓存中完成
- 多级高速缓存:两级(L1,L2)、三级(L1,L2,L3)
存储器层次结构
- 上一层存储器作为下一层的高速缓存
操作系统
操作系统可以理解为应用程序和硬件之间插入的一层软件。
-
操作系统的基本功能
- 防止硬件被失控的应用程序滥用
- 为应用程序提供控制硬件的机制
操作系统的三个基本抽象概念
-
进程:运行中的程序
并发运行:两个进程的指令交错执行,通过处理器的上下文切换实现。
上下文:进程运行所需的状态信息,包括PC和寄存器文件的当前值和主存内容等。
上下文切换:保存当前进程上下文,恢复新进程上下文,并将控制权交给新进程。
操作系统内核:系统管理进程所用代码和数据的集合,操作系统拥有控制权实际上内核掌握控制权。
线程:进程的执行单元,一个线程可以理解为一个控制流。相较于多进程,多线程之间更容易共享数据且更高效。
-
虚拟内存:每个进程看到相同的内存空间
- 程序代码和数据
- 堆:malloc/free
- 共享库:C标准库、数学库等
- 栈:函数
- 内核虚拟内存:应用程序不能直接读写内核文件或调用内核函数,必须通过调用内核来执行这些操作
文件:文件就是字节序列。所有I\O设备(包括网络)都可以看做文件。
网络
- 网络也是一种I/O设备。
- 网络的功能
- 将信息从一台机器复制到另外一台机器,如电子邮件,即时通信等。
- 本地服务器可以通过网络在远程服务器上执行程序并返回到本地。
一些重要概念
Amdahl定律
系统某个部分加速后,对系统总性能的影响取决于该部分的比例和加速程度。
要想显著加速系统,就需要提升系统中相当大部分的速度。
并发与并行
并发:具有多个活动的系统
并行:用并发使系统运行更快
- 线程级并发
- 单处理器系统只能模拟进程的并发执行(上下文切换)。
- 多处理器系统减少了模拟进程并发的需要。
- 超线程处理器允许一个处理器执行多个控制流,可以实现多线程并行执行。
- 指令级并行
- 现代处理器可以同时执行多条指令。
- 流水线(pipelining):将指令分为多个不同步骤,处理器分为多个不同阶段,一个阶段执行一个步骤,且不同阶段可以并行操作。
- 超标量处理器:执行速率比一个周期执行一条指令更快。
- 单指令、多数据并行(SIMD并行)
- 允许一条指令产生多个可以并行的操作,如单精度浮点数加法。
抽象
进程:对运行中的程序的抽象
虚拟内存:对程序存储器的抽象
文件:对I/O设备的抽象
指令集架构:对处理器的抽象
虚拟机:对整个计算机的抽象,包括操作系统、处理器、程序
-
我们所说的32位,64位均指机器字长 ↩