9P是贝尔实验室分布式操作系统为Plan 9开发的网络协议,作为连接Plan 9系统组件的手段。 文件是Plan 9中的关键对象。它们表示窗口,网络连接,进程以及操作系统中几乎所有可用的东西。
9P以9P2000的名称修订了第9版Plan 9,其中包含各种[基本的改进。 最新版本的Inferno操作系统也使用9P2000。 Inferno文件协议最初称为Styx,但从技术上讲,它始终是9P的一种变体。
Plan 9发行版中包含一个名为u9fs的用于Unix的9P服务器实现。 Mac9P提供了9P OS X客户端内核扩展。[1] Linux的内核客户端驱动程序是v9fs项目的一部分。 9P及其衍生产品在嵌入式环境中也有应用,例如Brick项目上的Styx。
服务器应用Plan 9的许多应用程序都采用9P文件服务器的形式1。 例子包括:
1.acme:文本编辑器/开发环境;
2.rio:Plan 9窗口系统;
3.plumber:进程间通信;
4.ftpfs:一个FTP客户端,它在本地命名空间中的远程FTP服务器上显示文件和目录;
5.wikifs:一种维基编辑工具,它将一个远程维基呈现为本地命名空间中的文件;
6.webfs:一个文件服务器,用于从URL中检索数据,并将响应的内容和详细信息显示为本地名称空间中的文件;
7.NixOS:一个纯粹功能性和声明性的Linux发行版可以在虚拟机内重建自己,客户机使用9P来挂载h的存储目录。
应用9P在客户端和服务器之间发送以下消息。这些消息对应于任何9P服务器必须实现的Plan 9 vfs层中的入口点。
1.版本:协商协议版本;
2.错误:返回错误;
3.发红:中止消息;
4.认证,附加:建立连接;
5.步行:下载目录层次结构;
6.创建,打开:在现有文件或新文件上为I / O准备一个fid ;
7.读,写:将数据传输到文件;
8.闷响:忘掉一个fid ;
9.移除:从服务器中删除文件;
10.stat,wstat:查询或更改文件属性。
本词条内容贡献者为:
李嘉骞 - 博士 - 同济大学