CSAPP阅读记录(第一章)
warning:
这篇文章距离上次修改已过439天,其中的内容可能已经有所变动。
计算机系统的漫游
1.4处理器读并解释存储在内存中的指令
1.4.1系统的硬件组成
- 总线
I/O设备
控制器是I/O设备本身或者系统的主印制电路板上的芯片组 适配器则是一块插在主板插槽上的卡
主存
主存是由一组动态随机存储器(DRAM)芯片组成。 存储器可以看成一个线性的字节数组
处理器
PC程序计数器 ALU算数逻辑单元 一般是寄存器与ALU进行交互
1.5高速缓存至关重要
高速缓存存储器一般与寄存器交互,属于过渡主存与寄存器之间的速度差的组件
1.6存储设备形成层次结构
存储层次结构的主要思想是上一层的存储器作为低一层的存储器的高速缓存
eg.L3高速缓存可以看成是主存的高速缓存
1.7操作系统管理硬件
操作系统可以看成是应用程序与硬件之间插入的一层软件
操作系统的两个基本功能:
- 防止硬件被失控的应用程序滥用
向应用程序提供简单一致的机制来控制复杂而又通常大不相同的低级硬件设备
注:操作系统通过(进程,虚拟内存,文件)来实现这两个功能
1.7.1进程
进程是操作系统对一个正在运行的程序的一种抽象。在一个系统上可以同时运行多个进程,而每个进程都好像是在独占地使用硬件。
并发运行:一个进程的指令和另一个进程的指令是交错执行的。
上下文:操作系统保持跟踪进程运行所需的所有状态信息。
上下文切换:把控制权从当前进程转移到某个新进程时,保存当前进上下文,恢复新进程上下文。
1.7.2线程
一个进程可以由多个称为线程的执行单元组成
1.7.3虚拟内存
每个进程看到的内存都是一致的,称为虚拟地址空间
每个进程看到的虚拟内存都是由大量的区构成,由低地址向上:
程序代码和数据
c全局变量相对应的数据位置,直接按照可执行目标文件的内容初始化的
堆
调用像malloc和free这样的C标准库函数时,堆可以在运行时动态地扩展和收缩
共享库
存放C标准库和数学库等
栈
位于用户虚拟地址顶部的是用户栈每次调用一个函数时栈就会增长;从一个函数返回时,栈就会收缩
内核虚拟内存
地址空间顶部的区域是为内核保留的,不允许应用程序读写
基本思想就是把一个进程虚拟内存的内容存储在磁盘上,然后用主存作为磁盘的高速缓存。
1.7.4文件
系统中的所有输入输出都是通过使用一小组称为Unix I/O的系统函数调用读写文件来实现的
1.9重要主题
1.9.1Amdahl定路律

1.9.2并发和并行
并发:指一个具有多个活动的系统
并行:指用并发来是一个系统运行的更快
系统结构层次中由高到低的顺序重点强调三个层次:
线程级并发
超线程:同时多线程
- 指令级并行
现代处理器可以同时执行多条指令的属性称为指令级并行 - 单指令、多数据并行
允许一条指令产生多个可以并行执行的操作,这种方式称为单指令、多数据
1.9.3计算机系统中抽象的重要性
在处理器里,指令集架构提供了对实际处理器硬件的抽象