3、计算机系统漫游
1 计算机的信息
- 信息:就是位+上下文
- 系统中所有的信息,包括磁盘文件、内存中的程序,内存中存放的用户数据,以及网络上传输的数据,都是由一串0、1表示
- 位:指8位二进制组成一个字节,字节组合成一个序列。
- 上下文:指不同的环境。同样的字节序列在不同上下文下,可能表示一个整数、浮点数、字符串。区分不同数据对象的唯一方法是读取这些数据对象时的上下文。
- ASCII码表:将26个英文+特殊符号 映射成一个十进制数字
2 编译系统
参考 :2 编译系统
3 硬件系统
参考:3 系统的硬件组成
4 高速缓存
- 高速缓存,位于处理器中,作为暂时的集结区域,存放处理器近期可能需要的信息。
- 高速缓存的访问速度几乎跟寄存器文件一样快,它基于静态随机访问存储器(SRAM)实现的
- 高速缓存具有局部性原理:程序具有访问局部区域里的数据和代码的趋势。
5 存储器层次结构
存储器层次结构的主要思想:上一次存储器作为低一层存储器的高速缓存。例如:寄存器文件是L1的高速缓存,L1是L2的高速缓存,等等。现代处理器至少具有三级高速缓存。
6 操作系统
操作系统,应用程序与硬件之间插入的软件,所有应用程序对硬件的操作必须通过操作系统。
操作系统的两个基本功能:(1)防止硬件被使用的应用程序滥用;(2)向应用程序提供简单一致的机制来控制复杂的、不同的硬件设备。
6.1 操作系统的抽象表示
- 文件是对I/O设备的抽象表示
- 虚拟内存是对主存、磁盘、I/O设备的抽象表示
- 进程是对处理器、主存和IO设备的抽象表
6.2 进程
进程:操作系统对于正在运行的程序的一种抽象
怎么理解抽象?
程序的指令、指令执行所需要的处理器、主存、I/O等资源,把这些抽象为进程。系统可以同时运行多个进程,一个进程的指令跟另外一个进程指令是交错执行的。通过上下文切换可以保证进程运行的独立性和完整性
上下文:操作系统保存进程运行所需要的所有状态信息。比如PC、寄存器文件的当前值、主存的内容
上下文切换:操作系统将控制权从当前进程转移到其它进程的过程。这个过程包括:保存当前进程的上下文、恢复新进程的上下文、将控制权传递给新进程。由操作系统的内核来管理
关于内核:是操作系统常驻内存的一部分
现代操作系统设计中,为减少系统本身的开销,往往将一些与硬件紧密相关的(如中断处理程序、设备驱动程序等)、基本的、公共的、运行频率较高的模块(如时钟管理、进程调度等)以及关键性数据结构独立开来,使之常驻内存,并对他们进行保护。通常把这一部分称之为操作系统的内核
6.3 线程
线程:进程的执行单元,每个线程都运行在进程的上下文中,共享同样的代码和全局数据。
6.4 虚拟内存
虚拟内存:是对主存、磁盘、I/O设备的抽象表示,使得每个进程认为它拥有连续的可用的内存(一个连续完整的地址空间)。而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在磁盘上,在需要时进行数据交换。
虚拟地址空间:它由大量准确定义的区域组成,每个区域都有专门的功能。以下是Linux的进程虚拟地址空间
从低地址开始,分别是:
- 程序代码和数据:直接按照可执行目标文件的内容初始化【进程开始运行时确定了大小】
- 堆:调用例如malloc和free等标准库时使用到的内存区域【堆在进程运行时可动态扩展和收缩】
- 共享库:存放C标准库和数据库等共享的代码和数据区域。
- 栈:编译器在这个区域实现函数调用:调用函数时,栈会增长,从函数返回时,栈会收缩【栈在进程运行时可动态扩展和收缩】
- 内核虚拟内存:为内核保留的,只能由内核来读取或者调用函数的内存区域。
7 系统之间网路通信
网络也可视为一个IO设备:可以在主存复制字节到网络适配器,数据流经过网络到达另外一台机器。系统也可以读取从其他机器发送过来的数据,并把数据复制到自己的主存。
8 Amdahl定律
在计算机系统中,Amdahl定律表示:对系统内某部分的改进造成的整体性能提升量取决于该部分在整体过程中执行的时间
公式:S=1/((1-a)+a/k)
S:加速比
a:执行时间比例,即该部分的执行时间与整个过程执行时间的占比。
k:该部分的性能提升比例。
9 小结
- 系统是由硬件和系统软件组成的,它们共同协作以运行应用程序。
- 计算机内部的信息被表示为0/1串,它们依据上下文有不同的解释方式。
- 程序被其他程序翻译成不同的形式然后被编译器和链接器翻译成二进制可执行文件。
- 处理器读取并解释存放在主存里的二进制指令。
- 因为计算机花费了大量的时间在内存器之间复制数据,所以将系统中的存储设备划分成层次结构--CPU寄存器在顶速缓存存储器、DRAM 主存和磁盘存储器。在层次模型中,位于更高层的存储更快,单位比特造价也更高。层次结构中较高层次的存储设备可以作为较低层理解和运用这种存储层次结构的知识,程序员可以优化C程序的性能。
- 系统内核是应用程序和硬件之间的媒介。它提供三个基本的抽象:1)文件是对 I/0字是对主存和磁盘的抽象;3)进程是处理器、主存和I/O设备的抽象。
- 网络提供了计算机系统之间通信的手段。从特殊系统的角度来看,网络就是一种IO设备