[b-free: 35] Re: re:メモリマネージャにつ

内藤 隆一 (GGC00661@niftyserve.or.jp)
Wed, 30 Nov 1994 22:27:00 +0900

隆一です。

B-Free メイリングリストの皆さん、こんにちは。

磯山さん in (b-free:33)
>  ここのユーザプログラムとは、メモリフォールトが発生した時に呼び出されて、
>  5)の情報をもとに4)の処理を行なうプログラム。と考えていいんでしょうか。
>  (ページイン/アウトの処理後、5)の情報の更新もしますね)

そうです。

磯山さん in (b-free:33)
>  であれば、
>  3)は、
>  3.1)メモリフォールト発生時に周辺殻プログラム(ユーザープログラム)を呼び出

>  3.2)3.1)によって呼び出され、実際のページイン/アウトの処理を行なう(ユーザ

>    プログラム)
>  の二つに分けた方がわかりやすいのではないかと思います。
>
>  1)〜3.1)が中心核。3.2)〜6)が周辺殻になりますね。
>  (renum して、1)〜7)にしてもいいけど)

そうですね。3) については、中心核に非同期にメッセージハンドラを呼び出
すという機構を作りたいと思っています (どのみち、BTRON1 のメッセージハ
ンドラをインプリメントするために必要ですから)。

ということで、メモリ管理については、中心核とメモリマネージャの区別とし
て次のようにしたいと思います。

1) MMU 関係のハードウェアの管理
タスクのコンテキスト情報に含まれるマッピングテーブルの内容管理。
2) 物理メモリの管理
ページ単位でのメモリ取得、解放の管理。
3) メモリフォールト発生時に(非同期に)周辺核プログラムを呼び出す。

ここまでが中心核の処理。

4) ページイン処理等を行う。
5) ページアウトの処理
必要のないページを二次記憶装置などに追い出す処理。
6) 各プロセスの仮想ページの管理
仮想メモリ中のページのどれが物理メモリとマッピングしているか、ま
たマッピングしていない仮想メモリページについては、二次記憶装置の
アドレスを管理する。
7) ユーザプログラムおよびマネージャ等のメモリ取得要求の処理

ここまでが周辺核の処理。

磯山さん in (b-free:34)
>>>  ※そもそも、ここを「ユーザプログラム」とするのは何故なんでしょうか。
>
>ここでのユーザープログラムとは、カーネル外で動くプログラム一般の名称
>として使っているわけですね。つまりこの場合、周辺殻のプログラムと。

そういうことです。つまるところ、ユーザモードで動くプログラムということ
ですね。あまり、適当な言い方ではなかったかもしれません。
周辺核がユーザプログラムで走るべき理由というのは、(b-free ML: 31) で述
べたように安全性のためです。
また、周辺核(たとえば、ファイルマネージャ)を更新するときに、古いファイ
ルマネージャを走らせておき、新しいファイルマネージャをその上で(ユーザ
プログラム)としてデバッグするようなことができるので、デバッグがしやす
いという利点もあります。もっとも、これはデバッガ等が動くまでは成立ちま
せんが。

PS.
ところで、磯山さんのメイルの中で 周辺「殻」とあるのは、わざと
でしょうか? それとも単なる間違い?

-- 
内藤隆一 (ggc00661@niftyserve.or.jp)