Oberon操作系统:一个被忽略的珍宝

系统
Oberon 操作系统是用一种同名的程序语言(Oberon 语言)写成,比起 Unix,有很大的不同,在于它的数据都是结构化的。操作系统的设计,真是天外有天。

推荐一篇很久以前看的文章:Oberon - The Overlooked Jewel,它介绍的是 Niklaus Wirth 设计的一种操作系统,叫做 Oberon。Niklaus Wirth 就是大家熟知的 Pascal 语言的设计者。绝大部分人都没听说过有 Oberon 这个东西存在,更难以把它跟 Niklaus Wirth 的大名挂上钩。所以作者说:“Wirth 因为 Pascal 而闻名于世,可是接下来几年,他成为了 Pascal 的受害者。” 确实是这样。Wirth 一直都不觉得 Pascal 是他的杰作。我想他应该会更喜欢以 Oberon 闻名于世。

Oberon 比起 Unix,有很大的不同,在于它的数据都是结构化的。进程间不通过字符串交换数据,而是直接使用数据结构。很奇特的一点是,Oberon 操作系统是用一种同名的程序语言(Oberon 语言)写成。令人惊讶的是,在那个年代,ETH 计算机系的所有教职员工,学生,包括办公室的大妈,都是用的这种操作系统。

操作系统的设计,真是天外有天。

之所以找到这个系统,是因为我一直在试图利用程序语言的设计原理,设计一种超越“Unix 哲学”的操作系统。这里是我的设想:

  • 这种系统里面的程序间通信不使用无结构的字符串,而是使用带有类型和结构的数据。在这样的系统里面,“程序”的概念基本上完全消失。系统由一个个的“函数”组成,每个函数都可以调用另外一个函数,通过参数传递数据。每个函数都可以并发执行。
  • 由于参数是一个数据结构,而不是字符串,这避免了程序间通信繁琐的“编码”和“解码”过程。使得“进程间通信”变得轻而易举。任何函数都可以调用另一个函数来处理特定类型的数据,这使得像 “OLE 嵌入”这样的机制变得及其简单。
  • 所有函数由同一种先进的高级程序语言写成,所以函数间的调用完全不需要“翻译”。
  • 由于这种语言不允许应用程序使用“指针运算”,应用程序不可能产生 segfault 一类愚蠢的错误。
  • 由于没有指针运算,系统不再需要现代处理器提供的“内存映射”机制,以及 TLB。这使得内存访问效率大幅提高。而且简化了处理器的设计。
  • 操作系统使用与应用程序相同的高级语言写成(可能需要支持一些“特权操作”),至于“系统调用”,只不过是调用另外一个函数。
  • 操作系统的“shell”,不过是一个这种高级语言的 REPL。用户可以在终端输入各种函数调用,从而启动进程的运行。
  • 系统不需要 SQL,不需要关系式数据库。所有的数据都作为“对象”,保存在一个分布式的数据空间。
  • 系统不需要“文件系统”。所有的数据,包括“进程上下文”自动被“版本控制”,在合适的时候作为对象同步到磁盘。所以即使在机器掉电的情况,绝大部分的数据和进程能够在电源恢复后自动继续运行。
  • 程序员和用户完全不需要知道“数据库”或者“文件系统”的存在。程序假设自己拥有无穷大的空间,可以任意的构造数据。
  • 为了减少数据的移动,系统根据数据的位置,选择: 1)迁移数据,或者 2)迁移处理数据的“进程”。程序员不需要使用 MapReduce,Hadoop 等,就能进行大规模并行计算。
  • 这个操作系统是如此的“一致”,以至于所有的用户和程序员,只需要学会一种很简单的程序语言。

我曾经以为我是第一个想到这个做法的人。可惜的是,调查之后发现,很多人早就已经做出了类似的系统。Lisp Machine 似乎是其中最接近的一个。Oberon 是另外一个。我只能说,英雄所见略同。

责任编辑:黄丹 来源: udpwork.com
相关推荐

2009-09-02 18:36:46

LinuxLinux操作系统Linux开发

2022-10-09 08:16:29

React前端

2009-12-16 12:30:25

openSUSE操作系

2010-02-26 14:13:51

Linux操作系统

2010-04-20 14:43:01

Unix操作系统

2018-10-26 09:30:47

Boxes操作系统Linux

2012-05-07 13:02:46

Linux服务器集群

2018-06-27 09:14:54

嵌入式操作系统Linux

2011-07-19 09:41:33

2020-10-25 08:52:19

Unix操作系统TrueOS

2009-06-30 10:37:59

Linux操作系统

2022-04-07 14:33:31

操作系统鸿蒙HarmonyOS

2009-12-10 15:17:58

Linux操作系统

2018-12-05 08:40:53

开发操作系统

2019-08-09 10:45:09

操作系统WindowsLinux

2009-09-04 10:47:33

2021-02-20 13:52:50

Windows 10XWindows 10微软

2010-04-15 14:40:26

Unix操作系统

2020-05-17 16:19:59

JavaScript代码开发

2013-09-17 13:24:07

Unix操作系统
点赞
收藏

51CTO技术栈公众号