起動直後に使われる、いわゆるearly allocatorに変更が相次いでいるようなので、個人的な備忘録としてまとめてみた。
Linuxカーネルではメモリー確保にbuddyアロケータを使用している。しかしこれが利用できない起動直後には、段階に応じていくつかの異なる仕組みでメモリーを確保するようになっている。x86アーキテクチャでは、時間経過の順に次のようなものが使われる。
- extend_brk()
- reserve_early*()関数群
- bootmemアロケータ
- buddyアロケータ
カーネル2.6.34になって「CONFIG_NO_BOOTMEM」というオプションが用意された(LWNの記事「The NO_BOOTMEM patches」)。これを有効にすると、bootmemアロケータの代わりにreserve_early*()関数群が使われるようになり、bootmemアロケータが不要になる。デフォルトでCONFIG_NO_BOOTMEM=yとなっているので、カーネル2.6.34以降のx86環境では、(設定を変えない限り)bootmemアロケータは使用されない。
これでかなりシンプルになったが、reserve_early*()関数群はx86専用コードで、これを保守し続けるのは効率が悪い。代わりに汎用初期アロケータの「LMB(Logical Memory Block)アロケータ」 をx86でも使うようにしよう……というのが、最近の動き(LWNの記事「Moving x86 to LMB」)。カーネル2.6.35にこそ間に合わなかったものの、このまま大きな問題が出なければカーネル2.6.36でマージされるはずだ。もっともNO_BOOTMEMもなかなかバグが取れずに一悶着あったわけだから、どうなるかは分からない。
(追記)図の言葉の選択ミスを修正。「未使用」→「非使用」→「不使用」。
2 件のコメント:
「非使用」にピンと来ず(自分が使うなら「不使用」かな)、"非使用"でググってみました。
検索結果をパっと見るに技術関連の記述が多い印象ですが、技術用語でしょうかね。
もしかして訳語かな?ATOK2005(古い)デフォルトでは変換候補に出ないですね。
「非使用人」というと、「わたしが好きでご奉仕してるんだもん!」とか幼女が言ってる光景が浮かんできます(病気か)。
#文章内容と関係無くてすみません^^;
修正したときは「非使用」の方がしっくり来たんですよね。末尾に「状態」をくっつけて「使用状態」「使用状態に非ず」という感じで…
でも確かに日本語としては「不使用」が一般的ですよねぇ……指摘されてみると。「不使用状態」でも違和感ないですしね
「非」の方がカチッと意味をON/OFFできるような気がしたんだが、気のせいだったぜ!という感じですね。技術関連で多いのもそういう雰囲気があるせいかもしれません
いずれにしても再修正しておきます。どうもです
非使用人については「病院行け」としか言えません(笑)
コメントを投稿