有人说,在计划 9 中,一切都是文件。
请列出所有内容,
即plan9中文件系统中表示的所有东西(尤其是*nix os-es中不是文件的东西)。
“一切都是文件”并不完全正确,而是大多数东西都有一个类似文件的界面。它可能看起来像分裂头发,但有区别。我认为我无法列出所有内容,但我会给你一些例子。
/net
暴露“文件”acme
具有关联的控制文件,可以向其中写入文本命令以更改窗口中的文本/dev/mouse
例如rio
公开了一个文件系统接口abaco
中读取webfs
有趣的是这种安排会“退出”什么样的交互。由于大多数内容都是某个文件中的文本,因此您可以使用普通的 shell 脚本来实现诸如 IRC 客户端之类的东西(直接将文本读/写到网络“文件”)。
/sys/doc
目录中(和网络上)有很多关于计划 9 的设计和实施的论文。
对于(几乎)完整的列表,请查看手册部分3 devices和4 file servers。
基本思想是所有资源看起来都像文件系统。内核以设备的形式公开资源,以文件服务器的形式公开用户程序。
这允许在网络环境中轻松共享资源。例如,要使用连接到另一个工作站的鼠标,您只需将(用 Plan 9 术语绑定) /dev/mouse从该工作站映射到您的名称空间。要使用另一台机器作为所有 tcp 连接的代理,只需将/net/tcp从该机器绑定到您的名称空间。
计划 9 以文件系统为中心,因此它将系统的每个元素都公开为一个文件,这是 UNIX 的基本理念。通过这种方式,协同作用被提升到环境中,例如,您可以从网络的任何节点访问受支持的设备,而无需任何类型的配置。
正如twopoint718所说,Plan9服务的“风格”是提供类似文件的界面。
不可能列出“所有内容”,因为任何人都可以编写另一个服务并通过合成文件接口公开它。
我喜欢将 Plan9 风格视为基于大块对象的,或者如 Alan Kay 所说:“基于消息传递”的系统。您通过实现这些服务器(当前范式中的微服务)来构建系统,定义它们的接口,然后通过“连接”组成服务来集成更全面的系统。