Sehyup
Preview Image

CSロードマップ 第8回 — プロセスとスレッド:OSは実行単位をどう抽象化するか

はじめに:地図から本論へ 前回では3つのオペレーティングシステムの血統と骨格をざっと見ました。Linuxはモノリシック、Windows NTはハイブリッド、macOS XNUはMach + BSDの二重構造。これが地図だったとすれば、今回からは本論です。 ステージ2の核心的な問いをもう一度取り出します。 「2つのスレッドが同じ変数を使うと、なぜプログラムは時々だけ死ぬのか?」...

Preview Image

CSロードマップ 第7回 — OSアーキテクチャ入門:Unix、NT、XNUの分かれ道

はじめに:なぜOSから始めるのか ステージ1ではデータ構造とメモリを扱いました。配列と連結リスト、ハッシュテーブル、木とグラフ、そしてヒープまで — すべて「データをどう整理するか」の話でした。 ステージ2の問いは少し違います。 「2つのスレッドが同じ変数を使うと、なぜプログラムは時々だけ死ぬのか?」 この問いに答えるには、プログラムがどう実行され、誰がCPUを分け与え、...

Preview Image

CSロードマップ (番外編) — ヒープと優先度キュー:部分順序の経済学

序論 この文書は CSロードマップ シリーズの番外編(bonus)です。 第5回 グラフでDijkstraとAを扱いながら、一文を残した:「優先度キュー(二分ヒープ)を使えば$O((V+E) \log V)$」*。ところが、その「二分ヒープ」が何なのか、なぜ二分なのか、どのように$O(\log n)$を達成するのかは後回しにした。この番外編はその負債を返す。 第1段階(デー...

Preview Image

Flow Field 最適化 — 3,000から10,000エージェントへのスケーリング

はじめに 前回の記事では、Flow Fieldパスファインディングの概念と3段階パイプラインを解説した。Flow Fieldはエージェント数に関係なく \(O(V)\) で計算されるため、パスファインディング自体はボトルネックではない。 では、3,000エージェントでフレームレートが低下する原因は何か?そして10,000エージェントまでスケールアップするには何を変える必要があるのか? ...

Preview Image

Unity GC 完全攻略 — Boehm GC構造からZero-Allocationパターンまで

序論 前回のポストの最後でこう予告した: NativeContainerを使うべき本当の理由 — GCがゲームに与える影響 このシリーズで我々は「managedの世界を脱せよ」というメッセージを繰り返し目にしてきた。Job SystemはNativeContainerのみ許可し、Burstはmanagedタイプをコンパイルせず、SoAレイアウトはunmanagedメモリでのみ意...

Preview Image

NativeContainer 深掘り — コンテナエコシステムからカスタムコンテナ制作まで

序論 Job SystemポストでNativeArrayの内部構造を解剖した。C#配列とのメモリモデルの違い、Allocatorの種類、Safety Systemの基本動作まで扱った。 しかし実戦ではNativeArrayだけですべてを解決することはできない。動的サイズのリストが必要で、キーと値のペアで高速に検索する必要があり、複数のワーカースレッドが同時に結果をキューに入れなければなら...

Preview Image

Flow Field パスファインディング — 大規模群衆のための最適解

はじめに 3,000体のゾンビがプレイヤーに向かって押し寄せてくる場面を想像してほしい。各ゾンビに個別の経路を計算するとしたら? A*一回あたり数百〜数千ノードを探索し、それを3,000回繰り返さなければならない。フレームレートはあっという間に崩壊する。 Flow Field パスファインディングはこの問題に根本的に異なるアプローチで挑む。個々のエージェントに経路を与える代わりに、空間全...

Preview Image

AIエージェントハーネスエンジニアリング深層解剖 — オーケストレーション設計原理とC#再構築

はじめに 前回のポストでClaude Codeのアーキテクチャ設計原理を分析した。今回の記事ではさらに一段深く入り、ハーネスエンジニアリング(Harness Engineering) — すなわちAIエージェントのオーケストレーション層がどのような設計原理で構築されるかを解剖する。 「ハーネス」という用語はもともとテストハーネス(test harness)に由来し、実行対象をラップして入...