第一章 计算机系统漫游
源文件翻译成目标文件
四个阶段
预处理阶段-预处理器读取系统头文件
编译阶段-编译器生成汇编程序
汇编语言为不同高级语言的不同编译器提供了通用的输出语言。
汇编阶段-汇编器生成机器语言指令,将这些指令打包成 课程定位目标程序
链接阶段-链接器合并库文件,生成可执行目标文件(可执行文件)
系统的硬件组成
总线
通常总线被设计成传送定长的字节块,也就是 字(word)
I/O设备
每个I/O设备通过一个 控制器 或 适配器 与I/O总线相连,控制器在设备与总线之间传递信息
主存
主存是一个临时存储设备,是易失性存储器,只有很少的BIOS指令固化在其中
处理器
中央处理单元(CPU),简称处理器,是计算机的核心
指令集结构描述的是每条机器代码指令的效果;而微体系结构描述的是处理器实际上是如何实现的
寄存器文件是指CPU中多个寄存器组成的阵列
操作系统管理硬件
我们可以把操作系统看成是应用程序和硬件之间插入的一层软件,所有应用程序对硬件的操作尝试都必须通过操作系统
操作系统有两个基本功能:安全与抽象
操作系统通过 进程 来分配CPU
操作系统通过 虚存 来分配主存
操作系统通过 文件 来分配I/O设备
文件 是对 I/O设备的抽象表示
虚拟内存 是对 主存和磁盘I/O设备的抽象表示
进程 是对处理器、主存和I/O设备的抽象表示
进程
进程是操作系统对一个正在运行的程序的一种抽象
不同进程宏观上并行执行依赖于所谓的 上下文切换
进程运行所需的所有状态信息就是上下文
进程的切换有操作系统内核管理,内核时操作系统代码常驻主存的部分
内核不是一个独立的进程,相反,它是系统管理全部进程所用代码和数据结构的集合
线程
一个进程实际上可以由多个称为线程的执行单元组成,每个线程实都运行在进程的上下文中,并共享同样的代码和全局数据
线程出现后,进程作为系统资源分配的基本单位,线程作为CPU调度的基本单位
虚拟内存
虚拟内存是一个抽象的概念,是每个进程看起来都在独占的使用主存,称为虚拟地址空间
每个进程看到的虚拟地址空间由大量准确定义的区构成,每个区都有专门的功能。
程序代码和数据
堆
共享库
栈
内核虚拟内存
文件
文件就是字节序列
每个I/O设备,包括磁盘、键盘、显示器,甚至网络,都可以看成是文件。
系统中的所有输入输出都是通过一小组称为Unix I/O的系统函数调用读写文件来实现的
系统之间利用网络通信
网络可以视为一个I/O设备
重要主题
系统是硬件和系统软件互相交织的集合体,它们必须通过共同协作以达到运行应用程序的最终目的。
Amdahl定律
当我们对系统的某个部分加速时,其对系统整体性能的影响取决于该部分的重要性和加速程度。
并发与并行
并发(concurrency):是一个通用的概念,指一个同时具有多个活动的系统
并行(parallelism):指的是用并发来使一个系统运行得更快
1.线程级并发
使用线程,我们甚至能够在一个进程中执行多个控制流
2.指令级并行
在较低的抽象层次上,现代处理器可以同时执行多条指令的属性称为指令级并行
流水线的使用大大提高了指令的执行速度
3.单指令、多数据并行
在最低层次上,许多现代处理器拥有特殊的硬件,允许一条指令产生多个可以并行执行的操作,即SIMD并行
提供这些SIMD指令多是为了提高处理影像、声音和视频数据应用的执行速度
抽象
在处理器中,指令集结构提供了对实际处理器硬件的抽象
文件是对I/O设备的抽象
虚拟内存是对程序存储器的抽象
进程是对一个正在运行的程序的抽象
虚拟机,提供对整个计算机的抽象,包括操作系统、处理器和程序