tarosukeの日記: [talos]実ページ管理
日記 by
tarosuke
「降ってきた」のでめも。
その1
- 管理対象の実ページを全てカーネルプロセスのユーザ空間に割り当てる
- 割り当てたページをqueueに繋いでおく
- 使う時は単純にqueueから取り出して要求された仮想ページにエイリアスとして割り当てる
- 返却されたら単にqueueに繋ぐ
メリット
- 管理領域を別に必要としない(管理にqueueを使ってもペナルティがない)
- map等で割り当てた場合は単にqueueから外すだけでいいので管理が楽
- 楽に3GB使える
デメリット
- queueはpoolよりは遅い
- ユーザプロセスにページを割り当てる度にプロセスを切り替えなければならない(ia32のタスクにすれば多少は楽だろうが)
- 実メモリの1/1024がページディレクトリのために余計に必要(ユーザ空間でも可)
その2
- 管理にはpoolを使う
- 管理領域は管理対象とは別
- 連続ページは上位から順に
- poolのgrowは連続領域が設定されていない所まで
- 返却されたらpoolに格納
メリット
- poolはqueueよりは速い
- どのプロセスからのページ要求でもプロセスを切り替える必要がない
デメリット
- カーネル空間に実メモリの1/1024が管理領域として必要
- mapされると困る(マーク付けたりいろいろしなきゃならない)が、poolの代わりにqueueを使えばその辺は大丈夫。ただしpoolの代わりにqueueを使うと管理領域が倍必要になる
- 連続ページとして割り当て、解放するとそのページは連続ページとしては使えなくなる
...その2かなぁ...。
[talos]実ページ管理 More ログイン