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
280
xv6に9pを実装した
2020年度ラボユースでの発表で使用した資料です。
Kazuki Hanai
March 30, 2021
Tweet
Share
More Decks by Kazuki Hanai
See All by Kazuki Hanai
事例で知る魔界 〜仮想通貨はやめろ〜
hnkz1015
0
40
「分散システムで学ぶセキュリティ」セキュリティミニキャンプ in 愛知 2019
hnkz1015
0
15
Featured
See All Featured
Gamification - CAS2011
davidbonilla
76
4.6k
Producing Creativity
orderedlist
PRO
337
39k
Automating Front-end Workflow
addyosmani
1356
200k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
116
18k
The Cult of Friendly URLs
andyhume
74
5.7k
Side Projects
sachag
451
41k
The Mythical Team-Month
searls
216
42k
Building Better People: How to give real-time feedback that sticks.
wjessup
355
18k
The Invisible Side of Design
smashingmag
294
49k
Building Adaptive Systems
keathley
31
1.9k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
14
1.6k
Fantastic passwords and where to find them - at NoRuKo
philnash
37
2.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