深入理解计算机系统学习笔记

Overview(CMU-15-213)

程序如何运行,机器如何执行程序

  • 数字在计算机中如何表示(用有限的位组合形式表示在数域中无限扩张的数)

    • int类型(乘法和加法都有溢出的风险,但符合交换律
    1
    2
    计算机中表示50000*50000是负值
    计算300* 400 * 500 * 600是错误结果
    • float类型(浮点数取值范围极端以至于有些数字会消失)
    1
    取一个很大的数-他本身+3.14=3.14
    • 改变计算顺序:
    1
    1e20 + (-1e20+3.14)=0
  • 机器级代码的实现

    • 代码如何编程机器码
    • 如何在机器上执行
  • 分层存储系统

    • 数据在内存中如何布局,内存是如何访问的
  • 从程序角度增加其性能(低级优化)

    • 什么让程序运行更好
    • 什么会导致程序运行更差
  • 实现web服务器或者其他能力

Bits、Bytes and Integer

一切皆比特

  • 实际上,只有ENIAC使用的是十进制算数表示

  • 比特之所以伟大,是因为在数字世界中可以采取其他方式的模拟信号对其量化

    1
    2
    0-低电压;1-高电压
    0和1是逻辑中最基础的值
  • 存储一位信息或者一个数字值比存储一个模拟值容易

编码比特值

  • 十六进制转二进制

    09 AF

  • c语言中的数据表示

    虚拟地址空间是由机器字长决定的