1.系统中所有的信息—包括磁盘文件、存储 器中的程序、存储器中存放的用户数据以及网络上传送的数据,都是由一串位表示的,但是上下文不同,同一个数字表示的含义也不同。位数有限,那么对于一些小数就是有限的近似了。
C 语言是为实现 Unix 操作系统而设计的。但是抽象能力差,指针容易出错。
2.汇编语言是非常有用的,因为它为不同高级语言的不同编译器提供了通 用的输出语言。
3.贯穿整个系统的是一组电子管道
,
称做
总线
,
它携带信息字节并负责在各个部件间传递
4.控制器是置于 I/O 设备本身的或者系统的主印制电路板(通常称为主板) 上的芯片组,而适配器则是一块插在主板插槽上的卡。无论如何,它们的功能都是在 I/O 总线和 I/O 设备之间传递信息。
5.主存是一个临时存储设备,在处理器执行程序时,用来存放程序和程序处理的数据
6.从系统通电开始,直到系统断电,处理器一直在不断地执行程序计数器指向的指令,再更新 程序计数器,使其指向下一条指令
7.操作系统有两个基本功能
:
1
)
防止
硬件被失控的应用程序滥用
。
2
)
向应用
程序提供简单一致的机制来控制复杂而又
通常大相径庭的低级硬件设备。操作系统实现交错执行的机制称为上下文切换
8.程序再被编译之后(帮你把导入过的包装入程序文本)-汇编程序-机器指令-从磁盘被复制到主存(DMA可以不用CPU,直接经过总线到主存)-复制到CPU的寄存器中被执行-总线到
GPU等其他设备
9.容量越大的存储器速度越慢 上一层是下一层的高速缓存。
10.局部性原理,即程序具有访问局部区域里的数据和代码的趋势。
11.用户栈之所以会溢出,是因为他也在内存里面,编译器编译时要用到它
每调用一个函数,他会变长,内存里面除了放栈,还有程序的数据,OS内核
12.每个线程都运行在进程的上下文中,并共享同样的代码和全局数 据。
13.文件就是字节序列,仅此而已。每个 I/O 设备,包括磁盘、键盘、显示器,甚至网络,都可 以视为文件
14.从一个单独的系统来看,网络可视为一个 I/O 设备,如 图 1-14 所示。当系统从主存将一串字节复制到网络适配器时,数据流经过网络到达另一台机器, 而不是其他地方,例如本地磁盘驱动器。相似地,系统可以读取从其他机器发送来的数据,并把 数据复制到自己的主存
15.,Intel Core i7 处理器可以让一个核执行 两个线程,所以一个 4 核的系统实际上可以并行地执行 8 个线程。比 较先进的处理器可以保持每个时钟周期 2 ~ 4 条指令的执行速率 在最低层次上,许多现代处理器拥有特殊的硬件,允许一条指令产生多个可以并行执行的操 作,这种方式称为单指令、多数据,即 SIMD 并行。
16.计算机系统中的一个重大主题就是提供不同层次的抽象表示,来隐藏实际实现的复杂性
第一章总结:
计算机系统是由硬件和系统软件组成的
,
它们共同协作以运行应用程序
。
计算机内部的信息
被表示为一组组的位
,
它们依据上下文有不同的解释方式
。
程序被其他程序翻译成不同的形式
,
开始时是
ASCII
文本
,
然后被编译器和链接器翻译成二进制可执行文件(windows上是exe文件)
。
处理器读取并解释存放在主存里的二进制指令
。
因为计算机把大量的时间用于存储器
、
I/O
设备和
CPU
寄存器之间复制数据
,
所以将系统中的存储设备划分成层次结构
—
CPU
寄存器在
顶部
,
接着是多层的硬件高速缓存存储器
、
DRAM
主存和磁盘存储器
。
在层次模型中
,位于更
高层的存储设备比低层的存储设备要更快
,
单位比特开销也更高(没比特价格更贵)
。
层次结构中较高层次存储设备 可以作为较低层次设备的高速缓存。
通过理解和运用这种存储层次结构的知识
,
程序员可以优化 C 程序的性能
。
操作系统内核是应用程序和硬件之间的媒介
。
它提供三个基本的抽象
:
1
)
文件是对
I/O
设备的抽象
;
2
)
虚拟存储器是对主存和磁盘的抽象
;
3
)
进程是对处理器
、
主存和
I/O
设备的
抽象
。
最后
,
网络提供了计算机系统之间通信的手段
。
从特殊系统的角度来看
,
网络就是一种
I/O
设备
第二章:信息的处理和表示
构造存储和处理信息的机器时,二进制的值工作得更好。二值 信号能够很容易地被表示、存储和传输,例如,可以表示为穿孔卡片上有洞或无洞、导线上的高 电压或低电压,或者顺时针或逆时针的磁场。对二值信号进行存储和执行计算的电子电路非常简 单和可靠,制造商能够在一个单独的硅片上集成数百万甚至数十亿个这样的电路
计算机的表示法是用有限数量的位来对一个数字编码,因此,当结果太大以至不能表示时, 某些运算就会溢出( overflflow)。
整数的表 示虽然只能编码一个相对较小的数值范围,但是这种表示是精确的 ;而浮点数虽然可以编码一个 较大的数值范围,但是这种表示只是近似的
编译器产生的机器级代码
者字节( byte),作为 最小的可寻址的存储器单位 程序本身就是一个字节序列
十六进制 1 7 3 A 4 C 二进制 0001 0111 0011 1010 0100 1100
对于一个字长为 w 位的机器而言,虚拟地址的范围为 0 ~ 2w-1,程序最多 访问 2w 个字节
在几乎所有的机器上,多字节对象都被存储为连续的字节序列
最高有效字节包含位 [xw-1,xw-2,…,xw-8],而最低有效字节包含位 [x7,x6,…,x0],其他字节包含中间的位
某些机器选择在存储器中按照从最低有效字节到最高 有效字节的顺序存储对象,而另一些机器则按照从最高有效字节到最低有效字节的顺序存储。