久々に飲み過ぎた。今日は酒がまずい。いつもこのくらまずければ楽々節酒な
のだけど...。はしごした先では本当久々の酒友達に会えて楽しかった。しかし
はしごするともう体がだめだな〜。しばらく反省しよう。
スケジューラアクティベーション、ちょっと構造がつかめてきた。基本的には シグナル配送のようなものだ。そうなると、ユーザ層だけのスレッドパッケー ジの実装で、ブロックのシステムコールを、ノンブロックにして、シグナルで スケジューリンングをするようなことの一般化の面があるか。Machではシグナ ルはタスク例外ポートを使ってUXサーバが実装する。スケジューラアクティベー ションもこの枠組みで構成できないだろうか?効率は悪いけど。現実にはここで 実装したような一般的なアップコールの仕組みを特定の状況のために作ってお いた方が、いいとは思う。
スケジューラアクティベーション、ちょっと構造がつかめてきた。基本的には シグナル配送のようなものだ。そうなると、ユーザ層だけのスレッドパッケー ジの実装で、ブロックのシステムコールを、ノンブロックにして、シグナルで スケジューリンングをするようなことの一般化の面があるか。Machではシグナ ルはタスク例外ポートを使ってUXサーバが実装する。スケジューラアクティベー ションもこの枠組みで構成できないだろうか?効率は悪いけど。現実にはここで 実装したような一般的なアップコールの仕組みを特定の状況のために作ってお いた方が、いいとは思う。
Adding Scheduler Activations to Mach 3.0 Paul Barton-Davis, Dylan McNamee, Raj Vaswani, and Edward D.Lazowska University of Washington Technical Report 92-08-03 Reversed March 1993続き。
2. スケジューラアクティベーションのためのカーネル支援 この章ではスケジューラアクティベーションをサポートするためにMach 3.0 カー ネル*(MK78)に加えた変更について説明する。* UXサーバへの変更は必要ないカー ネルからの観点では、スケジューラアクティベーションは伝統的なMachのカー ネルスレッドであり、タスクに起因する(あるいは影響する)、イベントをユー ザ層に反映するという追加的な特性をもつ。 2.1 初期化 変更されたMachカーネルは、伝統的なMachのタスク(これらはMachのカーネルス レッドを要求する)と、スケジューラアクティベーションを使うタスクの両方を サポートする。タスクは次に示す新しいシステムコールを使って、スケジュー ラアクティベーションを使用することをカーネルに通知する: + task_register_upcalls (task, upcalls). ユーザ空間の入口の組を登録す る: ユーザ層へのアップコールルーチンのアドレスである。 + task_recycle_stacks (task, count, stacks). カーネルに'count'個のユー ザ空間のメモリを提供する。カーネルがアップコールをする時、これらの領 域の一つがスケジューラアクティベーションのアップコールのユーザ層の実 行スタックとして使われる。特定のスタック上の情報が、タスクにとって有 用でない時、カーネルは検知できないので、タスクがこれらのスタックを管 理する必要がある。タスクはアップコール中のカーネルの使用のために、ス タックは常に使用可能であることを保証しないといけない(4.4.2章を見よ) + task_use_scheduler_activations (task, TRUE). カーネルのタスクの構造 体のスケジューラアクティベーションを使うビットを設定。タスクがこ の'using_sa'ビットを設定したなら、そのタスクで作られる全てのカーネル スレッドは、(これに関連する)ビットを設定する。この'is_sa'ビットはカー ネルスレッドは事実上、スケジューラアクティベーションだということを意 味する。カーネルはこのビットを以下に述べる特定のイベントを、どう処理 するかの決定に使う。 この呼び出しの副作用として、呼び出したカーネルスレッド(タスクの中の たった一つだけ実在するスレッドを想定する)は、スケジューラアクティベー ションに変化する。この呼出しから戻ってきた時には、タスクはスケジュー ラアクティベーションの意味論での、その通常な実行を続けるだろう。 タスクの状態を管理するのに、柔軟性のために複数のシステムコールを使うこ とにした。この方法は初期化時間に多少のオーバーヘッドがあるが、最終的に タスクの状態をよりよく管理できる(例えば、いつでも、登録されたアップコー ルハンドラを変更できるというような)ということに対して許せる代価であると みなした。
