1.信息就是位 + 上下文
那么什么是信息呢?
在计算机系统中,所有的信息——包括磁盘文件、内存中的程序、内存中存放的用户数据以及网络上传送的数据。本质上是一串比特位。
那么又要了解什么是比特了,比特(bit)就是二进制,只表示0和1。
源程序实际上就是由值0和1组成的位(比特),8个位组成一组,称作字节。每个字节表示程序中的某些文本字符。
文本文件是指只由ASCII字符构成的文件,而其他所有文件都是二进制文件。
区分不同数据对象的唯一方法:就是读到这些数据对象的上下文。
2.程序被其他程序翻译成不同的格式
一个程序要被执行,一般要执行4步:预处理、编译、汇编、链接
预处理:读取以字符#开头的命令,把其表示的内容插入到程序文本中.i。
编译:把程序文本文件.i翻译成文本文件.s,它是一个汇编语言程序。
汇编:把文本文件.s翻译成机器语言指令.o文件(二进制文件)。
链接:处理合并.o文件生成可执行文件。
3.系统的硬件组成
总线:贯穿整个系统的一组电子管道。携带信息字节并负责在各个部件间传递。
通常被设计成传送定长的字节快(字word)。字中的字节数表示字长。
I/O设备:系统与外部世界的联系通道。
一般输入设备有:鼠标和键盘
输出设备:显示器
存储设备:磁盘(长期存储数据和程序)
每个I/O设备都通过一个控制器或适配器与I/O总线相连。
控制器:I/O设备本身或系统的主印刷电路板(主板)上的芯片组。
适配器:一块插在主板插槽上的卡。
两者封装方式不同,但两者功能都是在I/O总线和I/O设备之间传递信息。
主存:临时存储设备,在处理器执行程序时,用来存放程序和程序处理的数据。
从物理上来说,由一组动态随机存取存储器(DRAM)芯片组成
从逻辑上来说,存储器是一个线性的字节数组,每个字节都有其唯一的地址(数组索引),而数组索引都是从0开始的。
处理器:中央处理单元(CPU),是解释或执行存储在主存中指令的引擎。核心是一个大小为一个字的存储设备(寄存器,程序计数器PC)。在任何时候,PC都指向主存中某条机器语言指令(即含有该条指令的地址)。
CPU在指令的要求下可能会执行的操作:
4.运行hello程序
5.高速缓存至关重要
机械原理,较大的存储设备要比较小的存储设备运行得慢,而快速设备的造价远高于同类的低速设备。
寄存器文件只存储几百字节的信息,而主存里可以存放几十亿字节;但处理器从寄存器文件中读数据比从主存中读取几乎要快100倍。而随着半导体技术的发展,处理器与主存之间的差距还在持续增大,故加快处理器的运行速度比加快主存的运行速度要容易和便宜得多。
针对这种差异,系统设计者采用了更小更快的存储设备,称为高速缓存存储器(cache memory,简称cache或高速缓存),作为暂时的存储区,存放处理器最近可能会需要的信息。
L1级高速缓存:容量可以达到数万字节,访问速度几乎和访问寄存器文件一样快。
L2级高速缓存:访问的时间要比L1的时间长5倍,但还是比访问主存快5~10倍。
L3级高速缓存:
高速缓存使用一种叫做静态访问存储器(SRAM)的硬件技术实现的。
为什么系统的存储器很大,同时访问速度也能很快呢?
原因是利用了高速缓存的局部性原理,即程序具有访问局部区域里的数据和代码的趋势。
6.存储设备形成层次结构
存储器层次结构,从上至下,设备的访问速度越来越慢、容量越来越大,并且每字节的造价也越来越便宜。
存储器层次结构的主要思想是上一层的存储器作为低一层存储器的高速缓存。
7.操作系统管理硬件
操作系统有两个基本功能:
(1)防止硬件被失控的应用程序滥用
(2)向应用程序提供简单一致的机制来控制复杂而又通常大而不同的低级硬件设备
通过抽象概念(进程、虚拟内存和文件)来实现这两个功能。
文件是对I/O设备的抽象表示;虚拟内存是对主存和磁盘I/O设备的抽象表示;进程是对处理器、主存和I/O设备的抽象表示。
进程是操作系统对一个正在运行的程序的一种抽象。一个系统中可以同时运行多个进程,而每个进程都好像在独占地使用硬件。
并发运行是说一个进程的指令和另一个进程的指令是交错执行的。在大多数系统中,需要运行的进程数是多于可以运行它们的CPU个数的。
操作系统通过处理器在进程间切换实现交错执行的机制称为上下文切换。
操作系统保持跟踪进程所需的所有状态信息,这种状态,就是上下文。
在任何一个时刻,单处理器系统都只能执行一个进程的代码。
从一个进程到另一个进程的转换是由操作系统内核(kernel)管理的,内核是操作系统代码常驻主存的部分。
内核不是一个独立的进程,它是系统管理全部进程所用代码和数据结构的集合。
线程:一个进程实际上可以由多个称为线程的执行单元组成,每个线程都运行在进程的上下文中,并共享同样的代码和全局数据。
多线程之间比多进程之间更容易共享数据,常用于网络服务器对并行处理的需求。
虚拟内存:抽象概念,为每个进程提供了一个假象,即每个进程都在独占地使用主存。
基本思想是把一个进程虚拟内存的内容存储在磁盘上,然后用主存作为磁盘的高速缓存。
文件:字节序列。每个I/O设备,包括磁盘,键盘,显示器,甚至网络,都可以看成是文件,即一切皆可文件。
8.系统之间利用网络通信
Amdahl定律:
当我们对系统的某个部分加速时,其对系统整体性能的影响取决于该部分的重要性和加速程度。
若系统执行某应用程序需要时间为T(old),假设系统某部分所需执行时间与改时间的比例为a,而该部分性能提升比例为k。即该部分初始所需时间为aT(old),现在所需时间为(aT(old))/k。
总执行时间为:
主要观点:要想显著加速整个系统,必须提升全系统中相当大的部分的速度。
并发和并行
并发指一个同时具有多个活动的系统;并行指的是用并发来使一个系统运行得更快。
1.线程级并发
多核处理器是将多个CPU集成到一个集成电路芯片上。
L1高速缓存分为两个部分——一个保存最近取到的指令,另一个存放数据。
超线程,也被称为同时多线程,是一项允许一个CPU执行多个控制流的技术。
2.指令级并行
现代处理器可以同时执行多条指令的属性称为指令级并行
如果处理器可以达到比一个周期一条指令更快的执行速率,就称之为超标量处理器。
3.单指令、多数据并行
许多现代处理器拥有特殊的硬件,允许一条指令产生多个可以并行执行的操作,这种方式称为单指令、多数据,即SIMD并行。