RISC-V OSを作ろう (12) ~ KVM上で動かそう

連載「RISC-V OSを作ろう」で作ってきたOS(Sophia OS)を、Linux KVM上のゲストOSとして動かしてみましょう!

ローカルLLMとRAGで自分の外部記憶を強化しよう (2)

NVLINK Bridgeで接続した2台のRTX6000 GPUをFalcon 4205 を介して2台の1Uサーバから接続して LLM + RAG を動作させる実験です。

OS徒然草 (4)

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

RISC-V ハイパーバイザーを作ろう (1) ~ 概要編

「RISC-V OSを作ろう」の番外編スタートです! RISC-V のハイパーバイザー拡張機能 (Hypervisor Extension) を使って、実際に動作する小さなハイパーバイザーを実装し、動かしてみましょう。

新Linuxカーネル解読室 - netfilterにおける排他制御

本稿では、Linuxの排他制御の仕組みである読み書きスピンロック(RWロック)とRCUについて、netfilterにおける排他制御を具体例として、実際にLinuxでどのように使われているのかを解説します。

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の復帰値が親と子で違っていて、それで自分が親か子かを区別できる…

新Linuxカーネル解読室 - プロセスディスパッチャ(後編)

本稿では、タスクの切り替えに伴うレジスタの切り替え処理の内、前編 (7月11日公開: https://valinux.hatenablog.com/entry/20240711) では解説しきれなかった部分について解説します。

新Linuxカーネル解読室 - ソケットインターフェース (ソケット生成編)

前回の記事では、データ構造とともにソケット操作処理の流れを見てきました。 本稿では、socket(2)システムコールによってこれらの各種データ構造がどのように生成され、関連づけられていくのかを見ていきたいと思います。

OS徒然草 (1)

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

ローカルLLMとRAGで自分の外部記憶を強化しよう

ローカルLLMとRAGを用いて自分の外部記憶にいろいろと質問できるようにする方法を入門的に紹介します。

新Linuxカーネル解読室 - プロセスディスパッチャ(前編)

本稿では、旧版1章で解説されていた「プロセススケジューリング」の内、プロセスディスパッチャ(タスクの切り替え処理)について、カーネルv6.8/x86_64のコードをベースに解説します。

「ディスアグリゲーテッドコンピューティング」とは何か? (5)

「ディスアグリゲーテッドコンピューティング」関連のYouTube講演を時系列に紹介するgithubプロジェクトを作りました。 本稿では、RAG技術で上述のCDI Infoプロジェクトの情報をローカルLLMの知識として与え、「ディスアグリゲーテッドコンピューティング」…

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

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

新Linuxカーネル解読室 - ソケットインターフェース (データ構造と概要編)

カーネルv6.8のコードをベースに、プロトコルごとに異なる処理をソケットがどのように抽象化しているのか、またソケットがなぜファイルとして操作できるのかについて、データ構造を中心に解説します。

新Linuxカーネル解読室 - ソフト割り込み処理

「新Linuxカーネル解読室」プロジェクトの本稿では、ハード割り込みが発生してからソフト割り込み処理が実行されるまでの流れを、実行コンテキストの切り替わりを追いかけながらカーネルv6.8のコードをベースに紹介します。

Linuxカーネル解読室 再び

VA Linuxの若手技術者が中心となり、最新のLinuxカーネルコード全体を読み解くプロジェクトが進行中です。解析したコードのうち興味を惹かれたもの、重要そうなものを中心にブログ記事にまとめていきますのでどうぞお楽しみに!

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

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

Cilium入門 (Monitoring & Metrics編)

Kubernetes の CNI (Container Network Interface) プラグインの一つである Cilium には、Security や Observability など幅広い機能があることがわかったので、実際に Cilium の Monitoring Metrics の機能を試してみました。

「ディスアグリゲーテッドコンピューティング」とは何か? (4)

「ディスアグリゲーテッドコンピューティング」=「一次記憶の共有」という側面に注目し、登場しつつあるテクノロジや議論されているそのユースケースを調査するために、YouTube で公開されている講演 174 本を視聴しました。 その過程で、略語が多く登場す…

「ディスアグリゲーテッドコンピューティング」とは何か? (4) 略語リスト

「ディスアグリゲーテッドコンピューティング」とは何か? (4) で言及した略語リストです。

「ディスアグリゲーテッドコンピューティング」とは何か? (4) 講演リスト

「ディスアグリゲーテッドコンピューティング」とは何か? (4) で言及した講演リストです。

Isaac Gym入門(活用編)

前回の「環境構築編」では、深層強化学習と Isaac Gym の解説および環境構築を行いました。 本稿の「活用編」では、Isaac Gym での学習の実行方法について必要な知識等を解説していきます。

Isaac Gym入門(環境構築編)

Isaac Gym と呼ばれる深層強化学習向けの物理シミュレーション環境について解説します。 Isaac Gym はまだ開発段階で使用ユーザーもあまりおらず、本技術に関する記事が非常に少ないので技術記事を執筆してみる事にしました。 今回は、深層強化学習と Isaac …

Wasm入門(仕様編)

WebAssembly (以下、Wasm) について、最近 Kubernetes でコンテナの代わりに Wasm アプリケーション を扱えるような記述を見かけるに至り、にわかに関心が出てきたので Wasm の仕様について調べてみることにしました。

InferでLinuxカーネルのメモリ関連エラーを検出してみる

静的コード解析ツールの1つである Inferを使ってLinuxカーネルのソースコードを解析し、メモリ関連の不具合を検出してみます。Infer のビルドから、解析の実行と検証、解析結果の精査についてまとめました。

「ディスアグリゲーテッドコンピューティング」とは何か? (リンク集)

前回記事 「ディスアグリゲーデッドコンピューティング」とは何か? (3) の執筆時点で参考にしたYouTubeコンテンツの一覧をまとめました。