Chapter One
1.1 文本文件,只由ASCII字符构成的文件;其他所有文件称为二进制文件。 区分不同数据对象的唯一方法是上下文:同一个字节序列可能表示整数、浮点数、字符串或机器指令。 机器表示数字是对真值的有限近似值。 1.2 每条C语句都必须被其他程序转化为一些列的低级机器语言指令,按照可执行目标程序的格式打包,以二进制磁盘文件形式存放。 源程序 -> 预处理器 -> 编译器 -> 汇编器 -> 连接器 -> 可执行程序 hello.c helloc.i helloc.s hello.o hello.out GNU是自由,而非免费。开源软件并不等价免费。 1.3 1.4 shell是命令行解释器,输出提示符,等待输入,执行命令。若不是内置命令,则假定为可执行文件,并加载运行。 PC:程序计数器 ALU:算术/逻辑单元 USB:通用串行总线 CPU:中央处理单元 总线:贯穿系统的一组电子管道。携带信息字节,负责各部件的传递。传送定长字节块(即字word,不同系统不同,32位(4个字节)、64位等)。 控制器与适配器的区别:封装不同。控制器置于I/O设备本身或系统电路板,适配器是插在主板插槽上的卡。功能都是在I/O总线和设备之间传递信息。 主存:临时存储。动态随机存取存储器(DRAM)。线性字节数组,每个字节有唯一地址(数组索引从零开始)。 32位机器上,short2字节,int、float、long为4字节,double为8字节。 CPU,解释(执行)主存中的指令,处理的核心是一个字长的存储设备(或寄存器),即程序计数器(PC)。 PC在任何时刻都指向主存中的某条机器语言指令(含有该指令的地址)。
CPU的执行操作过程: 加载:一个字节/字,主存 复->制 寄存器 存储:一个字节/字,寄存器 复->制 主存 操作:两个寄存器的内容 复->制 ALU, ALU进行算术操作, 计算结果 -> 寄存器 跳转:指令中复制一个字,复制到PC,覆盖原值。
指令集结构:描述每条机器代码指令的效果 微体系结构:描述处理器实际上是如何实现的
1.5 高速缓存很重要 reason:系统花费大量时间把数据从一个地方移动到另一个地方 机械原理:较大的存储设备比较小的存储设备运行的慢,快速的存储设备成本要高于低速设备 高速缓存:用静态随机访问存储器(SRAM) 三级高速缓存:L1、L2、L3 存储可能经常访问的数据
1.6 存储器层次结构:访问速度越快,容量越小。金字塔形。 L0:寄存器 L1:L1高速缓存SRAM L2:L2高速缓存SRAM L3:L3高速缓存SRAM L4:主存DRAM L5:本地二级存储 L6:远程二级存储(分布式文件系统、web服务器) 高速缓存的概念是相对的,上级是下级的高速缓存。
1.7 操作系统基本功能:1、防止硬件被失控应用程序滥用;2、向应用程序提供简单一致的机制来控制复杂有大相径庭的低级硬件设备。 文件:对I/O设备的抽象 虚拟存储器:对存储器的抽象 进程:对处理器、主存、I/O设备的抽象
IEEE努力标准化Unix的开发,后来Stallman命名为「Posix」,一系列标准称为Posix标准。
进程:提供假象(即系统上只有当前在使用的程序在运行),实际上是多个进程并发执行(不同进程的指令交错执行),通过处理器的进程间切换实现,即上下文切换。 操作系统保持的跟踪的进程所有状态信息叫做上下文:PC、寄存器文件当前值、主存内容。 上下文切换:保存当前进程上下文,恢复新进程上下文,控制权转移到新进程。
线程:一个进程可以有多个线程,运行在进程的上下文中。共享代码和全局数据。
虚拟存储器:为每个进程提供假象(即每个进程独占的使用主存),每个进程看到的是一致的存储器(虚拟地址存储空间) 虚拟地址存储空间结构:自上而下:最上面是操作系统的代码和数据,最下层为用户进程定义的代码和数据。地址从下往上增大。 下 程序代码和数据 | 堆:可以用malloc和free来动态地扩展和收缩 | 共享库 v 栈:编译器用来实现函数调用,可以动态地扩展和收缩 上 内核虚拟存储器
文件即字节序列。每个I/O设备甚至网络都可以视为文件file。(非常强大的概念,统一了不同的实体和技术)
1.8 网络也是I/O设备 1.9 驱动进步的持续动力:1、让计算机做得更多 2、让计算机做得更快 并发(concurrency):同时具有多个活动的系统 并行(parallelism):使用并发使系统运行的更快 系统层次结构高到底: 1、线程级并发:超线程(同时多线程,一个核心运行多个线程;原本多线程是同一个进程的多个线程在多个核心上运行) 2、指令集并行:pipelining流水线,使得原本几十个指令周期才能执行完的指令,在接近一个指令周期执行完。超过这个速度即为超标量(superscalar) 3、单指令、多数据并行:一条指令多个并行操作(SIMD并行),参考:(OPT:SIMD)
除了三大抽象以外,虚拟机是对整个计算机的抽象。 抽象是计算机科学的核心概念之一。