读王垠《一种新的操作系统设计》
王垠博客链接:王垠《一种新的操作系统设计》。
原文摘要
特点
-
操作系统由某种高级语言写就,一个个小函数组成,所有的代码都是“库代码”
-
进程之间通信,统一使用某种高级语言提供的数据结构
-
运行环境是“有自动内外存数据交换功能的 JVM”,避免指针
-
内存管理的粒度是数据结构,不是页
-
系统调用就是对系统函数的调用,只有系统函数拥有设备的引用
-
不另设命令行脚本,而是采用某种高级语言的交互解释器
-
所有数据作为“结构”(而不是文件)保存在一个分布式数据共享空间
-
进程的运行时数据自动同步到磁盘
-
进程可以在机器间迁移
好处
我能理解的好处:
- 进程通信不需要编码解码
- 不需要 SQL
- 不需要命令行脚本
- 远程调用简单
- 进程持久化(在外存中保存程序断点)
- 自动外存管理
个人理解与疑惑
- 这种操作系统的主要特点是,使用一种程序设计语言完成所有的工作,即硬件驱动、系统内核、应用开发、数据管理……那么这种语言的设计缺陷是否会造成更大的问题呢?
- 另一个主要特点是,取消了数据库的必要性。用统一的高级语言处理业务逻辑和数据查询代替 SQL 容易理解,但这会让现在独立的数据库管理系统变为“数据管理函数库”。现在的数据库虽然查询不方便(看看工程师积累的复杂使用经验),但是并发管理、数据完整性、权限管理等功能隐藏得很好。使用函数库做相同的事情是否合适?
未来展望
未来的系统
当我们没有计算机的时候,编程不是问题;当我们有计算机了以后,编程成了问题;当我们有了大型的计算机的时候,编程就成了巨大的问题。
软件开发的复杂度很高,这是问题固有的复杂度还是基础设施的设计缺陷?“数学是神的学科,计算机是人的学科”,要区分固有的复杂和设计带来的复杂并不容易。
“书同文,车同轨”,统一带来效率。如果新一代操作系统能整合:
- 内存与外存
- 本地与网络
- 数据格式与数据结构
- 应用程序与系统程序
就能将操作系统和数据库管理系统整合在一起!
未来的编程
未来的编程,程序员只需要面向为数不多的几个(最好是一个)逻辑结构编程——不用考虑存储结构,集中精力在抽象表达式树的正确性上。未来的编程原则会认为,使用指针是逻辑层向物理层的僭越,性能优化完全针对解释器,和抽象表达式树无关。
总之,计算机程序的构造和解释应该彻底解耦合。