0%

《深入理解计算机系统》笔记--第一章

最近读《深入理解计算机系统》打算记点笔记,特开一个分类写文也算是督促自己学习吧。

[TOC]

系统的硬件组成

  1. 总线
    贯穿整个整个系统的的是一组点资管道,称作总线。
  2. I/O设备
    一个典型系统的硬件组成
  3. 主存
    主存是一个临时存储设备,在处理器执行程序时用来存放程序和程序处理的数据,由一组动态随机存储器(DRAM)芯片组成。
  4. 处理器
    即中央处理单元CPU
  • 处理器的指令集构架和处理器的微体系结构区别:
     指令集构架描述的是每条机器代码指令的效果,而微体系结构描述的是处理器实际上是如何实现的。

高速缓存至关重要

  根据机械原理,较大的存储设备要比较小的存储设备运行得慢,且快速设备的造价远高于同类的低速设备。因此系统设计者采用了更小更快的存储设备——高速缓存存储器(cache memory简称cache或高速缓存),作为暂时的集结趋于,存放处理器近期可能会需要的信息。


进程

进程是操作系统对一个正在运行的程序的一种抽象。
并发运行:一个进程的指令和另一个进程的指令是交错执行的。
多核处理器可同时执行多个程序。
操作系统实现这种交错执行的机制称为上下文切换
由一个进程到另一个进程的转换是由操作系统的内核管理的。内核是系统管理全部进程所用代码和数据结构的集合。


线程

一个进程可由多个称为线程的执行单元组成


虚拟内存

虚拟内存是一个抽象概念,它为每个进程提供了一个假象,即每个进程好像都在独占地使用主存,每个进程看到的内存都是一致的,称为虚拟地址空间。
linux进程的虚拟地址空间


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}$$
综上:要想显著加速整个系统,必须提升全系统中相当大的部分的速度。


并发和并行

并发:指一个同时具有多个活动的系统
并行:指用并发来使一个系统运行得更快

  1. 线程级并发
  2. 指令级并行
  3. 单指令、多数据并行