《深入理解计算机系统》阅读笔记之第一章 计算机系统漫游
1 计算机系统漫游
1.1 概述
- 计算机系统是由硬件和系统软件组成的,它们共同工作来运行应用程序。
1.2 信息就是位+上下文
hello.c的表示方法说明了一个基本思想:系统中所有的信息一一包括磁盘文件、 内存中的程序、内存中存放的用户数据以及网络上传送的数据,都是由一串比特表示的。
1.3 程序被其他程序翻译成不同的格式
1.4 了解编译系统如何工作是大有益处的
1.优化程序性能。
2.理解链接时出现的错误
3.避免安全漏洞。
1.5 处理器读并解释储存在内存中的指令
1.一个系统的硬件组成:
a.总线:总线被设计成传送定长的字节块,也就是字(word)。字中的字节数(即字长)是一个基本的系统参数,各个系统中都不尽相同。现在的大多数机器字长要么是4个字节(32位),要么是8个字节(64位)。
b.I/O设备:
c.主存:从物理上来说,主存是由一组动态随机存取存储器(DRAM)芯片组成的。从逻辑上来说,存储器是一个线性的字节数组,每个字节都有其唯–的地址(数组索引),这些地址是从零开始
d.处理器:中央处理单元(CPU),简称处理器,是解释(或执行)存储在主存中指令的引擎。核心是一一个大小为一个字的存储设备(或寄存器),称为程序计数器(PC)。在任何时刻,PC都指向主存中的某条机器语言指令(即含有该条指令的地址)。从系统通电开始,直到系统断电,处理器一直在不断地执行程序计数器指向的指令,再更新程序计数器,使其指向下一条指令。
2.运行hello程序
1.6 高速缓存至关重要
这个简单的示例揭示了一个重要的问题,即系统花费了大量的时间把信息从一个地方挪到另一个地方。hello程序的机器指令最初是存放在磁盘上,当程序加载时,它们被复制到主存;当处理器运行程序时,指令又从主存复制到处理器。
1.7 存储设备形成层次结构
1.8 操作系统管理硬件
操作系统有两个基本功能:
(1)防止硬件被失控的应用程序滥用;
(2)向应用程序提供简单一致的机制来控制复杂而又通常大不相同的低级硬设备。
操作系统通过几个基本的抽象概念(进程、虚拟内存和文件)来实现这两个功能。 文件是对I/O设备的抽象表示,虚拟内存是对主存和磁盘I/O设备的抽象表示,进程则是对处理器、主存和I/O设备的抽象表示。
1.进程
进程是操作系统对一个正在运行的程序的一种抽象。并发运行,则是说一个进程的指令和另一个进程的指令是交错执行的。在大多数系统中,需要运行的进程数是多于可以运行它们的CPU个数的。操作系统保持跟踪进程运行所需的所有状态信息。这种状态,也就是上下文
2.线程
在现代系统中,一个进程实际上可以由多个称为线程的执行单元组成,每个线程都运行在进程的上下文中,并共享同样的代码和全局数据。
3.虚拟内存
虚拟内存是一个抽象概念,它为每个进程提供了一个假象,即每个进程都在独占地使用主存。每个进程看到的内存都是一致的,称为虚拟地址空间。
a.程序代码和数据。
b.堆:堆可以在运行时动态地扩展和收缩
c.共享库:大约在地址空间的中间部分是一块用来存放像C标准库和数学库这样的共享库的代码和数据的区域。
d.栈:位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数调用。用户栈在程序执行期间可以动态地扩展和收缩。
e.内核虚拟内存:地址空间顶部的区域是为内核保留的。不允许应用程序读写
4.文件
文件就是字节序列,仅此而已。每个I/O设备,包括磁盘、键盘、显示器,甚至网络,都可以看成是文件。
1.9 系统之间利用网络通信
并发(concurrency)是-一个通用的概念,指一个同时具有多个活动的系统;而术语并行(parallelism)指的是用并发来使一个系统运行得更快。并行可以在计算机系统的多个抽象层次上运用。
a.线程级并发
超线程,有时称为同时多线程(simultaneous multi-threading), 是一-项允许-一个CPU 执行多个控制流的技术。Intel Core i7处理器可以让每个核执行两个线程,所以一个4核的系统实际上可以并行地执行8个线程。
b.指令级并行
在较低的抽象层次上,现代处理器可以同时执行多条指令的属性称为指令级并行。
c.单指令、多数据并行
在最低层次上,许多现代处理器拥有特殊的硬件,允许- -条指令产生多个可以并行执行的操作,这种方式称为单指令、多数据,即SIMD并行。
1.10 抽象
1.文件是对I/O设备的抽象
2.虚拟内存是对程序存储器的抽象
3.进程是对一个正在运行的程序的抽象
4.虚拟机,它提供对整个计算机的抽象
1.11 小结
1.计算机系统是由硬件和系统软件组成的,它们共同协作以运行应用程序。
2.计算机内部的信息被表示为一组组的位,它们依据上下文有不同的解释方式。
3.程序被其他程序翻译成不同的形式,开始时是ASCII文本,然后被编译器和链接器翻译成二进制可执行文件。
4.处理器读取并解释存放在主存里的二进制指令。
5.因为计算机花费了大量的时间在内存、I/O设备和CPU寄存器之间复制数据,所以将系统中的存储设备划分成层次结构一-CPU 寄存器在顶部,接着是多层的硬件高速缓存存储器、DRAM主存和磁盘存储器。在层次模型中,位于更高层的存储设备比低层的存储设备要更快单位比特造价也更高。层次结构中较高层次的存储设备可以作为较低层次设备的高速缓存。通过理解和运用这种存储层次结构的知识,程序员可以优化C程序的性能。
6.操作系统内核是应用程序和硬件之间的媒介。它提供三个基本的抽象:
1)文件是对I/O设备的抽象;
2)虚拟内存是对主存和磁盘的抽象;
3)进程是处理器、主存和I/O设备的抽象。
最后,网络提供了计算机系统之间通信的手段。从特殊系统的角度来看,网络就是一种I/O设备。