第一章 计算机系统漫游

信息 = 位 + 上下文

  • 源程序:0和1组成的比特序列(字节序列),序列中每个字节对应程序的一个字符。
  • 所有信息都是一串比特,区分数据对象的唯一方法是上下文。
  • 只由ASCII码字符构成的文件称为文本文件, 其他文件成为二进制文件

程序被其他程序翻译成不同的格式(编译系统)

编译系统

处理器读并解释储存在内存中的指令(程序运行)

  • 编译系统的翻译结果储存在磁盘上,等待命令行调用后运行。

  • shell:命令行解释器

    系统的硬件组成
    • I/O总线:传送字节或字(字节块)[1]

    • I/O设备:用户输入,用户输出,磁盘

      每个I/O设备都通过控制器或适配器与总线相连

    • 主存:临时存储设备,存储程序和数据(可以理解为线性字节数组

    • 处理器CPU:驱动解释或执行主存中的指令

      • PC:程序计数器,指向主存中的命令地址
      • ALU:算术/逻辑单元,对数据或地址进行算术运算
      • 寄存器文件
    程序运行过程
寄存器接受输入的hello命令并存入主存
磁盘将hello.o载入主存

PC执行指令,寄存器从主存读取"hello world\n"并写入显示器
高速缓存存储器
  • 用于存储处理器近期可能用到的信息,使得大部分内存操作都可以在高速缓存中完成
  • 多级高速缓存:两级(L1,L2)、三级(L1,L2,L3)
存储器层次结构
  • 上一层存储器作为下一层的高速缓存

操作系统

  • 操作系统可以理解为应用程序和硬件之间插入的一层软件。

  • 操作系统的基本功能

    • 防止硬件被失控的应用程序滥用
    • 为应用程序提供控制硬件的机制
  • 操作系统的三个基本抽象概念

文件,虚拟内存,进程
  • 进程:运行中的程序

    • 并发运行:两个进程的指令交错执行,通过处理器的上下文切换实现。

    • 上下文:进程运行所需的状态信息,包括PC和寄存器文件的当前值和主存内容等。

    • 上下文切换:保存当前进程上下文,恢复新进程上下文,并将控制权交给新进程。

    • 操作系统内核:系统管理进程所用代码和数据的集合,操作系统拥有控制权实际上内核掌握控制权。

    • 线程:进程的执行单元,一个线程可以理解为一个控制流。相较于多进程,多线程之间更容易共享数据且更高效。

控制权传递过程
  • 虚拟内存:每个进程看到相同的内存空间

    • 程序代码和数据
    • 堆:malloc/free
    • 共享库:C标准库、数学库等
    • 栈:函数
    • 内核虚拟内存:应用程序不能直接读写内核文件或调用内核函数,必须通过调用内核来执行这些操作
  • 文件:文件就是字节序列。所有I\O设备(包括网络)都可以看做文件。

网络

  • 网络也是一种I/O设备。
  • 网络的功能
    • 将信息从一台机器复制到另外一台机器,如电子邮件,即时通信等。
    • 本地服务器可以通过网络在远程服务器上执行程序并返回到本地。

一些重要概念

Amdahl定律

系统某个部分加速后,对系统总性能的影响取决于该部分的比例加速程度

要想显著加速系统,就需要提升系统中相当大部分的速度。


Amdahl定律
并发与并行

并发:具有多个活动的系统

并行:用并发使系统运行更快

  • 线程级并发
    • 单处理器系统只能模拟进程的并发执行(上下文切换)。
    • 多处理器系统减少了模拟进程并发的需要。
    • 超线程处理器允许一个处理器执行多个控制流,可以实现多线程并行执行。
  • 指令级并行
    • 现代处理器可以同时执行多条指令。
    • 流水线(pipelining):将指令分为多个不同步骤,处理器分为多个不同阶段,一个阶段执行一个步骤,且不同阶段可以并行操作。
    • 超标量处理器:执行速率比一个周期执行一条指令更快。
  • 单指令、多数据并行(SIMD并行)
    • 允许一条指令产生多个可以并行的操作,如单精度浮点数加法。
抽象

进程:对运行中的程序的抽象

虚拟内存:对程序存储器的抽象

文件:对I/O设备的抽象

指令集架构:对处理器的抽象

虚拟机:对整个计算机的抽象,包括操作系统、处理器、程序


  1. 我们所说的32位,64位均指机器字长

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容