9P(プロトコル)

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

9P(またはPlan 9 Filesystem ProtocolまたはStyx)は、Plan9システムのコンポーネントを接続する手段としてBellLabs分散オペレーティングシステムからPlan9用に開発されネットワークプロトコルですファイルは、Plan 9の主要なオブジェクトです。ファイルはウィンドウネットワーク接続、プロセス、およびオペレーティングシステムで使用可能なその他のほとんどすべてを表します

9Pは、プラン9の第4版で、9P2000という名前で改訂され、さまざまな改善が加えられました。行われた改善のいくつかは、特定のファイル名制限の削除、ディレクトリの「最後の修飾子」メタデータフィールドの追加、および認証ファイルです。[1] Infernoオペレーティングシステムの最新バージョンも9P2000を使用しています。 Infernoファイルプロトコルは元々Styxと呼ばれていましたが、技術的には常に9Pのバリアントでした。

Plan 9ディストリビューションにはu9fs [2] [3]と呼ばれるUnix用の9Pのサーバー実装が含まれています。9P OS Xクライアントのカーネル拡張はMac9Pによって提供されます。[4] Linux用のいくつかの拡張機能を備えた9pを実装するカーネルクライアントドライバーは、v9fsプロジェクトの一部です9Pとその派生物は、Styx on aBrickプロジェクトなどの組み込み環境にも適用されています。[5]

サーバーアプリケーション

Plan 9のアプリケーションの多くは、9Pファイルサーバーの形式を取ります。例は次のとおりです。

  • acme:テキストエディタ/開発環境
  • rio:プラン9ウィンドウシステム
  • 配管工:プロセス間通信
  • ftpfs:ローカル名前空間のリモートFTPサーバー上のファイルとディレクトリを表示するFTPクライアント
  • wikifs:リモートwikiをローカル名前空間のファイルとして表示するwiki編集ツール
  • webfs:URLからデータを取得し、応答の内容と詳細をローカル名前空間のファイルとして表示するファイルサーバー

Plan 9以外では、軽量のリモートファイルシステムが必要な場合でも9Pプロトコルが使用されます。

  • NixOS:純粋に機能的で宣言型のLinuxディストリビューションは、仮想マシン内でそれ自体を再構築できます。クライアントは9Pを使用してホストのパッケージストアディレクトリをマウントします。
  • Linux用のWindowsサブシステム:Windows 10バージョン1903以降、サブシステムは9Pをサーバーとして実装し、ホストのWindowsオペレーティングシステムはクライアントとして機能します。[6]
  • Crostini:カスタム9Pサーバーは、LinuxVMの外部のファイルへのアクセスを提供するために使用されます[7]
  • QEMU:VirtFSデバイスは、9Pを介したファイルシステム共有を可能にします。これは、カーネルドライバーと共有メモリによって高速化されます[8] [9]
  • DIOD:分散I / Oデーモン-9Pファイルサーバー

実装

9Pは、クライアントとサーバー間で次のメッセージを送信します。[10] これらのメッセージは、9Pサーバーが実装する必要のあるPlan 9vfsレイヤーのエントリポイントに対応しています。

バージョン
プロトコルバージョンのネゴシエーション[11]
エラー
エラーを返す[12]
流す
メッセージを中止する[13]
認証、添付
接続を確立します[14]
歩く
ディレクトリ階層を降順[15]
作成、開く
既存または新規のファイルでI / O用のfidを準備します[16]
読み書き
ファイルとの間でデータを転送する[17]
がらくた
フィッドを忘れる[18]
削除する
サーバーからファイルを削除する[19]
stat、wstat
ファイル属性の照会または変更[20]

も参照してください

参考文献

  1. ^ 「ベル研究所からの計画9—概要」9p.io
  2. ^ 「調査:u9fs.tgzはソースコードtarbalです」www.netlib.org
  3. ^ 「プラン9 / sys / man / 4 / u9fs」9p.io
  4. ^ benavento(2019年4月19日)。「9PforMac」–GitHub経由。
  5. ^ 「Styx-on-a-Brick」Cat-VDoc
  6. ^ 「Windows10バージョン1903のWSLの新機能」開発者向けのWindowsコマンドラインツール2019年2月16日。
  7. ^ 「ChromeOSでのカスタムコンテナの実行」ChromiumOSドキュメント2019年3月28日取得
  8. ^ Jujjuri、Venkateswararao; Van Hensbergen、Eric; Liguori、Anthony; プラヴァルティ、バダリ(2010年7月13〜16日)。「VirtFS—仮想化対応のファイルシステムパススルー」(PDF)Linuxシンポジウム
  9. ^ 「ドキュメント/ 9psetup」QEMUDocs 2019年3月28日取得
  10. ^ 「セクション5:9Pプロトコル」プラン9マニュアルg
  11. ^ 「プラン9マニュアルのセクション5のバージョンページ」プラン9マニュアルg
  12. ^ 「プラン9マニュアルのセクション5のエラーページ」プラン9マニュアルg
  13. ^ 「プラン9マニュアルのセクション5のページをフラッシュする」プラン9マニュアルg
  14. ^ 「プラン9マニュアルのセクション5のページを添付してください」プラン9マニュアルg
  15. ^ 「プラン9マニュアルのセクション5からのウォークページ」プラン9マニュアルg
  16. ^ 「プラン9マニュアルのセクション5からページを開く」プラン9マニュアルg
  17. ^ 「計画9マニュアルのセクション5からページを読んでください」プラン9マニュアルg
  18. ^ 「プラン9マニュアルのセクション5のクランクページ」プラン9マニュアルg
  19. ^ 「プラン9マニュアルのセクション5からページを削除する」プラン9マニュアルg
  20. ^ 「計画9マニュアルのセクション5からの統計ページ」プラン9マニュアルg

外部リンク