Upgrade to Pro — share decks privately, control downloads, hide ads and more …

xv6に9pを実装した

61bebc1fd35ec247de9afd85c5ceec19?s=47 Kazuki Hanai
March 30, 2021
74

 xv6に9pを実装した

2020年度ラボユースでの発表で使用した資料です。

61bebc1fd35ec247de9afd85c5ceec19?s=128

Kazuki Hanai

March 30, 2021
Tweet

Transcript

  1. xv6にリモートファイルシステ ム9Pを実装する サイボウズ・ラボユース10期生 花井一輝

  2. 2 もくじ 1. 導入: 何故9Pの実装をすることになったのか 2. 背景知識 2.1. xv6 2.2.

    TCP/IPスタック 2.3. 9P 3. 設計・実装について 4. 実演 5. まとめ
  3. 導入: 何故9Pの実装をすることになったのか • OSやインターネットに興味 ◦ インターネットの機能に特化したOSを作ることに ◦ 透過的にリソースを使用することができる • 教育用のOS、xv6をベースとして利用

    • まずはファイルを透過的に扱う ◦ TCP/IPスタック ◦ 9Pファイルシステムプロトコル 3
  4. 背景知識 〜xv6〜 • MITにより開発 • Unixライクなインタフェース • OSの基本的な機能を備える ◦ リソース管理

    ◦ プロセス ◦ システムコール ◦ ファイルシステム 4
  5. 背景知識 〜TCP/IPスタック〜 • OS内部でネットワーク処理を行う • 様々な参考実装が存在する ◦ Linux Kernel ◦

    FreeBSD Kernel ◦ lwIP ◦ microps 5 NIC Ethernet IP ARP TCP UDP Socket ユーザプログラム 外部のコンピュータ
  6. 背景知識 〜9P〜 • ファイルシステムを操作するプロトコル ◦ Plan9で利用されている ◦ いくつかのバージョンが存在し、9P2000.uを実装 • 14種類のメッセージ

    ◦ Attach, Stat, Create, Open, Write, Read, etc… • 2つの識別子 ◦ fid ▪ ファイルディスクリプタのようなもの ◦ qid ▪ ファイルに対して一意 6
  7. 設計・実装について~TCP/IPスタック~ • TCPのステート管理が大変 ◦ 10種類以上のステートが存在 ◦ RFCや参考実装を読みながら実装 ◦ バグの温床... •

    TCP/IPスタックのテスト機構を導入 ◦ make test時にデバドラをテスト用に入 れ替える • Nonblockingなシステムコール 7
  8. 設計・実装について~9pサーバ~ • xv6と9Pが仮定するファイルシステムの差異 ◦ タイムスタンプやuid, gid ◦ Buffering処理 • xv6のページサイズを拡張しTCPの性能改善

    ◦ 4096bytes → 65536bytes ◦ 約10倍の性能改善(lsの速度が16秒→1.5秒に) 8
  9. 実演 9

  10. まとめ • xv6に対してTCP/IPスタックと9Pサーバを実装した • いくつかの工夫を行った ◦ TCP/IPスタックのテスト機構を導入 ◦ xv6へのシステムコールの追加・修正 ◦

    ページサイズを拡張し、TCPの性能改善 10
  11. ご清聴ありがとうございました! 11