ThreadOS 中的线程切换
计算机硬件也是状态机
- “共享的内存,容纳了多个状态机”
- 共享的代码
- 共享的全局变量
- 启动代码的堆栈 (仅启动代码可用)
- $T_1$ 的
Task
(仅 $T_1$ 和中断处理程序可用)
- $T_2$ 的
Task
(仅 $T_2$ 和中断处理程序可用)
- 状态迁移
什么是操作系统?
虚拟化:操作系统同时保存多个状态机
- C 程序 = 状态机
- 初始状态:
main(argc, argv)
- 状态迁移:指令执行
- 有一类特殊的系统调用可以管理状态机
- CreateProcess(exec_file)
- TerminateProcess()
从线程到进程:虚拟存储系统
- 通过虚拟内存实现每次 “拿出来一个执行”
- 中断后进入操作系统代码,“换一个执行”