We thought that operating systems should provide support for application-level memory management, to reduce the cost of implementation of language systems, and to decrease page-faults caused during garbage collection.
In this paper, first we consider some problems in providing application-level memory management by the operating system. We separate the information for memory management inside the application and the mechanism inside the operating system. We solve this problem by providing a transmission scheme between application and memory-management service. Second, we show how to improve efficiency of application-level memory management with OS support. When an OS supports memory management inside the application, we can decrease the number of page-faults made by a garbage collector, by acquiring timing of paging from virtual memory mechanism and accessing in-core pages only. In this paper, we show the way to implement such a garbage collector, and the efficiency of our scheme by simulation. Furthermore, we present a design of this memory management mechanism for the Apertos Object-Oriented Operating System.
Through this paper, the following points have become clear: (1) how to construct application-level memory management service mechanism in the OS, (2) how to perform garbage collection without obstructing virtual memory facilities. Thus, one will be able to implement the language systems easier and increase efficiency based on Operating System supported application-level memory management.
本研究ではこのような負担を軽減し、 GC中のページフォルトの問題を解決するため、 アプリケーション内部のメモリ管理をOSで支援することを提案する。
本論文では、OS支援を行う場合に メモリ管理の情報と機構がアプリケーション内とOS内に 分離されてしまう問題について考察し、 その解決のための管理情報の伝達方法について述べる。 次に、メモリ管理サービスの効率化のために GC中のページフォルト回数を減少させる手法について述べる。 この手法では、ガベージコレクタがページングのタイミングを得て 実メモリ上についてのみGCを行うことにより効率化を実現する。 また、この手法のシミュレーションを行い、OS支援による効率化の効果を示す。 さらに、オブジェクト指向OSであるApertos上で、上記の方針による設計を示す。
本論文での考察により、 OSで提供されるユーザアプリケーション内メモリ管理サービスの構成方法と、 それに基づくページフォルトの発生を避けたGCの方法が明かになった。 これらにより、今後の言語処理系およびユーザアプリケーションの 実装に要する労力を大幅に減らし、効率化を図ることができる。