为什么学操作系统:知道程序能做什么、为什么能做
什么是操作系统:一种程序,管理软硬件资源,为其他程序提供更好的服务
计算机:无情的执行指令的机器
程序的执行就是状态的变化
任何代码都是状态机;编译器实现了高级语言代码到机器代码两种状态机的翻译;对一个程序,想要将结果传递到程序外,都需要操作系统使用系统调用,可以用 strace
命令查看
各种软件:
硬件视角不知道有操作系统的存在:下层不需要知道上层怎么用,只需要提供服务就行了
操作系统就是一个普通的程序,接管中断、I/O、……
可以看成状态机:
固件(firmware):固定在系统中的代码,每次 CPU reset 或者 init 时运行所有程序前配置计算机系统,可以说是加载操作系统;正常状态是只读的,但是可以通过特殊方式打开写保护;BIOS 和 UEFI
程序是一种“数学严格”的对象
将操作系统视为一个管理了若干程序状态机的“更大”的 “main” 状态机;这个 main 状态机每一步执行,都相当于主动随机选择一个程序状态机,然后走一步;而系统调用相当于创建/退出/写入写出状态机
程序定义了一个状态机 ,起点 ,以及“坏”的状态 ,那么程序正确等价于不存在从 到 的路径