タグ

ブックマーク / wiki.bit-hive.com (5)

  • 空きページの確保 - Linuxカーネルメモ

    1. 概要 空きメモリが少なくなってくると、ディスクキャッシュ等のページを解放して空きメモリを増やす。 2. 処理の流れ キャッシュの解放は主にshrink_*の関数で行われる。各関数の関連は図1のようになっている。 (注) zone_reclaim()については、NUMAアーキテクチャでなければ(CONFIG_NUMA未定義)なら何もしない。よって、get_page_from_freelist()でフリーリストからページが取れなくてもzone_reclaim()によってページの回収処理は動かない。一般的なアーキテクチャではget_page_from_freelist()が失敗した後、try_to_free_pages()でページの回収が行なわれる。 3. shrink処理の開始契機 図1にもあるようにshrink処理の開始契機となるのは以下の関数。 kswapd() alloc_page

    Yudoufu
    Yudoufu 2014/10/17
  • カーネルのページフォルト - Linuxの備忘録とか・・・(目次へ)

    Linuxのページング機構は移植性を考慮して、制御レジスタ(cr3)->ページグルーバルディレクトリ(pgd)->ページアッパディレクトリ(pud)->ページミドルディレクトリ(pmd)->ページテーブル(pte)の4段構えでアドレッシングを行っている。X86-32では2段構成のアーキテクチャで、与えられたテーブルディレクトリをそのまま返すことで実装している。 #define pud_offset(pgd, start) (pgd) static inline pmd_t *pmd_offset(pgd_t * dir, unsigned long address) { return (pmd_t *) dir; } ユーザプロセスのメモリはそれぞれに上記のページテーブルを有していて、実際使っている空間をtask_struct->mm_struct->vm_area_structで管理して

    Yudoufu
    Yudoufu 2014/10/17
  • mod_perlハンドラを書く - とみぞーノート

    Maintainers Authors 説明※ この章ではmod_perlのコーディングの詳細、通常のPerlコーディングとの違いを扱います。その他のほとんどのPerlコーディングに関する情報はperlのmanページや書籍で取り扱われています。 前提※ 原文なし メソッドが有効な場所※ mod_perl 2.0では多くのモジュールに跨ってメソッドが存在します。これらのメソッドを使うためにメソッドを含むモジュールは最初にロードしておかないといけません。そうでないと、mod_perlは「メソッドを見つけられない」とエラーにします。どのモジュールが必要かを探すにはModPerl::MethodLookup モジュールが使えます。 Techniques※ メソッドハンドラ※ 関数ハンドラに加えてメソッドハンドラを使うことができます。メソッドハンドラは継承のメリットを生かしたコードを書きたい場合に便

  • FrontPage - Linuxカーネルメモ

    Linux Kernel(2.6)の実装に関するメモ書き 書き殴っているので書き方/内容にムラあり。 3.6系に関する記述は【3.6】と記載。 カーネル プロセス プロセスのBlockとWakeup プロセスの優先度 コンテキストスイッチ プリエンプション スケジューラ RunQueue WaitQueue WorkQueue 例外処理 割り込み処理 ページフォルト ページフォルト - 個々のハンドラ ソフト割り込み システムコール 排他制御関連 モジュール 64bit環境での32bitプロセスの動作 メモリ管理 アドレス空間 アドレス空間の管理 カーネル空間のメモリマップ 64bitでのアドレス空間 HighMemory kmalloc,vmalloc 物理ページ管理 スラブアロケータ Rmap proc/meminfo 空きページの確保 kswapd Swap Swap - Swap領

  • Subversion ブランチとタグ - とみぞーノート

    1.ブランチ/タグ 1-1 ブランチ/タグの設定 Subversionはブランチとタグは区別がなく単なるファイルの複製でしかない。どちらもsvn copyによりコピーすればよい(コピー先のディレクトリがブランチ名/タグ名と見なせる)。コピーするとファイルがAddされるので、最後に忘れずcommitをすること。 ブランチとタグを区別するためにコピー先をディレクトリで分けておくとよい。 以下の例ではtrunkに流のソースがあり、branches以下にブランチ、tags以下にタグを格納するものとする。 SampleProg/ プロジェクトTop +----trunk/ 流のソースを格納 +----tags/ タグを格納する為のディレクトリ +----branches/ ブランチを格納する為のディレクトリ TrunkからdevBranchブランチを作成する # cd (作業ディレクトリ) #

  • 1