终极 OS 之梦
标题:A Dream of an Ultimate OS 作者:Oleg Kiselyov 原文:A Dream of an Ultimate OS 摘要 这是一场梦,梦由现实的碎片拼凑而成,有时会以奇异的组合方式重新排列。这个梦已经酝酿了十多年,滥觞于对许多主流现代操作系统的不满。 一个显而易见的事实是:用户在系统终端上所做的事情不过请求、读取、修改排列在表格或可滚动的列表中的文本信息。然而,用户往往需要使用完全不同而且毫无关联的命令进行完全相同的修改。如从列表中删除某项(行) 删除文本文件中的一行 删除文件 杀死进程(即从活动进程列表中移除之) 取消打印任务 此外,尽管操作系统中充斥着各种各样的表: 关于文件的层次数据库 电话号码表(黄页) 关于二进制对象归档(程序库)的哈希表 关于 IP 路由、当前进程、用户以及代码修订版本的,相对扁平的数据库 操作系统的核心服务中却明显缺乏常见的数据库功能:如用哈希键将一条记录 inserting 进入「表」中,使用简单或组合的键来 retrieving 一条记录或其字段,以及表间的 linking。 当用户在某些事物中查询「foo」一词,然后删除/关闭/停止查询出来的结果。无论这些结果是一段文字、一个网络连接、一个订阅的新闻组还是一个进程,用户都只需要大致相同的鼠标点击或按键顺序,且操作系统会以同样的精神来理解和解释。本文正是试图想象这样的操作系统会是什么样的,它又将如何工作。 必须强调的是,本文写于 1995 年春。文中讨论的一些观点,如:包含所有信息的数据库(注册表)、桌面作为主页等,在后来都成了老掉牙的想法。然而,直到那年秋天,网景(Netscape)公司才公开提出了活动桌面(Active Desktop)1的概念。在 1995 年,微软(Microsoft)甚至还不认为自己是一家互联网公司。此外,本文是在 BeBox2(用一个自定义的数据库作为文件系统)发布之前写的。 导言 人们看待操作系统的角度通常有两种:一种是管理计算资源;另一种则是隐藏硬件特性,同时为用户提供友好的界面。后者似乎是操作系统的主要职责,毕竟中央处理器并不关心正在运行的是什么系统,也不关心它当前要处理的代码是系统级还是用户级的。然而,除 MacOS、MagicCap 和 Newton OS 外,操作系统一直向用户提供大量不同的界面、命令和操作,而这些操作的目的基本上都是填写某种列表或表格。此外,操作系统的每个主要组件——文件系统、网络服务、用户管理、终端管理等等,都在实现和管理着自己独有的简单数据库。 由此看来,数据库服务和文本/列表编辑显然是操作系统中的一种核心活动,应当在非常基础的层面上进行支持。论文中附带了一些图片,展示了如何实现这种统合,以及如何使用这种统合的具体案例,以下是预览: MacOS 已经把 TextEdit3 提升为标准的系统(工具箱)服务——这正有力地证明了:操作系统的任务不只是管理文件和进程。此外,虽然删除一段文本、一个文件、一个目录,甚至是一个文件服务器连接都可以通过相同的操作完成:选中并拖拽进入回收站。但这一理念仍有改进的余地:例如,进程列表在概念上和文件列表并无太大区别,我们可以想象 Finder 所管理(即排列、获取信息、复制和丢弃)的文件和文件不一定是普通的文件和文件夹,它们可以是进程、打开的 TCP 连接、新闻组、活动的和待处理的打印任务,以及待办任务等。 从本质上说,操作系统不过是许多数据库的管理器。事实上,无论是文件系统、进程表、路由表,还是已知 AppleShare 服务器的列表、版本控制系统(Projector)数据和 Think C 项目,这些东西都是数据库。为什么我们不用一个设计良好的分布式数据库,来统一这些数量众多的「自定义」数据库呢? 传统的数据库通常是在文件系统之上实现的。然而,文件系统本身就是一个数据库。Mac 的 HFS 和 Novell 的文件系统甚至也使用 B-树数据结构,以及一些其他「真正的」数据库使用的高级索引方案。在数据库中查询「1994 年一月的销售额」和依次点击文件夹「1994 年」,「一月」,「销售额」其实是两种密切相关的活动。为什么不能用「真正的」数据库完全取代文件系统?现代数据库具有存储图像文件、声音文件、电影文件和各种大小的文件对象的所有功能,并提供了灵活的链接和查询记录的接口,我不禁要问:「我们还需要『文件』做什么?」...