OS

OS徒然草 (5)

今回は、前回の続きでマルチプロセスにまつわるお話です。

OS徒然草 (4)

今回はCPUの効率的な活用を目指す「マルチプロセス」や「スケジューリング」にまつわるお話です。

RISC-V OSを作ろう (11) ~ SBI対応

これまでの連載では、ベアメタル上で直接RISC-V OSを動かす仕組みを解説してきました。今回は、RISC-V OSをモニタプログラムOpenSBIの上で動作させる方法を見ていきます。RISC-V OSはスーパーバイザーモードでの動作となります。

OS徒然草 (3)

今回は仮想空間を巡るお話です。仮想空間というものは、OSを語る上で外せないものですので、本稿が仮想空間を理解するための助けになれば幸いです。

RISC-V OSを作ろう (10) ~ マルチコア (タスクスケジューリング)

前回はRISC-V OSがマルコチアOSとして立ち上がるところを解説しました。 今回は、RISC-V OSがマルチコアを意識したタスクスケジューリングを行なう仕組みを見ていきます。

RISC-V OSを作ろう (9) ~ マルチコア (OSの起動)

前回までは、シングルコア環境を前提にしたOS実装を見てきましたが、今回からRISC-V OSをマルチコア環境に対応させます。コアが複数になると、複数のコアが同時にひとつのデータ構造を操作しようとすることがあります。OSは複数コアから同時操作が行われても…

OS徒然草 (2)

OSの開発をしていると、必然的にシステムコールを使用したプログラムを作成することになります。誰しも始めたての頃は、fork(2)システムコールを不思議に思うのではないかと思います。 forkの復帰値が親と子で違っていて、それで自分が親か子かを区別できる…

OS徒然草 (1)

OSがどんなものであるかを理解するための背景となる知識や勉強の参考になる情報をお話ししていこうと思っています。調べものというより雑談に近いものですので、気楽に読んで頂ければ良いかと思います。その上で、何らかの参考になれば幸いです。

RISC-V OSを作ろう (8) ~ 簡易メモリ保護

物理メモリをアプリケーション用 (ユーザモード用) とカーネル用 (マシンモード用) の2つに分割し、アプリケーションからはカーネル用のメモリ域を参照できないようにメモリ保護設定を行なってみましょう。

RISC-V OSを作ろう (7) ~ マシンモードとユーザモード

前回は、セマフォによる同期機構を実現してみました。 今回は、アプリケーションのコードをユーザモードで、OSコードをマシンモードで動作させてみましょう。

ARMv8-A AArch64 ベタメタルプログラミング ブート編

ARMv8-A アーキテクチャでの 64bit 環境 (AArch64) でのブートプログラム作成についてまとめます。 今回のブート処理では AArch64 ステートで実行し例外レベルを EL1 にして特権プログラムの実行の準備までを行います。

詳説 eBPF 概論編

近年注目されているeBPFについて、概論編と実装編に分けて解説します。 概論編となる本稿では、eBPFとは何か、eBPFで実現できる事、eBPFの仕組み、eBPFの技術要素 (BCC、BCC-Tools、CO-RE) についてまとめました。

RISC-V OSを作ろう (6) ~ セマフォ

「RISC-V用の小さなOSを実装してみよう」の連載記事第6回目となります。 前回は、指定時間だけタスクをスケジューリング対象から外す「タスクの時限待ち機能」を実現してみました。 今回は、タスクを協調動作させるための仕組みとして、セマフォによる同期機…

RISC-V OSを作ろう (5) ~ 時限待ち

「RISC-V用の小さなOSを実装してみよう」の連載記事第5回目となります。 前回は、タイムシェアリングスケジューリング機能を実装してみました。 今回は、指定時間だけタスクをスケジューリング対象から外す「タスクの時限待ち機能」を実現してみましょう。

RISC-V OSを作ろう (4) ~ タイムシェアリングスケジューリング

「RISC-V用の小さなOSを実装してみよう」の連載記事 第4回目となります。 第3回では、割り込みハンドラを動作させるところまで実装してみました。 今回は、タイムシェアリングスケジューリング機能を実装してみましょう。

RISC-V OSを作ろう (3) ~ 割り込み

「RISC-V用の小さなOSを実装してみよう」の連載記事 第3回目となります。 第2回では、複数のタスクが切り替わりながら並列動作できる仕組みを作りました。 今回は割り込みハンドラを動作させるところまで実装してみましょう。

RISC-V OSを作ろう (2) ~ タスク切り替え

「RISC-V用の小さなOSを実装してみよう」の連載記事 第2回目となります。 第1回では、boot プログラムが動くところまできました。今回は、複数のタスクが切り替わりながら並列動作できる仕組みを作っていきます。

RISC-V OSを作ろう (1) ~ブート処理

RISC-VはMIPSアーキテクチャの流れを汲むRISC CPUです。 Linux上で利用できるRISC-Vツール群も揃ってきたので、それらを使ってRISC-V用の小さなOSを実装してみようと思います。