backup

这里是王垠发表的历史文章的一个私人备份。所有文章都属于王垠版权所有,放在这里仅仅是为了自己查看方便,因为原始文章会lost in future。

---------------------------------
王垠自己的博客:
http://yinwang0.wordpress.com/
http://www.yinwang.org/

王垠曾经用过的博客:
http://blog.sina.com.cn/yinwang0

一种新的操作系统设计

作者:王垠


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

  • 这种系统里面的程序间通信不使用无结构的字符串,而是使用带有类型和结构的数据。在这样的系统里面,“程序”的概念基本上完全消失。系统由一个个的“函数”组成,每个函数都可以调用另外一个函数,通过参数传递数据。每个函数都可以并发执行。

  • 由于参数是一个数据结构,而不是字符串,这避免了程序间通信繁琐的“编码”和“解码”过程。使得“进程间通信”变得轻而易举。任何函数都可以调用另一个函数来处理特定类型的数据,这使得像 “OLE 嵌入”这样的机制变得极其简单。

  • 所有函数由同一种先进的高级程序语言写成,所以函数间的调用完全不需要“翻译”。

  • 由于这种语言不允许应用程序使用“指针运算”,应用程序不可能产生 segfault 一类愚蠢的错误。

  • 由于没有指针运算,系统不再需要现代处理器提供的“内存映射”机制,以及 TLB。这使得内存访问效率大幅提高。而且简化了处理器的设计。

  • 操作系统使用与应用程序相同的高级语言写成(可能需要支持一些“特权操作”),至于“系统调用”,只不过是调用另外一个函数。

  • 操作系统的“shell”,不过是一个这种高级语言的 REPL。用户可以在终端输入各种函数调用,从而启动进程的运行。

  • 系统不需要 SQL,不需要关系式数据库。所有的数据都作为“对象”,保存在一个分布式的数据空间。

  • 系统不需要“文件系统”。所有的数据,包括“进程上下文”自动被“版本控制”,在合适的时候作为对象同步到磁盘。所以即使在机器掉电的情况,绝大部分的数据和进程能够在电源恢复后自动继续运行。

  • 程序员和用户完全不需要知道“数据库”或者“文件系统”的存在。程序假设自己拥有无穷大的空间,可以任意的构造数据。

  • 为了减少数据的移动,系统根据数据的位置,选择: 1)迁移数据,或者 2)迁移处理数据的“进程”。程序员不需要使用 MapReduce,Hadoop 等,就能进行大规模并行计算。 这个操作系统是如此的“一致”,以至于所有的用户和程序员,只需要学会一种很简单的程序语言。

我曾经以为我是第一个想到这个做法的人。可惜的是,调查之后发现,很多人早就已经做出了类似的系统(虽然缺少对把它用于分布式计算的设想)。Lisp Machine 似乎是其中最接近的一个。Oberon 是另外一个。我只能说,英雄所见略同。


评论
热度(5)
  1. 自在,.backup 转载了此文字
  2. hello-worldbackup 转载了此文字
  3. backuupbackup 转载了此文字
  4. 想买橘子backup 转载了此文字

© backup | Powered by LOFTER