# LibOS
## 定義
LibOS(Library Operating System)とは、従来のモノリシックカーネルが提供するオペレーティングシステムサービス(メモリ管理、ネットワークスタック、ファイルシステムなど)を、アプリケーションと同じアドレス空間で動作するユーザー空間ライブラリとしてリンク・実行するアーキテクチャである。Linux Kernel Library(LKL)やMusl libcなどがその代表例であり、ハードウェア隔離やケイパビリティ機構と組み合わせることで、最小限の特権と高い移植性を持つ独立した隔離ドメインを構築できる。(Source: [[@2026__TACO__CheriMore: On-Demand Vertical Memory Expansion for Capability Serverless Runtime]] §1, §3.1)
## 未編纂の観察
- **LibOSのELF読み込みにおける直列I/Oのボトルネック**: LibOSバイナリ(数十MB規模)をユーザー空間で起動する際、小さなバッファを用いたループ読み込みとmemcpyを行うナイーブな実装では、大量のコンテキストスイッチが発生し初期化に数秒を要する。ファイルを直接mmapして`madvise(MADV_WILLNEED)`による非同期先読みを行い、シンボル探索をオフライン化することで、起動時間をミリ秒単位に短縮できる。(Source: [[@2026__TACO__CheriMore: On-Demand Vertical Memory Expansion for Capability Serverless Runtime]] §4)
- **フラットメモリモデルとアンカーによる外部メモリ登録**: LibOSのバディシステムアロケータは起動時に連続したフラットな物理・仮想メモリ空間を前提とすることが多い。実行時にメモリ不足が発生した際、バディシステムの低速パスに配置した「メモリアンカー」を通じてホストOSから追加メモリをmmapし、直後にバディシステムの空きリストへ再登録することで、透過的なメモリ拡張が可能になる。(Source: [[@2026__TACO__CheriMore: On-Demand Vertical Memory Expansion for Capability Serverless Runtime]] §3.2)
## 未解決の問い
- 複雑なマルチスレッドやプロセス間通信(IPC)を要求するサーバーレス関数において、LibOSの内部状態同期とケイパビリティ遷移のオーバーヘッドはどこまで許容できるか。
## 関連
- ソース: [[@2026__TACO__CheriMore: On-Demand Vertical Memory Expansion for Capability Serverless Runtime]]
- 概念: [[Capability-based Security]] / [[CHERI]] / [[Vertical Memory Expansion]] / [[信頼計算基盤(TCB)]] / [[最小権限設計]]
## 出典
- [[@2026__TACO__CheriMore: On-Demand Vertical Memory Expansion for Capability Serverless Runtime]]