■プロセスとfileの関係 プロセスが一つファイルをオープンすると以下のようなデータ構造が作られる。

Slides:



Advertisements
Similar presentations
1 ログイン ユーザ名: root パスワード: hosei (初期設定). 2 はじめに 対象 学部 1 年生 日時 毎週木曜 6 限 18 : 30 ~ 19:30 ( 初回のみ ~ 20 : 00) 開催場所 W211 各自持参するもの ノート PC LAN ケーブル.
Advertisements

1 オペレーティングシステム 2004 ファイル管理 (1) 2003 年 11 月 5 日 海谷 治彦.
簡単動画制作 使用するアプリケーション  iMovie  特別教室の Mac にインストールされています  使用方法の動画解説( apple ) 
目次 このドキュメントについて・・・前提条件……………………………………… 2
SAP 環境における Active Directory 導入のメリット
実習1:コマンドシェルの使い方.
情報処理概論Ⅰ 2007 第3回 2007/5/2 情報処理概論Ⅰ 第3回.
プログラミング演習II 2004年11月 30日(第6回) 理学部数学科・木村巌.
UNIX利用法.
UNIX利用法 情報ネットワーク特論資料.
■ディレクトリエントリキャッシュ linuxではdentryという構造体に、ファイルパス名の情報を格納しメモリ上にキャッシングしている。
計算機工学III オペレーティングシステム #14 ファイル: より進んだファイルシステム 2006/07/21 津邑 公暁
ファイルキャッシュを考慮したディスク監視のオフロード
システムプログラミング 第7回、8回 ファイルシステム関連の システムコール
Android端末の盗難対策のためのページキャッシュ暗号化
■パス検索 各種ファイルを操作するには、まずパス名をiノードに変換しなければならない。 以下にパス名をiノードに変換する関数の説明を行う。
物理実験 I 情報実験第9回 2004/12/10 小西 丈予 2003/12/12 中神 雄一
物理実験 I 情報実験第9回 Modified 2005/12/2 徳永 義哉Original 2003/12/12 中神 雄一
ISD実習E 2009年6月29日 LISPシステム入門 (第5回) 関数ポインタ eval システム関数.
第3回 ファイルとフォルダ 伊藤 高廣 計算機リテラシーM 第3回 ファイルとフォルダ 伊藤 高廣
物理学情報処理演習 2. UNIX 補足自習用テキスト.
UNIXマシン間のファイル転送 2002年10月20日 海谷 治彦.
システムプログラミング 第6回、7回 main関数の引数 usageメッセージ システムコールのエラーメッセージ ファイル
MySQLに接続するデータベースプログラム
ファイルシステムの構造 外部記憶装置のパーティション(区画) ファイルシステムとパーティション(区画) ファイルシステムのmount
Accessによるデータベース(3) Ver /11.
Step-by-Step Guide on How to Start ALICE Analysis
■デバイスドライバIF - ドライバの登録 ブロックデバイスのドライバの登録は、register_blkdev関数を用いて、ブロックデバイスドライバの 登録テーブルblkdev[ ]に、デバイス名とデバイス操作関数テーブルの登録を行う。 unregister_blkdev関数はその逆に登録を抹消する。
オペレーティングシステム (OSの機能と構造)
ファイルシステムキャッシュを 考慮した仮想マシン監視機構
数値計算及び実習 第7回 プログラミングの基礎(5).
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング システムプログラミング プロセス間通信(パイプ) 担当:青木義満
構造体.
第7章 データベース管理システム 7.1 データベース管理システムの概要 7.2 データベースの格納方式 7.3 問合せ処理.
ファイルシステムキャッシュを 考慮したIDSオフロード
コンピュータ基礎実習上級 #10 絶対パスによる指定
Linuxカーネルについて 2014/01.
インターネット技術特論 B:コマンドライン, shell 山口 実靖
オペレーティングシステム2005 デバイス管理 (1)
補足説明.
SAccessor : デスクトップPCのための安全なファイルアクセス制御システム
プログラミング論 ファイル入出力
3-10. MySQLシステムの管理  2004年6月10日  大北高広                01T6010F.
Xenによる ゲストOSの監視に基づく パケットフィルタリング
第10回 ファイル管理 論理レコードと物理レコード アクセス方式 ユーザから見たファイルシステム 補助記憶装置の構成
ローカル変数とグローバル変数 ローカル変数  定義された関数内だけで使用できる変数 グローバル変数 プログラム全体で使用できる変数.
プログラミング 4 記憶の割り付け.
2005年度 データ構造とアルゴリズム 第3回 「C言語の復習:再帰的データ構造」
プログラミング論 ファイル入出力
「Webデータベースの構築技術」正誤表 ページ 項目 誤記 訂正 18 表1.4 アクセス 権限の削除 ・・・テーブル名 TO ユーザ名
第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について
データ構造と アルゴリズム 第五回 知能情報学部 新田直也.
Webコミュニティ概念を用いた Webマイニングについての研究 A study on Web Mining Based on Web Communities 清水 洋志.
情報処理 タイマの基礎 R8C タイマの基礎.
システムプログラミング 第7回、8回 ファイルシステム関連の システムコール
第4回 ファイル入出力方法.
オペレーティングシステム (ファイル) 2009年11月9日
システムプログラミング 第7回、8回 ファイルシステム関連の システムコール
Linux の世界に 触れてみよう! 情報実験 第 3 回 (2005/10/21)
データ構造とアルゴリズム 第11回 リスト構造(1)
UNIX演習 情報ネットワーク特論資料.
オペレーティングシステム (OSの機能と構造)
UNIX演習 情報ネットワーク特論資料.
システムプログラミング 第6回 システムコールのエラーメッセージ ファイルシステム 情報工学科 篠埜 功.
オペレーティングシステムJ/K 2004年10月4日
仮想マシンに対する 高いサービス可用性を実現する パケットフィルタリング
オペレーティングシステム (ファイル) 2006年11月16日
オペレーティングシステム (ファイル) 2008年11月17日
オペレーティングシステム (OSの機能と構造)
ネットワーク・プログラミング プロセスとファイルシステム管理.
Presentation transcript:

