最近读《深入理解计算机系统》打算记点笔记,特开一个分类写文也算是督促自己学习吧。
[TOC]
系统的硬件组成
- 总线
贯穿整个整个系统的的是一组点资管道,称作总线。 - I/O设备
- 主存
主存是一个临时存储设备,在处理器执行程序时用来存放程序和程序处理的数据,由一组动态随机存储器(DRAM)芯片组成。 - 处理器
即中央处理单元CPU
- 处理器的指令集构架和处理器的微体系结构区别:
指令集构架描述的是每条机器代码指令的效果,而微体系结构描述的是处理器实际上是如何实现的。
高速缓存至关重要
根据机械原理,较大的存储设备要比较小的存储设备运行得慢,且快速设备的造价远高于同类的低速设备。因此系统设计者采用了更小更快的存储设备——高速缓存存储器(cache memory简称cache或高速缓存),作为暂时的集结趋于,存放处理器近期可能会需要的信息。
进程
进程是操作系统对一个正在运行的程序的一种抽象。
并发运行:一个进程的指令和另一个进程的指令是交错执行的。
多核处理器可同时执行多个程序。
操作系统实现这种交错执行的机制称为上下文切换。
由一个进程到另一个进程的转换是由操作系统的内核管理的。内核是系统管理全部进程所用代码和数据结构的集合。
线程
一个进程可由多个称为线程的执行单元组成
虚拟内存
虚拟内存是一个抽象概念,它为每个进程提供了一个假象,即每个进程好像都在独占地使用主存,每个进程看到的内存都是一致的,称为虚拟地址空间。
Amdahl定理
当对系统的某个部分加速时,其对系统整体性能的影响取决于该部分的重要性和加速程度。若系统执行某应用程序需要时间为$T_{old}$,假设系统某部分所需执行时间与该事件的比例为$a$,而该部分性能提升比例为$k$,即该部分初始所需时间为$aT_{old}$,现在所需时间为$(aT_{old})/k$。因此,总的执行时间应为$$T_{new}=(1-a)T_{old}+(aT_{old})/k=T_{old}[(1-a)+a/k]$$
由此,可计算出加速度比$S=T_{old}/T_{new}$为$$S=\frac{1}{(1-a)+a/k}$$
综上:要想显著加速整个系统,必须提升全系统中相当大的部分的速度。
并发和并行
并发:指一个同时具有多个活动的系统
并行:指用并发来使一个系统运行得更快
- 线程级并发
- 指令级并行
- 单指令、多数据并行