Recommended
KEY
詳解UNIXプログラミング 第4章 ファイルとディレクトリ
PDF
PDF
PDF
PDF
PPTX
PDF
勉強会資料 LT会 zfsで遊んでみた_公開版
ODP
Programming under capability mode
PDF
Burstを使ってSHA-256のハッシュ計算を高速に行う話
PDF
PPTX
PPTX
ODP
Custom Package Building with Poudriere
ODP
PDF
20130126 第2回福岡debian勉強会 debian wheezyとdebian installerのはなし
PDF
FreeBSD と xrdp と私 〜FreeBSD developerになるまで〜
PDF
PPTX
2012 0623-x-road-tokyo-xoops-x(ten)
DOC
PPTX
PDF
PDF
PDF
PDF
DSIRNLP#3 LT: 辞書挟み込み型転置インデクスFIg4.5
PDF
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08
PDF
PDF
2011.09.18 v7から始めるunix まとめ
PDF
PPTX
PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~
PDF
More Related Content
KEY
詳解UNIXプログラミング 第4章 ファイルとディレクトリ
PDF
PDF
PDF
PDF
PPTX
PDF
勉強会資料 LT会 zfsで遊んでみた_公開版
ODP
Programming under capability mode
What's hot
PDF
Burstを使ってSHA-256のハッシュ計算を高速に行う話
PDF
PPTX
PPTX
ODP
Custom Package Building with Poudriere
ODP
PDF
20130126 第2回福岡debian勉強会 debian wheezyとdebian installerのはなし
PDF
FreeBSD と xrdp と私 〜FreeBSD developerになるまで〜
PDF
PPTX
2012 0623-x-road-tokyo-xoops-x(ten)
DOC
PPTX
PDF
PDF
PDF
PDF
DSIRNLP#3 LT: 辞書挟み込み型転置インデクスFIg4.5
PDF
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08
PDF
Similar to Slide
PDF
2011.09.18 v7から始めるunix まとめ
PDF
PPTX
PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~
PDF
PDF
PDF
HDFS basics from API perspective
PDF
PDF
2011.06.11 v7から始めるunix まとめ
PDF
PDF
PDF
PDF
PDF
PDF
PDF
[日本仮想化技術] 2014/6/5 OpenStack最新情報セミナー資料
PDF
PDF
PPTX
PDF
PDF
Hadoop book-2nd-ch3-update
More from Kazki Matsumoto
PPTX
PPTX
Async Programming on Ruby
PPTX
Introducing the Lingo project
PDF
From PHP monolith to polyglot microservices
PDF
the Lingo project (Esper2010 LT)
PPTX
All Your Mistake Are Belong To Us
PDF
PDF
Slide 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. files_struct構造体
• task_struct構造体のfilesメンバーから参照される
– スレッド間で共有参照される
• プロセスfork時には、コピーされる
• fdtable構造体へのポインタを持つ
– file構造体アドレス配列へのポインタ配列を持つ
• spinlock有
• FDステータス用ビットマップ
– open_fds
• どのFDが現在開かれているのか
– close_on_execフラグ
• exec()した時に自動で閉じてもらうためのオプション
– 初期割当て32個=32bit?
– 足りなくなると、次は256個領域に引越し
• 配列なので連続の必要あるため
• 領域確保はkmallocかvmallocで
11. file構造体
• オープンコンテキストを管理するもの
– ファイルオープンごとに生成される
– プロセスfork時には共有参照される
• dentry構造体へのポインタ有
– dentryを糸口に、ファイルパスが取得できる
• address_space構造体(inodeが含む)へのポインタ有
• spinlock有(epoll用)
• 参照カウント有(f_count)
– プロセス間で共有されるため
• ファイルオフセット有(f_pos)
– 読み込み/書き込み動作の対象位置(先頭からの位置)
– プロセス間で共有!?
12. dentry構造体
• ディレクトリエントリをモデル化したもの
– ディレクトリエントリの所有者
– ファイル名
– ファイル名に対応するinode構造体へのポインタ
• パス名キャッシュとしての役割
– dentry_hashtableのヘッド数はメモリ8KBにつき1個
• ファイル名に対して一意
– ファイル名長さとハッシュ値も持っている
• 高速比較可
– ファイルを多重オープンしても共有参照される
• (モノによって?)参照頻度極めて高し
– スケーラビリティのためRCUリストを持つ(d_rcu)
• spinlock有
• d_mounted(このdentryへのマウント数-後述)
13. 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)
14. 15. 16. 17. 18. 19. 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));
}
20. 21. 22. 23. 24. 25. 26. 27.