動的に交換が可能なデバイスドライバ構築法に関する研究

Design and Implementation of Runtime-replaceable Device Drivers

Author:

伊藤 純一郎

Abstract:

The paper proposes a new way of implementing the core part of operating systems, particularly device drivers. Recent growth of mobile computers and wide-area network have realized the dynamic changes of the hardware interfaces and physical network devices, which have been assumed to be negligible except some special situations. Now, efforts should be made to support dynamic replacement and reconfiguration of the device drivers and network protocol handlers while the computers are being used by the users.

In re-designing the core part of operating systems to support dynamic replacement awareness, we have to make sure that the device drivers are executed safely. Also, we should provide appropriate programming model for dynamic replacement-aware device drivers, to help system programmers struggle against the increased difficulties.

This paper proposes the following two items, to solve the above problems:

Efficient design and implementation of the device drivers is vital for the system performance. This paper provides ways to optimize the execution of the device drivers, without letting the system programmers to know about the optimization.

The mechanism for implementing device drivers as user program, e.g., a task in Mach, have been discussed in the previous researches. However, these researches ignored the timing constraints that the device drivers have, and their implementation could not avoid the chance of system hang-up when the device drivers are removed. This research successfully avoids these vulnerabilities, and makes success to provide the most appropriate programming environment for device driver programmers. Based on these proposals, the author designs and implements the system service layers for device drivers, and the device drivers on the \Apertos{} operating system. The evaluation has shown that the execution safeness of the device drivers can be made possible with practical execution time.

Though the paper discussess mainly on device drivers, proposals are applicable to design and implementation of various part of the core part of operating systems.

Abstract in Japanese:

本論文では、オペレーティングシステムの基本部分、 特にデバイスドライバの新しい実装方法を提案する。 近年の携帯計算機と広域ネットワークの普及に伴い、 計算機の動作中にこれまでにない動的な変化、 すなわちハードウェアインタフェースの変化やネットワーク物理層の変化を 考慮せざるを得なくなった。 このため、 オペレーティングシステムの最も基本的な部分であるデバイスドライバや ネットワークプロトコルハンドラをも動的に交換・再設定可能にする必要がある。

ユーザアプリケーションやファイルシステム、ウィンドウシステムなどの システム上位にあるプログラムは、全てその下にある デバイスドライバなどのオペレーティングシステム基本部に 依存して実行を行っている。 このため、デバイスドライバを動的交換にする際には、 デバイスドライバの実行時安全性を保証しなければならない。 また、システムプログラマの負担を軽減するために、 プログラマに対してプログラミングが容易となるような プログラミングモデルを提供する必要がある。 これまでの研究例では、デバイスドライバをユーザプログラムと 同一のシステムサービス上で取り扱うことが提案されていた。 しかし、それらの実現方法ではデバイスドライバの実行時間制約は保持されず、 デバイスドライバの除去時などにシステム全体が停止する危険性があった。 本論文では以下の2つを提案することで、上記の問題点を解決する:

また、オペレーティングシステムの実行性能を損なわないような設計および実装を 行うことも重要である。 このため、デバイスドライバのためのシステムサービス層に最適化機構を設け、 デバイスドライバのプログラマに最適化を意識させることなく高速化を図った。

以上の提案に基づき、\Apertos{}オペレーティングシステム上で デバイスドライバのためのシステムサービス層とデバイスドライバ群を設計・実装した。 本研究の実装は、過去の研究例で実現し得なかったデバイスドライバの 実行安全性を確保しており、またその実装により 効率的な実行を実現していることが示された。

本論文では議論を具体的なものとするため デバイスドライバに関する問題について述べるが、 本論文の主張はオペレーティングシステムの核となるさまざまな部分の 設計・実装に適用可能である。


back