当今的操作系统

程序是什么?

  • 程序 = 状态机
    • 状态:数据(堆和栈) -> 栈帧(含PC寄存器)
    • 初始状态:刚装入内存时的状态 - main()刚进入
    • 状态迁移:指令的执行
      • 函数调用:看作压栈
      • 函数返回:看作出栈
      • 随机数:看作上下限区间内这么多种状态 - 比如0~10之间的整数随机数就有11种状态
      • 状态机的结束:trap,syscall
    • 也可以认为:程序 = 计算+syscall
  • 操作系统 = 对象(文件,进程etc.) + API = C语言程序
  • 编译器
    • 将源代码级别的状态机转化为二进制代码级别的状态机
    • 二者的可观测行为要严格一致
    • 可以这样理解编译器的优化过程:在可观测行为一致时改写代码
      • compiler barrier:需要对内存进行操作

今天的操作系统

  • “虚拟化”应用广泛
  • NUMA
  • 非对称处理器(大小核:性能核与能效核)
  • Intel-VT/AMD-V等等
  • 各种设备
  • 互联互通
评论