Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up
for free
xv6に9pを実装した
Kazuki Hanai
March 30, 2021
1
74
xv6に9pを実装した
2020年度ラボユースでの発表で使用した資料です。
Kazuki Hanai
March 30, 2021
Tweet
Share
Featured
See All Featured
akmur
252
19k
jponch
103
5.1k
shlominoach
176
7.6k
destraynor
146
19k
dougneiner
119
8k
robhawkes
53
2.9k
bermonpainter
343
26k
ammeep
657
54k
lara
590
61k
malarkey
193
8.7k
carmenhchung
35
1.6k
erikaheidi
15
4.5k
Transcript
xv6にリモートファイルシステ ム9Pを実装する サイボウズ・ラボユース10期生 花井一輝
2 もくじ 1. 導入: 何故9Pの実装をすることになったのか 2. 背景知識 2.1. xv6 2.2.
TCP/IPスタック 2.3. 9P 3. 設計・実装について 4. 実演 5. まとめ
導入: 何故9Pの実装をすることになったのか • OSやインターネットに興味 ◦ インターネットの機能に特化したOSを作ることに ◦ 透過的にリソースを使用することができる • 教育用のOS、xv6をベースとして利用
• まずはファイルを透過的に扱う ◦ TCP/IPスタック ◦ 9Pファイルシステムプロトコル 3
背景知識 〜xv6〜 • MITにより開発 • Unixライクなインタフェース • OSの基本的な機能を備える ◦ リソース管理
◦ プロセス ◦ システムコール ◦ ファイルシステム 4
背景知識 〜TCP/IPスタック〜 • OS内部でネットワーク処理を行う • 様々な参考実装が存在する ◦ Linux Kernel ◦
FreeBSD Kernel ◦ lwIP ◦ microps 5 NIC Ethernet IP ARP TCP UDP Socket ユーザプログラム 外部のコンピュータ
背景知識 〜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