[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[OSASK 1512] Re: micro kernel(Re: memory management).




Hidemi KAWAI さんへ


>  僕の作りたいOSASKは、確かに小さなカーネルで機能します。しかし
>、ファイルシステムやメモリ管理のためにわざわざ別タスクを用意して
>そこで処理しようとは思っていません。

マイクロカーネルの定義は、まぁ色々だと私は考えていますが、
マイクロカーネルのもつ抽象化やモジュール化といった思想については
それはそれ、いいものだと思っています。

ただ問題は、川合さんもおっしゃる通り、
「どのレベルまで」をやるかという程度が重要だということだと思います。

#現状では、そんな OS が窓しかないのは悲しいところですが……

>  なんていうか、僕の「マイクロカーネル」のイメージは、タスクの乱
>発であるように思われます。

別に違うタスクである必要性はなくて、ひとつひとつのモジュールが
弱連結(私が勝手に使ってる言葉。独立性が高いという意味)であれば
スマートなように今は考えています。

>これは、カーネルやDLLの乗り換えが容易になることを意味していて、
>バージョンアップや開発競争を促進する効果があると考えています。
>システムが向上すれば、アプリの開発もきっとやりやすくなることでしょう。

乗り換えることが可能になったり、無限の拡張性ってのは魅力でして
私も好きなのですけど、そんなときいつも悩むのは(アプリの)互換性や
サービス対象の見つけかたです。

例えば、「こんなサービスください」って投げると
「そんなサービスしますよ」って返ってくるものだと思ってるんですが、
その『こんな』や『そんな』ってどうやればいいんだろう。

#簡単なことを難しく悩んでるだけかもしれない >私

>  アプリが復元できない情報をドライバが保持すればいいだけです。た
>とえばビデオドライバーなら、VRAMのイメージを持っておくとか。

設定した画面モードとか、例えばウィンドウマネージャなら、
そのウィンドウを移動してる途中……とか、
(システムドライバ内で)検索(例)してる途中とか、
そういうのって、タスクディレクトリに入るのですよね。

各々のタスクに対して取れないですよね。

>  それは、DSを不確定にするな、と決め付ければそれで済むんじゃない
>んですか?

DS が不確定なケース。
・割り込みで飛んできた
・データセグメントか複数ある

後者はアプリの責任、前者は OS が設定。
っう、たしかに問題ない……。

>C言語もこれを認めればとりあえずマルチセグメントを使えるよう
>にはなります。

あんまり関係ないけど、High-C は使えますね。 >far
ただ、柔軟性はなかったように思いますが…… >High-C

>  問題はmallocです。mallocしたメモリをこのセグメント内に置くのは
>困難です。スタックの下界より上を使ってしまうと、スタックが追いつ
>いてmalloc領域に進入してくるかもしれませんし、

まとめると
・static 変数
・malloc (ヒープメモリ)
・自動変数

自動変数を ss で参照するようにすればいいのですが、
C のポインタに far はほとんどないですからね……。
(というか未対応というべきか)

ヒープメモリの確保を下の伸びてって、スタックは上に伸びていって……。
とすると、一番いいのは、

  上↑スタック
    静的変数
  下↓ヒープメモリ

で、上の方に余計にリニアアドレスを割り当てておく……って
ことになるんでしょうかね。

>適当に1MBほどのメモリを割りあえててその中に必要な分だけ
>ページを貼り付けるしかないのでしょう。

おそらく同じ結論ですね……。

>>>このスタートアップルーチンはCSの内容をリードしてDSにコピーします。
>  いや、メモリは無駄になりますよ。もちろん、仮想記憶のおかげでア
>クセスしない部分のメモリは使いませんが。

   上     下
CS =========
DS ---------*********

"===" を "---" にコピーしなくても、
同じ物理メモリを示すようにして、DS の方の "---" のページには
書き込み属性を付けなければ(ページテーブルに)可能は可能では?

#ただ、こんだけのためにそれだけするのも大袈裟ですが……

---
なべちゃん !Atmark! abk   ## This mail address is official. ##
 (web-site http://100.abk.nu/html/top.htm)