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

[OSASK 1655] Re: ponyets4, toledo4.



  こんばんは、川合です。


Koyanagi Masaaki さんは 2001/04/17 22:58:03 の「[OSASK 1653] Re:
 ponyets4, toledo4.」で書きました:

>>   実は、20bitメモリの使用量をもっと減せるんですが、やりすぎると
>> 再初期化(Ctrl+Alt+Insert)に支障が出てしましました。再初期化の
>> やり方を見直す必要があるかもしれません。そもそも、再初期化が必要
>> なのかという疑問もありますが(笑)。
>再初期化の方法のどの部分が問題なのでしょうか?
>そういえば初期化と最初期化の動作の違いも分かっていないので、そのあたり
>も含めて教えていただけるとうれしいです。

  まず、再初期化という処理がなぜ出てきたのかを説明したいと思いま
す。かなり初期の頃からたくさんベータテストをしていただいている小
柳さんには釈迦に説法ですが。

  再初期化は、OSASKのアプリの終了方法が存在せず、その上シングル
タスクだったころに導入された処理です。ベータテスターは複数のアプ
リケーションを用いてテストする必要がありましたが、アプリ1つにつ
いてCtrl+Alt+Delで再起動しなければならないというのは、面倒極まり
ないものでした。それで、5秒ほどで再起動が完了する「再初期化」と
いう処理を作りました。これは当時のベータテスターに歓迎されました
。

  再初期化ルーチンは、非常に単純な構造になっています。・・・それ
を分かっていただくために、OSASKの起動手順を途中まで説明させてく
ださい。

  OSASKの起動は、最初にboot.asmに書かれたルーチンが行います。こ
このコードはリアルモードで実行される部分で、そのため16bitコード
で書かれています。このルーチンはリアルメモリの空き領域をまとめ、
ページ単位(4KB単位)で切り分け、IA-32でのページングに必要なデー
ターをすべてそろえてしまいます。そして一気に32bitモードに切り換
えて、レジスタを32bitモード用に初期化し、32bitコードで書かれたin
it.askへ制御を渡します。

  init.askではシステム制御に必要なあらゆる初期化を行い、プロテク
トメモリを使用可能にし、20bitメモリ上に確保したいくつかのワーク
エリアを上位のメモリに転送します。

  再初期化ルーチンは、大変単純な構造になっています。リアルメモリ
の状態をboot.asmから出てきたときの状態に戻して、あとはinit.askの
入り口へジャンプしているだけです。

  問題は、ページング管理のためのメモリ領域を32bitメモリに転送し
てしまうと、再初期化ルーチンの大幅な拡張が必要になるということで
す。・・・そもそも、ページング管理のためのメモリ領域をごっそりと
他の場所へずらすだけでも、ちょっと苦労しました。CPUから見れば、
仮想メモリと物理メモリとの関係を繋ぐ重要なメモリ領域です。ここの
つじつまが狂うとすぐに暴走します。例外が起きても、例外ルーチンが
あるメモリへのアクセスすらままならず、デバッグが面倒でした。・・
・でも、移動させることには成功しました。

  成功してみると、今度は再初期化ができません。・・・これは当然の
ことで、init.askへ入った直後はリアルメモリ上にあるはずなのに、そ
れが32bitメモリにあるからです。ということは、これで支障が出ない
ようにもう一度リアルメモリ上にページングのためのデーターを再構築
してやるか、もしくは再初期化の方法を変更する必要があるでしょう。
また、ページング管理領域の他にセグメント管理領域も同じような問題
を抱えています。

  今のOSASKはマルチタスクができますし、ここのアプリケーションを
終了することも出来ます。この状況で、再初期化という処理がそもそも
必要なのかといわれると悩ましいです。再初期化ではなく、「全タスク
終了」くらいの意味の方がいいのかもしれません。全タスクを終了して
メモリ以外のハードウェアを初期化するくらいなら、難しくはないでし
ょう。

(タスク起動上限問題の原因)
>なるほど。ここまでたくさんあるとは思っていませんでした。
>確かにこれだけあると結構時間がかかりそうですね。

  はい、僕自身もこんなにたくさんあるとは思っていませんでした。一
つずつ解決していくつもりです。まあ、基本的にファイルシステムの開
発を優先しているので、すぐに出来るわけではないですが。


  それでは。

--
    川合 秀実(KAWAI Hidemi)
川合堂社長 / OSASK計画総指揮 / カーネル開発班
E-mail:kawai !Atmark! imasy.org
Homepage http://www.imasy.org/~kawai/