$30 off During Our Annual Pro Sale. View Details »

xv6に9pを実装した

Kazuki Hanai
March 30, 2021
260

 xv6に9pを実装した

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

Kazuki Hanai

March 30, 2021
Tweet

Transcript

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

    View Slide

  2. 2
    もくじ
    1. 導入: 何故9Pの実装をすることになったのか
    2. 背景知識
    2.1. xv6
    2.2. TCP/IPスタック
    2.3. 9P
    3. 設計・実装について
    4. 実演
    5. まとめ

    View Slide

  3. 導入: 何故9Pの実装をすることになったのか
    ● OSやインターネットに興味
    ○ インターネットの機能に特化したOSを作ることに
    ○ 透過的にリソースを使用することができる
    ● 教育用のOS、xv6をベースとして利用
    ● まずはファイルを透過的に扱う
    ○ TCP/IPスタック
    ○ 9Pファイルシステムプロトコル
    3

    View Slide

  4. 背景知識 〜xv6〜
    ● MITにより開発
    ● Unixライクなインタフェース
    ● OSの基本的な機能を備える
    ○ リソース管理
    ○ プロセス
    ○ システムコール
    ○ ファイルシステム
    4

    View Slide

  5. 背景知識 〜TCP/IPスタック〜
    ● OS内部でネットワーク処理を行う
    ● 様々な参考実装が存在する
    ○ Linux Kernel
    ○ FreeBSD Kernel
    ○ lwIP
    ○ microps
    5
    NIC
    Ethernet
    IP ARP
    TCP UDP
    Socket
    ユーザプログラム
    外部のコンピュータ

    View Slide

  6. 背景知識 〜9P〜
    ● ファイルシステムを操作するプロトコル
    ○ Plan9で利用されている
    ○ いくつかのバージョンが存在し、9P2000.uを実装
    ● 14種類のメッセージ
    ○ Attach, Stat, Create, Open, Write, Read, etc…
    ● 2つの識別子
    ○ fid
    ■ ファイルディスクリプタのようなもの
    ○ qid
    ■ ファイルに対して一意 6

    View Slide

  7. 設計・実装について~TCP/IPスタック~
    ● TCPのステート管理が大変
    ○ 10種類以上のステートが存在
    ○ RFCや参考実装を読みながら実装
    ○ バグの温床...
    ● TCP/IPスタックのテスト機構を導入
    ○ make test時にデバドラをテスト用に入
    れ替える
    ● Nonblockingなシステムコール
    7

    View Slide

  8. 設計・実装について~9pサーバ~
    ● xv6と9Pが仮定するファイルシステムの差異
    ○ タイムスタンプやuid, gid
    ○ Buffering処理
    ● xv6のページサイズを拡張しTCPの性能改善
    ○ 4096bytes → 65536bytes
    ○ 約10倍の性能改善(lsの速度が16秒→1.5秒に)
    8

    View Slide

  9. 実演
    9

    View Slide

  10. まとめ
    ● xv6に対してTCP/IPスタックと9Pサーバを実装した
    ● いくつかの工夫を行った
    ○ TCP/IPスタックのテスト機構を導入
    ○ xv6へのシステムコールの追加・修正
    ○ ページサイズを拡張し、TCPの性能改善
    10

    View Slide

  11. ご清聴ありがとうございました!
    11

    View Slide