パスワードを忘れた? アカウント作成
661882 journal

tarosukeの日記: 俺OS vi あるいはtalos(仮称

日記 by tarosuke
ちょっとリファクタリング
        こういうのは気づいた時にやっておかないと後で痛い目見るわけで
        キューやプールのマクロの引数を関数に準ずるようにしてみた。

        具体的にはポインタの参照レベルとでも言うのだろうか。マクロだ
        と引数をいきなり変更できるけど関数じゃできないとか、そういう
        こと。マクロだと型チェックはないし。

        難しい所や混乱しやすい所はなるべく圧縮してカプセル化するのが
        常套手段だからね。混乱しないと品質も上がるし。

        キューとプールにスピンロック処理を追加。カーネル内のキューや
        プールの操作など、スピンロックが必要に決まっているのだ。と、
        思ったけどスピンロックの場合とミューテックスの場合が混在する
        事に気付いたので元に戻す。

        つまり、カーネルの中核部でタスクやエリアやページを扱う時はス
        ピンロックだし、もうちょっと外側のネットワークとかでパケット
        バッファを扱ったりする時はミューテックスを使う。

        この辺の排他処理はは各タイプ毎のキュー/プール管理関数でする
        事にしよう。そのあたりならそう多くはないから書き忘れる事もな
        さそうだし。

またまた仮想メモリ
        キューやプールで排他処理をしてくれないことが決まったので、プ
        ールアクセス関数にざくざくと排他処理を加えていく。例えば...
        <<< PoolGet(pool, &area); >>>みたいな感じ。

        一見言語仕様の拡張のように見えるけど<<<も>>>もマクロ。多分
        この辺は好き嫌いがわかれる所だろうけど、いちいちATOMICとか
        UNATOMICとか記述するのに疲れた(前回はこれだった)のでこうし
        てある。about.txtのコーディングスタイルの所にばっちり書い
        ておいたから大丈夫だろう。

        これだけ仮想メモリばっかり続けるのにはわけがあって、仮想メモ
        リ関係はタスク回したりするより基本的な機能なので、これを形に
        しないことには進めないのだ。たとえばページフォルトのハンドラ
        はタスクディスパッチとは関係なく動くし。

MONAOSとか他の俺OSを横目で見てみる
        どうやらC++でカーネルを書くのが流行りらしい。が、俺としちゃ
        中核部分とかデバイスドライバをC++で書くのはちょっと遠慮した
        いな。

        言語仕様がシステムがすでに存在している事を前提にしているのが
        システム自体を組む時には恐く感じる。といったところ。私ゃC++
        はもっと足場が固まってるとこで使いたいな。

        ただし組み込みC++なら話は別。こっちは余計な事はしないことが
        わかってるからね。

さて、いい時間だし今日はここまで。
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

計算機科学者とは、壊れていないものを修理する人々のことである

読み込み中...