SlideShare ist ein Scribd-Unternehmen logo
1 von 27
「Linuxカーネル解読室」
       輪講@Hatena
         第15章
「仮想ファイルシステム(VFS)」

      松本一輝
     @KazkiMatz
Q1. inode
• これは何?
Q2. ファイルオープン操作
• ファイルオープンでどのような処理が走るのか?
 – HDD上のファイルにフラグ等が書き込まれるのか?
 – ファイルオープン中に電源落としたらどうなるのか?
Q3. オープン中のファイルを消すとどうなる?

• ディスク使用率が低下しないのは何故か?
Q4. /proc/***はどう実装されている?

• 仮想のディレクトリ?
 – どうやって摺りあわせてるのか?
Q5. ファイルパスは誰がパースするのか?

• “./../../foo/bar/”
Q6. マウント時に何が起きるのか?

• ディレクトリに何かが書き込まれる?
VFS
• 各ファイルシステムの差異を吸収、抽象化す
  るレイヤー
• ファイルタイプの違い(ファイルorディレクトリ)
  も吸収したりする(i_op)
• オブジェクト指向
システムコール(open, read, write, …)
                                           ユーザ空間

                                           カーネル空間


ファイルシステム
  共有処理                 VFS

ファイルシステム
                         …           …
  固有処理




  下位層
files_struct構造体
• task_struct構造体のfilesメンバーから参照される
  – スレッド間で共有参照される
• プロセスfork時には、コピーされる
• fdtable構造体へのポインタを持つ
  – file構造体アドレス配列へのポインタ配列を持つ
• spinlock有
• FDステータス用ビットマップ
  – open_fds
     • どのFDが現在開かれているのか
  – close_on_execフラグ
     • exec()した時に自動で閉じてもらうためのオプション
  – 初期割当て32個=32bit?
  – 足りなくなると、次は256個領域に引越し
     • 配列なので連続の必要あるため
     • 領域確保はkmallocかvmallocで
file構造体
• オープンコンテキストを管理するもの
  – ファイルオープンごとに生成される
  – プロセスfork時には共有参照される
• dentry構造体へのポインタ有
  – dentryを糸口に、ファイルパスが取得できる
• address_space構造体(inodeが含む)へのポインタ有
• spinlock有(epoll用)
• 参照カウント有(f_count)
  – プロセス間で共有されるため
• ファイルオフセット有(f_pos)
  – 読み込み/書き込み動作の対象位置(先頭からの位置)
  – プロセス間で共有!?
dentry構造体
• ディレクトリエントリをモデル化したもの
  – ディレクトリエントリの所有者
  – ファイル名
  – ファイル名に対応するinode構造体へのポインタ
• パス名キャッシュとしての役割
  – dentry_hashtableのヘッド数はメモリ8KBにつき1個
• ファイル名に対して一意
  – ファイル名長さとハッシュ値も持っている
    • 高速比較可
  – ファイルを多重オープンしても共有参照される
• (モノによって?)参照頻度極めて高し
  – スケーラビリティのためRCUリストを持つ(d_rcu)
• spinlock有
• d_mounted(このdentryへのマウント数-後述)
inode構造体
•   ファイル実体に対して一意
•   address_space構造体をメンバーに持つ
•   dentry構造体へのポインタを持つ
     – 1つのinodeは複数のdentryを持つことが出来る
•   参照カウント(i_count)
•   ハッシュリストで高速検索
     – ヘッド数はメモリ16KBにつき一個
•   さらに以下4リストのうちどれかにつながっている
     – inode_in_use
     – 使用中(参照カウントがゼロでない)かつdirtyでない
     – inode_unused
           •   未使用(参照カウントゼロ)
     – s_dirty
           •   dirtyなもの
     – s_io
•   i_op
     – オペレーション関数へのポインタ
•   ファイルのモード、UID、GID (i_mode, i_uid, i_gid)
super_block構造体
• 使用中のファイルシステムと一意である
 – ディスクパーティションごとにひとつ
• ファイルシステムについての各種情報
 –   file_system_type
 –   マウント数
 –   参照カウント
 –   s_op
      • オペレーション関数へのポインタ
• ファイルシステムに書き込まれたsuperblockと対
  応している
file_system_type構造体
• 使用可能なファイルシステム種と一意
• /proc/filesystem
vfsmount構造体
• マウントごとに存在
• ハッシュリストにつながれている
 – パス名ルックアップで使用される
   • dentryでd_mounted > 0 → vfsmount探索
 – ヘッド数は1ページ分(32bitの場合512エントリ)
• 参照カウント有(mnt_count)
 – 配下のファイルオープン、カレントディレクトリ等で
   インクリメントされる
fs_struct構造体
• task_structから参照される(fs)
• ルートディレクトリ、カレントディレクトリ情報
 – dentryへのポインタ
• ルートディレクトリ、カレントディレクトリのファイル
  システム情報
 – vfsmountへのポインタ
• fork時にはコピーされる
link_path_walk()
• 引数として、パス文字列及びnameidata構造
  体
• パーミッションに配慮しながらdentry,
  vfsmountをたどっていく
• . 、 .. 等
atomic_t (型)
An atomic_t is an integer variable that can be inspected and changed atomically.
It is mostly used for reference counting and semaphores. On i386 it is defined as
typedef struct { volatile int cnt; } atomic_t;
(http://www.win.tue.nl/~aeb/linux/lk/lk-13.html)



SMP環境を考慮したatomic_t用メソッド例(i386)

static __inline__ void atomic_dec(atomic_t *v) {
     __asm__ __volatile__(
          LOCK "decl %0“
          :"=m" (v->cnt)
          :"m" (v->cnt));
}
再掲
Q1. inode
• これは何?
Q2. ファイルオープン操作
• ファイルオープンでどのような処理が走るのか?
 – HDD上のファイルにフラグ等が書き込まれるのか?
 – ファイルオープン中に電源落としたらどうなるのか?
Q3. オープン中のファイルを消すとどうなる?

• ディスク使用率が低下しないのは何故か?
Q4. /proc/***はどう実装されている?

• ディレクトリがあるわけ?
Q5. ファイルパスは誰がパースするのか?

• “./../../foo/bar/”
Q6. マウント時に何が起きるのか?

• ディレクトリに何かが書き込まれる?
以上

Weitere ähnliche Inhalte

Was ist angesagt?

勉強会資料 LT会 zfsで遊んでみた_公開版
勉強会資料 LT会 zfsで遊んでみた_公開版勉強会資料 LT会 zfsで遊んでみた_公開版
勉強会資料 LT会 zfsで遊んでみた_公開版Ryoma Fujiwara
 
Ruby on FreeBSD 2020
Ruby on FreeBSD 2020Ruby on FreeBSD 2020
Ruby on FreeBSD 2020Koichiro Iwao
 
FreeBSD と xrdp と私 〜FreeBSD developerになるまで〜
FreeBSD と xrdp と私 〜FreeBSD developerになるまで〜FreeBSD と xrdp と私 〜FreeBSD developerになるまで〜
FreeBSD と xrdp と私 〜FreeBSD developerになるまで〜Koichiro Iwao
 
シェルスクリプトを極める
シェルスクリプトを極めるシェルスクリプトを極める
シェルスクリプトを極めるbsdhack
 
10分で分かるデータストレージ
10分で分かるデータストレージ10分で分かるデータストレージ
10分で分かるデータストレージTakashi Hoshino
 
20130126 第2回福岡debian勉強会 debian wheezyとdebian installerのはなし
20130126 第2回福岡debian勉強会 debian wheezyとdebian installerのはなし20130126 第2回福岡debian勉強会 debian wheezyとdebian installerのはなし
20130126 第2回福岡debian勉強会 debian wheezyとdebian installerのはなしTsuyoshi Yamada
 
フレッシャーズのためのパケット解析入門
フレッシャーズのためのパケット解析入門フレッシャーズのためのパケット解析入門
フレッシャーズのためのパケット解析入門彰 村地
 
Custom Package Building with Poudriere
Custom Package Building with PoudriereCustom Package Building with Poudriere
Custom Package Building with PoudriereYuichiro Naito
 
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08Nobuto Murata
 
FreeBSDのススメ
FreeBSDのススメFreeBSDのススメ
FreeBSDのススメkunst1080
 
ファイルの隠し方
ファイルの隠し方ファイルの隠し方
ファイルの隠し方mfumi
 
Debian Multiarch Support
Debian Multiarch SupportDebian Multiarch Support
Debian Multiarch SupportKeisuke Nakao
 
Burstを使ってSHA-256のハッシュ計算を高速に行う話
Burstを使ってSHA-256のハッシュ計算を高速に行う話Burstを使ってSHA-256のハッシュ計算を高速に行う話
Burstを使ってSHA-256のハッシュ計算を高速に行う話Unity Technologies Japan K.K.
 
ドキュメント共有システム「ShareDoc」
ドキュメント共有システム「ShareDoc」ドキュメント共有システム「ShareDoc」
ドキュメント共有システム「ShareDoc」Wataru Shiraishi
 
2012 0623-x-road-tokyo-xoops-x(ten)
2012 0623-x-road-tokyo-xoops-x(ten)2012 0623-x-road-tokyo-xoops-x(ten)
2012 0623-x-road-tokyo-xoops-x(ten)Naoki Okino
 
06 後期勉強会一年の部【加藤】
06 後期勉強会一年の部【加藤】06 後期勉強会一年の部【加藤】
06 後期勉強会一年の部【加藤】yu-Linux
 
DSIRNLP#3 LT: 辞書挟み込み型転置インデクスFIg4.5
DSIRNLP#3 LT: 辞書挟み込み型転置インデクスFIg4.5DSIRNLP#3 LT: 辞書挟み込み型転置インデクスFIg4.5
DSIRNLP#3 LT: 辞書挟み込み型転置インデクスFIg4.5sleepy_yoshi
 

Was ist angesagt? (19)

勉強会資料 LT会 zfsで遊んでみた_公開版
勉強会資料 LT会 zfsで遊んでみた_公開版勉強会資料 LT会 zfsで遊んでみた_公開版
勉強会資料 LT会 zfsで遊んでみた_公開版
 
Ruby on FreeBSD 2020
Ruby on FreeBSD 2020Ruby on FreeBSD 2020
Ruby on FreeBSD 2020
 
FreeBSD と xrdp と私 〜FreeBSD developerになるまで〜
FreeBSD と xrdp と私 〜FreeBSD developerになるまで〜FreeBSD と xrdp と私 〜FreeBSD developerになるまで〜
FreeBSD と xrdp と私 〜FreeBSD developerになるまで〜
 
シェルスクリプトを極める
シェルスクリプトを極めるシェルスクリプトを極める
シェルスクリプトを極める
 
10分で分かるデータストレージ
10分で分かるデータストレージ10分で分かるデータストレージ
10分で分かるデータストレージ
 
20130126 第2回福岡debian勉強会 debian wheezyとdebian installerのはなし
20130126 第2回福岡debian勉強会 debian wheezyとdebian installerのはなし20130126 第2回福岡debian勉強会 debian wheezyとdebian installerのはなし
20130126 第2回福岡debian勉強会 debian wheezyとdebian installerのはなし
 
フレッシャーズのためのパケット解析入門
フレッシャーズのためのパケット解析入門フレッシャーズのためのパケット解析入門
フレッシャーズのためのパケット解析入門
 
Custom Package Building with Poudriere
Custom Package Building with PoudriereCustom Package Building with Poudriere
Custom Package Building with Poudriere
 
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08
 
FreeBSDのススメ
FreeBSDのススメFreeBSDのススメ
FreeBSDのススメ
 
ファイルの隠し方
ファイルの隠し方ファイルの隠し方
ファイルの隠し方
 
Ext4 filesystem(2)
Ext4 filesystem(2)Ext4 filesystem(2)
Ext4 filesystem(2)
 
Debian Multiarch Support
Debian Multiarch SupportDebian Multiarch Support
Debian Multiarch Support
 
Burstを使ってSHA-256のハッシュ計算を高速に行う話
Burstを使ってSHA-256のハッシュ計算を高速に行う話Burstを使ってSHA-256のハッシュ計算を高速に行う話
Burstを使ってSHA-256のハッシュ計算を高速に行う話
 
ドキュメント共有システム「ShareDoc」
ドキュメント共有システム「ShareDoc」ドキュメント共有システム「ShareDoc」
ドキュメント共有システム「ShareDoc」
 
2012 0623-x-road-tokyo-xoops-x(ten)
2012 0623-x-road-tokyo-xoops-x(ten)2012 0623-x-road-tokyo-xoops-x(ten)
2012 0623-x-road-tokyo-xoops-x(ten)
 
06 後期勉強会一年の部【加藤】
06 後期勉強会一年の部【加藤】06 後期勉強会一年の部【加藤】
06 後期勉強会一年の部【加藤】
 
DSIRNLP#3 LT: 辞書挟み込み型転置インデクスFIg4.5
DSIRNLP#3 LT: 辞書挟み込み型転置インデクスFIg4.5DSIRNLP#3 LT: 辞書挟み込み型転置インデクスFIg4.5
DSIRNLP#3 LT: 辞書挟み込み型転置インデクスFIg4.5
 
Sfstudy #2
Sfstudy #2Sfstudy #2
Sfstudy #2
 

Ähnlich wie Slide

コード読経会報告書
コード読経会報告書コード読経会報告書
コード読経会報告書Masahiko Toyoshi
 
【第二回 ゼロからはじめる Oracle Solaris 11】02 Solaris 11 を支える最強のファイルシステム ZFS ~ ZFS ファイルシ...
【第二回 ゼロからはじめる Oracle Solaris 11】02 Solaris 11 を支える最強のファイルシステム ZFS ~ ZFS ファイルシ...【第二回 ゼロからはじめる Oracle Solaris 11】02 Solaris 11 を支える最強のファイルシステム ZFS ~ ZFS ファイルシ...
【第二回 ゼロからはじめる Oracle Solaris 11】02 Solaris 11 を支える最強のファイルシステム ZFS ~ ZFS ファイルシ...SolarisJP
 
10年効く分散ファイルシステム技術 GlusterFS & Red Hat Storage
10年効く分散ファイルシステム技術 GlusterFS & Red Hat Storage10年効く分散ファイルシステム技術 GlusterFS & Red Hat Storage
10年効く分散ファイルシステム技術 GlusterFS & Red Hat StorageEtsuji Nakai
 
Infinispan - Open Source Data Grid rev2
Infinispan - Open Source Data Grid rev2Infinispan - Open Source Data Grid rev2
Infinispan - Open Source Data Grid rev2nekop
 
ロボットシステム学2015年第5回
ロボットシステム学2015年第5回ロボットシステム学2015年第5回
ロボットシステム学2015年第5回Ryuichi Ueda
 
2011.09.18 v7から始めるunix まとめ
2011.09.18 v7から始めるunix まとめ2011.09.18 v7から始めるunix まとめ
2011.09.18 v7から始めるunix まとめMakiko Konoshima
 
Fuchsia概略その1
Fuchsia概略その1Fuchsia概略その1
Fuchsia概略その1l_b__
 
システムパフォーマンス勉強会#4
システムパフォーマンス勉強会#4システムパフォーマンス勉強会#4
システムパフォーマンス勉強会#4shingo suzuki
 
システムパフォーマンス勉強会#4
システムパフォーマンス勉強会#4システムパフォーマンス勉強会#4
システムパフォーマンス勉強会#4shingo suzuki
 
Pythonista も ls を読むべきか?
Pythonista も ls を読むべきか?Pythonista も ls を読むべきか?
Pythonista も ls を読むべきか?Katsunori FUJIWARA
 
20031030 「読み込み専用マウントによる改ざん防止Linuxサーバの構築」
20031030 「読み込み専用マウントによる改ざん防止Linuxサーバの構築」20031030 「読み込み専用マウントによる改ざん防止Linuxサーバの構築」
20031030 「読み込み専用マウントによる改ざん防止Linuxサーバの構築」Toshiharu Harada, Ph.D
 
OSやアプリを問わず装着するだけで重要データを防御するセキュリティバリアデバイス by 戸田 賢二
OSやアプリを問わず装着するだけで重要データを防御するセキュリティバリアデバイス by 戸田 賢二OSやアプリを問わず装着するだけで重要データを防御するセキュリティバリアデバイス by 戸田 賢二
OSやアプリを問わず装着するだけで重要データを防御するセキュリティバリアデバイス by 戸田 賢二CODE BLUE
 
社内サーバインフラ勉強会(DB)
社内サーバインフラ勉強会(DB)社内サーバインフラ勉強会(DB)
社内サーバインフラ勉強会(DB)Masahiro NAKAYAMA
 
Kubernetes in プロダクション! -- cndjp第2回
Kubernetes in プロダクション! -- cndjp第2回Kubernetes in プロダクション! -- cndjp第2回
Kubernetes in プロダクション! -- cndjp第2回Hiroshi Hayakawa
 
20120913 nosql@hikarie(okuyama fuse)
20120913 nosql@hikarie(okuyama fuse)20120913 nosql@hikarie(okuyama fuse)
20120913 nosql@hikarie(okuyama fuse)Takahiro Iwase
 
PostgreSQLのパラレル化に向けた取り組み@第30回(仮名)PostgreSQL勉強会
PostgreSQLのパラレル化に向けた取り組み@第30回(仮名)PostgreSQL勉強会PostgreSQLのパラレル化に向けた取り組み@第30回(仮名)PostgreSQL勉強会
PostgreSQLのパラレル化に向けた取り組み@第30回(仮名)PostgreSQL勉強会Shigeru Hanada
 
Reading kernel org
Reading kernel orgReading kernel org
Reading kernel orgKai Sasaki
 
Osc201703 tokyo-clonezilla-v1.2 j
Osc201703 tokyo-clonezilla-v1.2 jOsc201703 tokyo-clonezilla-v1.2 j
Osc201703 tokyo-clonezilla-v1.2 jAkira Yoshiyama
 

Ähnlich wie Slide (20)

コード読経会報告書
コード読経会報告書コード読経会報告書
コード読経会報告書
 
Osc2011 Do
Osc2011 DoOsc2011 Do
Osc2011 Do
 
【第二回 ゼロからはじめる Oracle Solaris 11】02 Solaris 11 を支える最強のファイルシステム ZFS ~ ZFS ファイルシ...
【第二回 ゼロからはじめる Oracle Solaris 11】02 Solaris 11 を支える最強のファイルシステム ZFS ~ ZFS ファイルシ...【第二回 ゼロからはじめる Oracle Solaris 11】02 Solaris 11 を支える最強のファイルシステム ZFS ~ ZFS ファイルシ...
【第二回 ゼロからはじめる Oracle Solaris 11】02 Solaris 11 を支える最強のファイルシステム ZFS ~ ZFS ファイルシ...
 
10年効く分散ファイルシステム技術 GlusterFS & Red Hat Storage
10年効く分散ファイルシステム技術 GlusterFS & Red Hat Storage10年効く分散ファイルシステム技術 GlusterFS & Red Hat Storage
10年効く分散ファイルシステム技術 GlusterFS & Red Hat Storage
 
スキーマとURI
スキーマとURIスキーマとURI
スキーマとURI
 
Infinispan - Open Source Data Grid rev2
Infinispan - Open Source Data Grid rev2Infinispan - Open Source Data Grid rev2
Infinispan - Open Source Data Grid rev2
 
ロボットシステム学2015年第5回
ロボットシステム学2015年第5回ロボットシステム学2015年第5回
ロボットシステム学2015年第5回
 
2011.09.18 v7から始めるunix まとめ
2011.09.18 v7から始めるunix まとめ2011.09.18 v7から始めるunix まとめ
2011.09.18 v7から始めるunix まとめ
 
Fuchsia概略その1
Fuchsia概略その1Fuchsia概略その1
Fuchsia概略その1
 
システムパフォーマンス勉強会#4
システムパフォーマンス勉強会#4システムパフォーマンス勉強会#4
システムパフォーマンス勉強会#4
 
システムパフォーマンス勉強会#4
システムパフォーマンス勉強会#4システムパフォーマンス勉強会#4
システムパフォーマンス勉強会#4
 
Pythonista も ls を読むべきか?
Pythonista も ls を読むべきか?Pythonista も ls を読むべきか?
Pythonista も ls を読むべきか?
 
20031030 「読み込み専用マウントによる改ざん防止Linuxサーバの構築」
20031030 「読み込み専用マウントによる改ざん防止Linuxサーバの構築」20031030 「読み込み専用マウントによる改ざん防止Linuxサーバの構築」
20031030 「読み込み専用マウントによる改ざん防止Linuxサーバの構築」
 
OSやアプリを問わず装着するだけで重要データを防御するセキュリティバリアデバイス by 戸田 賢二
OSやアプリを問わず装着するだけで重要データを防御するセキュリティバリアデバイス by 戸田 賢二OSやアプリを問わず装着するだけで重要データを防御するセキュリティバリアデバイス by 戸田 賢二
OSやアプリを問わず装着するだけで重要データを防御するセキュリティバリアデバイス by 戸田 賢二
 
社内サーバインフラ勉強会(DB)
社内サーバインフラ勉強会(DB)社内サーバインフラ勉強会(DB)
社内サーバインフラ勉強会(DB)
 
Kubernetes in プロダクション! -- cndjp第2回
Kubernetes in プロダクション! -- cndjp第2回Kubernetes in プロダクション! -- cndjp第2回
Kubernetes in プロダクション! -- cndjp第2回
 
20120913 nosql@hikarie(okuyama fuse)
20120913 nosql@hikarie(okuyama fuse)20120913 nosql@hikarie(okuyama fuse)
20120913 nosql@hikarie(okuyama fuse)
 
PostgreSQLのパラレル化に向けた取り組み@第30回(仮名)PostgreSQL勉強会
PostgreSQLのパラレル化に向けた取り組み@第30回(仮名)PostgreSQL勉強会PostgreSQLのパラレル化に向けた取り組み@第30回(仮名)PostgreSQL勉強会
PostgreSQLのパラレル化に向けた取り組み@第30回(仮名)PostgreSQL勉強会
 
Reading kernel org
Reading kernel orgReading kernel org
Reading kernel org
 
Osc201703 tokyo-clonezilla-v1.2 j
Osc201703 tokyo-clonezilla-v1.2 jOsc201703 tokyo-clonezilla-v1.2 j
Osc201703 tokyo-clonezilla-v1.2 j
 

Mehr von Kazki Matsumoto

From PHP monolith to polyglot microservices
From PHP monolith to polyglot microservicesFrom PHP monolith to polyglot microservices
From PHP monolith to polyglot microservicesKazki Matsumoto
 
the Lingo project (Esper2010 LT)
the Lingo project (Esper2010 LT)the Lingo project (Esper2010 LT)
the Lingo project (Esper2010 LT)Kazki Matsumoto
 
Introducing the Lingo project
Introducing the Lingo projectIntroducing the Lingo project
Introducing the Lingo projectKazki Matsumoto
 
All Your Mistake Are Belong To Us
All Your Mistake Are Belong To UsAll Your Mistake Are Belong To Us
All Your Mistake Are Belong To UsKazki Matsumoto
 
Async Programming on Ruby
Async Programming on RubyAsync Programming on Ruby
Async Programming on RubyKazki Matsumoto
 
Linuxカーネル解読室輪講@はてな 第6章
Linuxカーネル解読室輪講@はてな 第6章Linuxカーネル解読室輪講@はてな 第6章
Linuxカーネル解読室輪講@はてな 第6章Kazki Matsumoto
 

Mehr von Kazki Matsumoto (8)

From PHP monolith to polyglot microservices
From PHP monolith to polyglot microservicesFrom PHP monolith to polyglot microservices
From PHP monolith to polyglot microservices
 
IIR 21 Link Analysis
IIR 21 Link AnalysisIIR 21 Link Analysis
IIR 21 Link Analysis
 
IVS Launch Pad - Lingo
IVS Launch Pad - LingoIVS Launch Pad - Lingo
IVS Launch Pad - Lingo
 
the Lingo project (Esper2010 LT)
the Lingo project (Esper2010 LT)the Lingo project (Esper2010 LT)
the Lingo project (Esper2010 LT)
 
Introducing the Lingo project
Introducing the Lingo projectIntroducing the Lingo project
Introducing the Lingo project
 
All Your Mistake Are Belong To Us
All Your Mistake Are Belong To UsAll Your Mistake Are Belong To Us
All Your Mistake Are Belong To Us
 
Async Programming on Ruby
Async Programming on RubyAsync Programming on Ruby
Async Programming on Ruby
 
Linuxカーネル解読室輪講@はてな 第6章
Linuxカーネル解読室輪講@はてな 第6章Linuxカーネル解読室輪講@はてな 第6章
Linuxカーネル解読室輪講@はてな 第6章
 

Slide