一切皆为状态机

一切皆为状态机

2024 南京大学《操作系统:设计与实现》
一切皆为状态机

图灵机 (Alan Turing, 1936)

center

2024 南京大学《操作系统:设计与实现》
一切皆为状态机

一个更简化的表达

struct TuringMachineState {
    const vector<Inst> program;

    vector<Inst>::iterator pc;   // Program Counter
    bool a;                      // 一个寄存器 
    Integer pos;                 // 读写头
    map<Integer,bool> tape;      // 内存
};

状态迁移

  • 内部状态:a = 0; a = 1; if (aa) goto LL;
  • 读写头移动: pos++; pos--;
  • Load/store: tape[pos] = aa; aa = tape[pos];
    • (struct cpu_state 的影子)
2024 南京大学《操作系统:设计与实现》
一切皆为状态机

加一点点复杂性

Conway's Game of Life

  • 1D → 2D:不需要程序,只要规则就行了
    • 只取决于当前格子和相邻格子 “live” 的数量

center

2024 南京大学《操作系统:设计与实现》
一切皆为状态机

Game of Life is Turing Complete

它们可以互相模拟

问出一些更有趣的问题

2024 南京大学《操作系统:设计与实现》
一切皆为状态机

更严肃的探讨

预测未来

  • 增加一个特殊的格子 (“syscall”)
    • 输入 (x,y)(x, y),下一时刻 TT 时刻之后 (x,y)(x,y) 位置的状态
    • 得到了一个严格可以分析的数学对象
    • 定义出了一种新的 “计算机”
  • 人类其实没有 “想象力”:这不就是 “祭祀” 吗?

时间旅行

2024 南京大学《操作系统:设计与实现》