Oberon 操作系统:被忽略的珍宝 (2013-03-07 15:07:18)转载▼

分类: 操作系统

推荐一篇很久以前看的文章: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 是另外一个。我只能说,英雄所见略同。

http://blog.sina.com.cn/s/blog_5d90e82f0101iq0n.html

转载于:https://blog.51cto.com/584250550/1207561

Oberon 操作系统:被忽略的珍宝相关推荐

  1. [王垠系列]Oberon 操作系统:被忽略的珍宝

    Oberon 操作系统:被忽略的珍宝 推荐一篇很久以前看的文章:Oberon - The Overlooked Jewel 它介绍的是 Niklaus Wirth 设计的一种操作系统,叫做 Obero ...

  2. 点评一下王垠的新博文: Oberon 操作系统:一个被忽略的珍宝

    远古邪恶巨坑的日记 远古邪恶巨坑的主页 广播 相册 喜欢 活动 发豆邮 点评一下王垠的新博文: Oberon 操作系统:一个被忽略的珍宝 2013-03-08 16:31:26 原文链接: http: ...

  3. 用 GRUB 引导自己的操作系统

    在 PC 机上捣鼓自己的操作系统遇到的第一个难题就是如何将内核加载到内存中执行.如果读过于渊写的<自己动手写操作系统>就会知道这部分的工作还是蛮繁琐的.而且实际上这部分工作和操作系统没太大 ...

  4. 操作系统原理:死锁的特征,预防,避免,恢复

    目录 一.死锁的资源占用图 二.死锁出现的特点 三.死锁预防 四.死锁避免 五.死锁检测和恢复 一.死锁的资源占用图 循环依赖导致资源无法释放而每个线程任务都无法执行完成.其中R表示资源集合,P表示进 ...

  5. “操作系统不以 C 开头和结尾,C 不等于整个世界”

    整理 | 张仕影 出品 | CSDN(ID:CSDNnews) 众所周知,C 是一种被广泛使用的语言,从操作系统内核到加密算法的编写,到处都在使用 C,它在多个领域发挥着重要作用.不久前,国外一位 S ...

  6. 操作系统多重引导规范:Multiboot Specification 0.6.93(中文版)

    Multiboot规范 本文定义了Multiboot规范--提议中的引导过程标准.本文是此规范的0.6.93版. 1. Multiboot规范简介本章描述了一些关于Multiboot规范的粗略的信息. ...

  7. 翻译: 将操作系统架构带入二十一世纪—过去 50 年中 IT 的变化—第一部分

    上次我检查时,外面是 2019 年,但我们仍在使用操作系统,其架构基本上可以追溯到 60 年代后期的 Multics 或 70 年代中期的 VAX VMS(以及 TBH,从 50'000 英尺开始,M ...

  8. 5.2 Oberon的GUI编程和应用程序开发

    Oberon 操作系统提供了图形用户界面 (GUI),开发者可以利用 Oberon 的 GUI 编程接口来构建应用程序.以下是 Oberon 中 GUI 程序开发的一些方面: 1. GUI 布局 在 ...

  9. 程序员的自我修养--链接、装载与库笔记:Windows下的动态链接

    Windows下的PE的动态链接与Linux下的ELF动态链接相比,有很多类似的地方,但也有很多不同的地方. 1. DLL简介 DLL即动态链接库(Dynamic-Link Library)的缩写,它 ...

最新文章

  1. NuGet 无法连接到远程服务器-解决方法
  2. java中super()_Java 泛型中 extends 和 super 的区别是什么?
  3. 物流行业SAP整体解决方案
  4. Java小游戏 —— 德州扑克
  5. 布谷鸟沙盒分析静态文件_【虚拟机镜像分析】
  6. Python爬虫(三)--百度贴吧
  7. 毕业三五年,怎么拿到百万年薪?
  8. MAYA安装包+安装教程
  9. 下载spring源码
  10. 【附源码】计算机毕业设计SSM小区宠物管理系统
  11. Crashing Robots
  12. 【02】一个实现h5的拖放的整个过程-魔芋
  13. 【国科大矩阵论】2021秋季叶世伟矩阵论考试计算题
  14. 可追踪评估模型TAM的评估
  15. HackTheBox-RSAisEasy
  16. 陆金所—稳盈-e享统计-python爬虫
  17. [LintCode/LeetCode] Rotate List
  18. 2022年同花顺Java面试
  19. 如何使用我们的“激活码”激活我们的在线EPF帐户? –第3部分
  20. 百特搭入选甲子光年《2022中国企业低代码/无代码产品应用与实践研究》最佳实践代表厂商

热门文章

  1. 快讯:科创板股票全线上涨 瀚川智能和沃尔德涨停
  2. Games104现代游戏引擎入门-lecture6游戏中的大气和云的渲染(下)
  3. HLK-LD1125H-24G人体测距微波雷达
  4. Bitcode是什么,如何配置?
  5. 有人见过这些雪碧广告吗?
  6. 天气变化莫测,9个小型气象站方案帮你监测
  7. [安全科普]***F***实例解析
  8. Unix下去掉^M的方法
  9. 为什么面试总倒在复试上?
  10. 优盘没有格式化修复方法?