2020年度ラボユースでの発表で使用した資料です。
xv6にリモートファイルシステム9Pを実装するサイボウズ・ラボユース10期生 花井一輝
View Slide
2もくじ1. 導入: 何故9Pの実装をすることになったのか2. 背景知識2.1. xv62.2. TCP/IPスタック2.3. 9P3. 設計・実装について4. 実演5. まとめ
導入: 何故9Pの実装をすることになったのか● OSやインターネットに興味○ インターネットの機能に特化したOSを作ることに○ 透過的にリソースを使用することができる● 教育用のOS、xv6をベースとして利用● まずはファイルを透過的に扱う○ TCP/IPスタック○ 9Pファイルシステムプロトコル3
背景知識 〜xv6〜● MITにより開発● Unixライクなインタフェース● OSの基本的な機能を備える○ リソース管理○ プロセス○ システムコール○ ファイルシステム4
背景知識 〜TCP/IPスタック〜● OS内部でネットワーク処理を行う● 様々な参考実装が存在する○ Linux Kernel○ FreeBSD Kernel○ lwIP○ microps5NICEthernetIP ARPTCP UDPSocketユーザプログラム外部のコンピュータ
背景知識 〜9P〜● ファイルシステムを操作するプロトコル○ Plan9で利用されている○ いくつかのバージョンが存在し、9P2000.uを実装● 14種類のメッセージ○ Attach, Stat, Create, Open, Write, Read, etc…● 2つの識別子○ fid■ ファイルディスクリプタのようなもの○ qid■ ファイルに対して一意 6
設計・実装について~TCP/IPスタック~● TCPのステート管理が大変○ 10種類以上のステートが存在○ RFCや参考実装を読みながら実装○ バグの温床...● TCP/IPスタックのテスト機構を導入○ make test時にデバドラをテスト用に入れ替える● Nonblockingなシステムコール7
設計・実装について~9pサーバ~● xv6と9Pが仮定するファイルシステムの差異○ タイムスタンプやuid, gid○ Buffering処理● xv6のページサイズを拡張しTCPの性能改善○ 4096bytes → 65536bytes○ 約10倍の性能改善(lsの速度が16秒→1.5秒に)8
実演9
まとめ● xv6に対してTCP/IPスタックと9Pサーバを実装した● いくつかの工夫を行った○ TCP/IPスタックのテスト機構を導入○ xv6へのシステムコールの追加・修正○ ページサイズを拡張し、TCPの性能改善10
ご清聴ありがとうございました!11