RISC-V
連載「RISC-V OSを作ろう」で作ってきたOS(Sophia OS)を、Linux KVM上のゲストOSとして動かしてみましょう!
「RISC-V OSを作ろう」の番外編スタートです! RISC-V のハイパーバイザー拡張機能 (Hypervisor Extension) を使って、実際に動作する小さなハイパーバイザーを実装し、動かしてみましょう。
これまでの連載では、ベアメタル上で直接RISC-V OSを動かす仕組みを解説してきました。今回は、RISC-V OSをモニタプログラムOpenSBIの上で動作させる方法を見ていきます。RISC-V OSはスーパーバイザーモードでの動作となります。
前回はRISC-V OSがマルコチアOSとして立ち上がるところを解説しました。 今回は、RISC-V OSがマルチコアを意識したタスクスケジューリングを行なう仕組みを見ていきます。
前回までは、シングルコア環境を前提にしたOS実装を見てきましたが、今回からRISC-V OSをマルチコア環境に対応させます。コアが複数になると、複数のコアが同時にひとつのデータ構造を操作しようとすることがあります。OSは複数コアから同時操作が行われても…
物理メモリをアプリケーション用 (ユーザモード用) とカーネル用 (マシンモード用) の2つに分割し、アプリケーションからはカーネル用のメモリ域を参照できないようにメモリ保護設定を行なってみましょう。
前回は、セマフォによる同期機構を実現してみました。 今回は、アプリケーションのコードをユーザモードで、OSコードをマシンモードで動作させてみましょう。
「RISC-V用の小さなOSを実装してみよう」の連載記事第6回目となります。 前回は、指定時間だけタスクをスケジューリング対象から外す「タスクの時限待ち機能」を実現してみました。 今回は、タスクを協調動作させるための仕組みとして、セマフォによる同期機…
「RISC-V用の小さなOSを実装してみよう」の連載記事第5回目となります。 前回は、タイムシェアリングスケジューリング機能を実装してみました。 今回は、指定時間だけタスクをスケジューリング対象から外す「タスクの時限待ち機能」を実現してみましょう。
「RISC-V用の小さなOSを実装してみよう」の連載記事 第4回目となります。 第3回では、割り込みハンドラを動作させるところまで実装してみました。 今回は、タイムシェアリングスケジューリング機能を実装してみましょう。
「RISC-V用の小さなOSを実装してみよう」の連載記事 第3回目となります。 第2回では、複数のタスクが切り替わりながら並列動作できる仕組みを作りました。 今回は割り込みハンドラを動作させるところまで実装してみましょう。
「RISC-V用の小さなOSを実装してみよう」の連載記事 第2回目となります。 第1回では、boot プログラムが動くところまできました。今回は、複数のタスクが切り替わりながら並列動作できる仕組みを作っていきます。
RISC-VはMIPSアーキテクチャの流れを汲むRISC CPUです。 Linux上で利用できるRISC-Vツール群も揃ってきたので、それらを使ってRISC-V用の小さなOSを実装してみようと思います。