パスワードを忘れた? アカウント作成
507790 journal

tarosukeの日記: [talos]実ページ管理

日記 by tarosuke
「降ってきた」のでめも。

その1

  1. 管理対象の実ページを全てカーネルプロセスのユーザ空間に割り当てる
  2. 割り当てたページをqueueに繋いでおく
  3. 使う時は単純にqueueから取り出して要求された仮想ページにエイリアスとして割り当てる
  4. 返却されたら単にqueueに繋ぐ

メリット

  1. 管理領域を別に必要としない(管理にqueueを使ってもペナルティがない)
  2. map等で割り当てた場合は単にqueueから外すだけでいいので管理が楽
  3. 楽に3GB使える

デメリット

  1. queueはpoolよりは遅い
  2. ユーザプロセスにページを割り当てる度にプロセスを切り替えなければならない(ia32のタスクにすれば多少は楽だろうが)
  3. 実メモリの1/1024がページディレクトリのために余計に必要(ユーザ空間でも可)

その2

  1. 管理にはpoolを使う
  2. 管理領域は管理対象とは別
  3. 連続ページは上位から順に
  4. poolのgrowは連続領域が設定されていない所まで
  5. 返却されたらpoolに格納

メリット

  1. poolはqueueよりは速い
  2. どのプロセスからのページ要求でもプロセスを切り替える必要がない

デメリット

  1. カーネル空間に実メモリの1/1024が管理領域として必要
  2. mapされると困る(マーク付けたりいろいろしなきゃならない)が、poolの代わりにqueueを使えばその辺は大丈夫。ただしpoolの代わりにqueueを使うと管理領域が倍必要になる
  3. 連続ページとして割り当て、解放するとそのページは連続ページとしては使えなくなる

...その2かなぁ...。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

「科学者は100%安全だと保証できないものは動かしてはならない」、科学者「えっ」、プログラマ「えっ」

読み込み中...