[Parent Directory]

アプリケーションを流用するカーネル機能拡張法


概要

本研究ではアプリケーションプログラムの機能を 容易にカーネル内で提供する機構を設計し実現した。

システムコールは汎用性と堅牢性を重視しているため、 一般的に時間のかかる処理である。 WebサーバなどのI/O操作を頻繁に行うアプリケーションプログラムは、 システムコールがオーバヘッドとなり十分な性能を発揮できない。

そこでアプリケーションプログラムの行うサービスの一部を カーネルモジュールで提供する手法がある。 カーネル内であればシステムコールを通さずとも計算機資源を直接操作することができ、 システムコールよりも低オーバヘッドなI/O処理が可能になる。

しかし、既存のアプリケーションプログラムが行うサービスを カーネルモジュールで提供する場合、 アプリケーションプログラムのソースをそのまま カーネルモジュールに流用することは難しく、 開発の効率が悪い。 これは、カーネルモジュールとアプリケーションプログラムとでは、 プログラムのインタフェイスやセマンティクスが異なるためである。

そこで本研究では、アプリケーションプログラムが行うサービスを カーネルで提供することを目的として、 アプリケーションプログラムをカーネルモードで実行する機構を実現する。 この機構により、 既存のアプリケーションプログラムをソースの変更無しに、 カーネルの一部としてそのまま実行できる。 また、カーネルモードで動作するアプリケーションプログラムは、 カーネルモジュールと同様に計算機資源を直接操作することができる。 この操作をアプリケーションプログラムの一部に加えることで、 高速化やカーネル特有の機能を使えるように改良することが可能である。

本論文では、 アプリケーションプログラムの計算機資源利用オーバヘッドの問題と、 カーネルモジュールの開発効率の問題について議論し、 その解決案として、 アプリケーションプログラムをカーネルモードで実行する機構を提案した。 本機構を UNIX の一種である NetBSD 上に実装した。 そして計算機資源がどの程度効率的に扱えるようになるか測定を行い、 その有効性を確認した。


本文[pdf(304K)][ps(728K)][ps.gz(208K)]
御意見、御感想はe-mailにてお願い致します。
satou-t@spa.is.uec.ac.jp