[b-free: 226] Re^3:About memory manage

真鍋 裕一 (NBG02534@niftyserve.or.jp)
Sun, 09 Apr 1995 21:05:00 +0900

B-Freeミーティング御出席の皆様、御苦労さまです。
カーネルグループの方で内容が煮詰まって来ていると思いますが、先日の内容へ
の補足を少し。

> ディスク上のクラスタを記録するテーブルを作成するということは、
> メモリマネージャはコード部でメモリフォールトした場合、ファイル
> マネージャを通さずに、デバイスドライバを通してデバイスにアクセ
> スするということでしょうか?
 その通りです。プロセスの生成段階でファイルマネージャからクラスタ番号を
受け取っておけば、ページフォルト発生時の処理が、データ領域のページインと
おなじ処理となって、処理が単純に出来るだろうとの考えからです。

> このようにした場合、コード部分の内容はディスク上でもクラスタ単
> 位で記録する必要があります。BTRON1のファイルシステムだとブロッ
> クサイズ以下の断片ブロックというのがありますから、クラスタ単位
> にコード部を記憶するのはなかなか難しいような気がします(リンカが
> 実行ファイルを作るときに意識しなければいけない)。BTRON1 ファイ
> ルシステム以外のファイルシステムも記録単位としてページサイズを
> 基にするとは期待できるとは限らないのではないでしょうか?
>
> コード部の情報については、実行ファイルを示す情報と実行ファイル
> 中のオフセットの記録だけでいいと思いますが、どうでしょうか?
 この部分については、どうするべきか考えましたが、私個人としては何はとも
あれ、ページフォルトからの回復処理が何にも増して重要であり、それが速やか
に解消出来る仕掛けを用意する必要があるとおもって、アプリケーションプログ
ラムのコード部については断片ブロックを認めないのも仕方無いと判断しました

> 領域を確保するのがページのページアウト処理を行うときの方がいい
> という理由は何でしょうか?
 ここで言う領域確保とは、未使用のスワップ領域からページアウト用のクラス
タを切り出す処理を指しています。ページアウト処理を行う段階になってから領
域を確保した方が良いとしたのは、
・スタック領域の様に事前に必要サイズを正確に把握していない可能性がある。

・フリーメモリーが余っている段階ではページアウトする領域は必要無い。
・使用出来る実メモリが16MBあったとして、各プロセスが要求するメモリの
合計が18MBだとすると、必要なスワップ領域は2MB(+α)で済むはずで
ある。
と考えたからです。
 事前に領域を確保すると、各プロセスから実際に消費する以上の領域の使用が
宣言されて、スワップ領域が余っているにも拘らず、スワップ領域が不足してい
ると判断され、それ以降はプロセスが起動できなくなるのではと思うのですが、
どうでしょうか。

真鍋 裕一(NBG02534@niftyserve.or.jp)