新Linuxカーネル解読室 - カーネルモジュール

今回は、カーネルモジュール機能を見て行きます。 Linuxカーネルは、機能の一部をカーネルモジュールとして生成し、必要に応じて組み込む方式を採用しています。これらをどのような仕掛けで実現しているか解説します。

新Linuxカーネル解読室 - パケット受信処理 ~Ethernetドライバ ポーリング処理編~

今回は、パケット受信処理 ~Ethernetドライバ 概要編~の3章「ポーリングハンドラ(NAPI)による受信処理」で解説したポーリングハンドラの処理を深堀します。

新Linuxカーネル解読室 - タスクスケジューラ (その1)

今回から数回に分けて、タスクスケジューラについて解説します。今回は、基本的な概念や全体像を中心としたお話です。

OS徒然草 (5)

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

新Linuxカーネル解読室 - パケット受信処理 ~Ethernetドライバ 概要編~

今回はデバイス(NIC)がパケットを受信し、パケットがIPレイヤーに渡るまでの過程を解説します。

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) で言及した講演リストです。