Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
xv6に9pを実装した
Search
Kazuki Hanai
March 30, 2021
1
310
xv6に9pを実装した
2020年度ラボユースでの発表で使用した資料です。
Kazuki Hanai
March 30, 2021
Tweet
Share
More Decks by Kazuki Hanai
See All by Kazuki Hanai
事例で知る魔界 〜仮想通貨はやめろ〜
hnkz1015
0
73
「分散システムで学ぶセキュリティ」セキュリティミニキャンプ in 愛知 2019
hnkz1015
0
20
Featured
See All Featured
The Pragmatic Product Professional
lauravandoore
31
6.2k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3.5k
Speed Design
sergeychernyshev
23
540
Unsuck your backbone
ammeep
668
57k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
27
1.9k
Learning to Love Humans: Emotional Interface Design
aarron
272
40k
The Language of Interfaces
destraynor
154
24k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
Side Projects
sachag
452
42k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
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