深入理解计算机
操作系统基本功能:防止硬件被失控的应用程序滥用 向应用程序提供简单一致的机制来控制复杂而又通常大相庭径的低级硬件设备
文件是对I/O设备的抽象表示,虚拟存储器是对主存和磁盘I/O设备的抽象表示 进程是对处理器、主存和I/O设备的抽象表示
虚拟存储器为进程提供一个假象,每个进程都在独占的使用主存,每个进程看到的是一致的存储器(虚拟地址空间)
Unix主要针对的是大型机 每个I/O设备都可以视为文件 网络也是一种I/O设备
需要驱动进步的持续能力:计算机做得更多、计算机运行得更快 并发:同时具有多个活动的系统 并行:用并发使一个系统运行得更快
虚拟机事对整个计算机(包括操作系统、处理器和程序)的抽象
计算机内部的信息被表示为一组组的位,根据上下文有不同的解释方式,程序被其他程序翻译成不同的形式,开始是ASCCLL文本,然后被编译器和连接器翻译成二进制可执行文件
内核,是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。
每台计算机都有一个字长,指明整数和指针数据的标称大小 字长决定虚拟地址空间的最大大小
char * P 表示将一个指针指向一个char类型的对象
可移植性:使程序对不同数据类型的确切大小不敏感
多字节被存储为连续的字节序列,对象的地址为所使用字节中最小的地址
Java编程语言使用Unicode来表示字符串,基本编码:Unicode的“统一字符集”,UTF-8表示将每个字符编码为一个字节序列
C、C++都支持有符号和无符号,Java只支持有符号
大多数机器对整数使用的补码编程,面对浮点数使用IEEE浮点编码
计算机执行机器代码,用字节序列编码低级的操作,包括处理数据,管理存储器,读写存储设备的数据,以及利用网络通信。
汇编代码是机器代码的文档表示
数组、联合、和结构这样的数据结构
处理器:执行一系列指令,每条指令执行某个简单操作 一个处理器支持的指令和指令的字节级编码称为一个或多个字节序列组成的二进制格式
微处理器:完整的高性能处理器、大的高速缓存,以及用来连接到外部设备的逻辑电路
优化程序性能:选择一种合适的算法和数据结构,编写出编译能够有效优化以转换成高效可执行代码的源代码
高速缓存(cache)
处理器的存储系统是由多种硬件存储和管理虚拟存储器的操作系统软件共同组成的
处理器有两个第一层高速缓存—一个用于读指令、一个用于读和写数据
ISA(指令集体结构)
在实际的处理器中,是同时对多条指令求值--指令集并行
没有任何编译器能用一个好的算法或数据结构代替低效率的算法和数据结构
存储系统位CPU存放指令和数据 存储系统是一个线性的字节数组
如果你的程序需要的数据存储在CPU寄存器中,需要1~30个周期,如果存储在主存中,需要50~200个周期,而如果存储在磁盘上,需要大约几千万个周期
存储技术(SRAM、DRAM、ROM和旋转的和固态硬盘)
计算机技术的成功很大程度上来源于存储技术的进步
随机访问存储器(RAM):静态和动态,静态(SRAM)(作为高速缓存存储器,CPU芯片上,片下)比动态(DRAM)(作为主存以及图形系统的帧缓冲区)更快,但更贵
断电之后,DRAM和SRAM会丢失他们的信息
ROM是以他们能够被重编程的次数和对他们进行重编程所用的机制来区分
PROM只能被编程一次
可擦写可编程ROM(EPROM)
闪存是一类非易失性存储器基于EEPROM,新型的基于闪存的磁盘驱动器(固态硬盘SSD)
BIOS基本输入/输出
存储在ROM上的程序成为固件
数据流通过成为(总线)的共享电子电路在处理器和DRAM主存之间,每次CPU和主存之间的数据传送都是通过一系列步骤完成,这些步骤称为:总线事务
读事务:从主存传送数据到CPU
写事务:从CPU传送数据到主存
总线是一组并行的导线,能携带地址、数据和控制信号。
数据和地址信号可以共享同一组导线,也可以不同。
两个以上的设备也能共享同一根总线
控制携带的信号会同步事务,并标识出当前被执行的事务的类型
I/O桥:包括存储控制器以及组成主存的DRAM存储器模块
磁盘是由盘片构成,每个盘片有两面或者称为表面,便面覆盖磁性记录材料,盘片中央有一个可以旋转的主轴,每个表面是由一组称为磁道的同心圆组成 每个磁道被划分为一组扇区,每个扇区包含相等的数据位
磁盘用读/写头来读写存储在磁性表面的位
为了对操作系统隐藏这样的复杂性,现代磁盘的构造呈现为一个简单的视图,一个B个扇区大兄弟额逻辑块的序列,编号为0,1,。。。,B-1
PCI外围设备互连
通用串行总线(USB)控制器是一个连接到USB总线的设备的中转机构 USB2.0的最大带宽60MB/s,USB3.0总线的最大带宽600MB/s
图形卡(或适配器)包含硬件和软件逻辑,负责CPU在先收钱上画像素
虚拟存储器:
虚拟存储器:为了更加有效的管理存储器并且少出错,现代系统提供了一种对主存的抽象概念