1.1信息就是上下文
源程序实际上就是由值0和1组成的位(bit),一个字节为8个位。
系统中所有的信息—包括磁盘文件,存储器中的程序,存储器中存放的用户数据以及网络上传送的数据,都是由一串位表示的。区分不同数据对象的唯一方法就是我们读到这些数据对象时的上下文。
1.2程序被其他程序翻译成不同的格式
unix系统上源文件通过编译系统(预处理器,编译器,汇编器,链接器)转换为可执行目标文件
汇编语言是非常有用的,因为它为不同高级语言的不同编译器提供的通用的输出语言
1.3了解编译系统如何工作是大有益处的
1.4处理器读并解释存储在存储器中的指令
1.4.1系统硬件的组成
总线(贯穿整个系统的一组电子管道称为总线,它携带信息字节并负责在各个部件间传递。通常总线被设计成传送定长的字节块,即字。32位机器上一个字是4个字节)
I/O设备(每个I/O设备通过一个控制器或适配器与I/O总线相连。控制器与适配器之间的区别主要在于它们的封装方式。控制器通常称为主板,适配器则是插在卡槽上的卡)
主存(从逻辑上,存储器是一个现线性的字节数组,每个字节都有其唯一的地址即数组索引)
处理器(指令集结构描述的是每条机器代码指令的效果,而微体系结构描述的是处理器实际上是如何实现的)
1.4.2运行hello程序
1.外壳等待输入
2.从键盘上输入字符后外壳程序将字符逐一读入寄存器,再把它存放在储存器中
3.结束输入,外壳加载可执行文件(经过编译系统),将目标文件的代码和数据从磁盘复制到主存
4.处理器开始执行机器语言指令,将要输出的字符串的字节从主存复制到寄存器文件,再从寄存器文件中复制到显式设备
1.5高速缓存至关重要
高速缓存存在的应用程序我们可以利用高速缓存将程序的性能提高一个数量级
1.6存储设备形成层次结构
存储器层次结构的主要思想是一层上的存储器作为低一层存储器的高速缓存
1.7操作系统管理硬件
所有应用程序对硬件的操作尝试都必须通过操作系统
操作系统有两个基本功能:1)防止硬件被失控的应用程序滥用。2)向应用程序提供简单一致的机制来控制复杂而又大相径庭的低级硬件设备
1.7.1进程
进程是操作系统对一个正在运行的程序的一种抽象。
无论在单核还是多核系统中,CPU通过上下文(进程运行时所需的所有状态信息)切换实现“并发”地执行多个程序
1.7.2线程
现代系统中,一个进程实际上可以由多个称为线程的执行单元组成,线程共享同样的代码和全局数据,通过线程的合作可以使程序运行地更高效
1.7.3虚拟存储器
虚拟存储器为每个进程提供一个假象,即每个进程都在独占地使用主存
虚拟存储器的基本思想是:把一个进程虚拟存储器的内容存储在磁盘上,然后用主存作为磁盘的高速缓存
1.7.4文件
每个I/O设备,包括磁盘、键盘、显示器、甚至网络,都可以视为文件
1.8系统之间利用网络通信
从一个单独的系统来看,网络可视为一个I/O设备
1.9重要主题
并发:一个同时具有多个活动的系统
并行:用并发使一个系统运行得更快
超线程:一个CPU执行多个控制流
指令级并行:现代处理器可以同时执行多条指令的属性
超标量:处理器可以达到比一个周期更快的执行速率
1.9.2计算机系统中抽象的重要性
文件是对I/O设备的抽象,虚拟存储器是对主存和磁盘的抽象,进程是对处理器、主存和I/O设备的抽象