■プロセスとfileの関係 プロセスが一つファイルをオープンすると以下のようなデータ構造が作られる。 file構造体は、プロセスが行っているファイル操作の情報を管理する(openモード、ファイルポインタなど)。 dentry構造体はファイルの名前とディレクトリやファイルの相互の参照関係を管理する。 inodeはファイル実体を管理する。ファイルのデータブロックの場所、ファイルのオーナやモードなどを 管理している。 file構造体はプロセスに依存したデータであり、別のプロセスが同じファイルをopenすると、別途その プロセス用にfile構造体が用意される。二つあるfile構造体は同じdentry構造体を指す。 linuxでは様々な種類のファイルシステムをサポートしているため、ファイルシステム毎に適切な方法で ファイル(inode)をアクセスしなければならない。 これらアクセス方法は各種ファイルシステム内に関数テーブルという形で用意されており、各inodeは そのinodeが属するファイルシステム内の関数テーブルを指している。 (v2.4からはページキャッシュとファイル間での操作関数は address_space管理構造体で管理されること となった。)

address_space_operations file f_op f_dentry open, read, write, ioctl, mmap, …. hash, compare, delete, iput, release, … dentry d_op d_inode file_operations dentry_operations create, lookup, link, mkdir, truncate, …. address_space inode a_op i_fop i_op i_mapping inode_operations read_page, write_page, commit_write, bmap, ... address_space_operations

各プロセスはファイルシステムに関する情報、カレントディレクトリやumaskを持っているが、 各file構造体は下図のように各プロセスが保有するファイルディスクリプタテーブルに登録されている。 ファイルディスクリプタはこのテーブルの indexである。 task_struct fs_struct task_struct fs pwd root umask fs files files_struct file 各プロセスはファイルシステムに関する情報、カレントディレクトリやumaskを持っているが、 一般に同じshellから生まれたコマンドプロセスはこのデータを共有している。

■プロセスとfileの関係 - ファイル構造体の確保と解放 filp_open(パス名) パス名に対応したdentryを求める(open_namei関数) dentry_open関数を呼び出す。 dentry_open(dentry, ...) 空きファイル構造体を獲得(get_empty_filp関数) ファイル構造体の初期化 - ファイル構造体と上記dentryをリンク) - ファイル構造体のf_opメンバにファイル操作テーブルを登録 (「vfsと各ファイルシステムのインターフェイス」参照) ファイルのopen関数(ファイルシステム固有部)を呼ぶ ファイル構造体は、その参照数が0になると自動的に解放される。 (つまり誰も参照しなくなったとき) その参照数を1減らす関数は、以下のfput関数である。 fput(ファイル構造体) 参照数を1減らす 参照数が0になったら、フリーリストfree_listに戻す。

■プロセスとfileの関係 - 補足説明 get_empty_filp()は、ファイル構造体のフリーリストfree_listに root専用のfile構造体をリザーブしておく。 (NR_RESERVED_FILES 10個) このfile構造体は一般ユーザは利用できない。 ファイル構造体の上限値(初期値はNR_FILE 8192個)を使い切るとエラーになるが、エラーになった後に 運用を続けたままこの上限値を大きくするとが可能。 またファイル構造体が確保可能となる。 (当然、エラーになる前に大きくしておく方が良い)

■プロセスとfileの関係 - その他、主なファイル構造体操作関数群 fget() 引き数として与えられたファイルディスクリプタに対応する ファイル構造体の参照数を1増やす get_empty_filp() 空のファイル構造体を用意する. 用意したファイル構造体は anon_listリストに繋がれる。 put_filp() ファイル構造体の参照数が0なら、フリーリストfree_listに繋ぐ

■プロセスとfileの関係 - ファイル構造体の監視 以下の変数を見る事により、ファイル構造体の状態を大雑把につかむことができる。 ・nr_files 現在システム上の存在するファイル構造体数 ・nr_free_files フリー状態のファイル構造体数