タグ

ブックマーク / myokota.hatenablog.jp (4)

  • Kernel完了 - myokotaの日記

    Kernelディレクトリ以下の移植が一通り完了しました。 変更を加えた箇所を清書してないのでソースが汚いですが、区切りがいいのでまとめたいと思います(リビジョン7)。 前回から今回の更新にかけて行った事は以下になります: これまで一部無効にしていた箇所の有効化 Process.cpp Sheduler.cpp ihandlers.cpp PageManager.cpp syscalls.cppの移植 関連して include/sys/types.h のシステムコールマクロも アボート例外の移植 astart.S(旧ihandler.asm) Loader.cppの追加 以上から、前回から以下の事柄が可能になりました: Loaderからプロセスを起動できるようになった プロセス空間が切り替わるようになった スレッドが規定のポリシーでスケジューリングされるようになった デマンドページングが可能

    Kernel完了 - myokotaの日記
  • ページング開始 - myokotaの日記

    startKernel関数のページング開始処理(PageManager::setup)まで移植が進みました(リビジョン5)。 新たに移植したモジュールは、 IDManager PageManager Segment Messenger です。 Paging開始処理に重点をおいたために、一部不完全で以下のようになっています。 Segments.cpp Scheduler::FindProcess()呼び出し部分を無効 PageManager.cpp DMA/VRAM領域のマッピングを無効 Process::getStackBottom()呼び出し部分を無効 ThreadOperation::Kill()呼び出し部分を無効 Messenger.cpp Scheduler::send/EventComes()呼び出し部分を無効 Kernel.cpp systemcall_mutex_create

    ページング開始 - myokotaの日記
    shigiryou
    shigiryou 2014/07/10
  • Monarm - myokotaの日記

    MonaOSをARM上に移植してみます。 同OSはx86べったりだと思いますが、なるべくオリジナルの設計を崩さないように考慮したいと思います。 環境等はARMの擬似環境構築時のものを使用します。 MonaOSは 0.3.0alpha9 です。 とりあえずKernel開始(cstart関数)に到達するところまで移植できたので恥を惜しまず公開します。 追記/お詫び 記載していたsvnリポジトリは、登録ユーザ以外、閲覧することができませんでした。 以下に別のリポジトリを設けましたのでこちらを参照してください。 http://www.assembla.com/spaces/monarm/trac_subversion_tool メモリマップ 移植前にまず、メモリマップを考えました。オリジナルはこちらのようになっています。 とりあえず以下のようにしました。 最終的なリセットベクタは0からに配置予定で

    Monarm - myokotaの日記
    shigiryou
    shigiryou 2014/07/10
  • 割り込み処理〜コンテキストスイッチ - myokotaの日記

    かなり簡単な方法ですが、コンテキストスイッチに成功しました。(リビジョン6) 深い部分に手を入れたため、知識不足による大いなる勘違いや、確認方法の間違いなどで根的におかしいかもしれません…。 今回移植したモジュールは、 KObject Process Scheduler です。これらのモジュールに依存するコードは無効にしていましたが、今回の移植によって可能な限り有効にしました。 但し、必要最小限のコンテキスト切替の確認に重点を置いたため、今回も一部不完全で以下のようになっています。 ThreadOperation::switchThread関数(Process.cpp) プロセスコンテナの変更の判断、及びKernel/Userプロセスの判断は無効。 常にKernelスレッド同士でコンテキストスイッチ(arch_switch_thread1)。 Scheduler::SetNextThre

    割り込み処理〜コンテキストスイッチ - myokotaの日記
  • 1