アプリケーション内メモリ管理のためのOS支援に関する研究

Operating Systems Support for Application-Level Memory Management

Author:

伊藤 純一郎

Abstract:

In this paper, we propose a new way for application-level memory management. In high-level programming language systems, such as object-oriented programming language systems, fine-grained dynamic memory allocation and garbage collection mechanism are usually used. This kind of memory management mechanism has been implemented inside the user's application. Therefore, it is a burden for the system programmers to implement such memory management mechanisms. Furthermore, there has been an unsolved problem that the garbage collector causes too much page-faults during its execution.

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.

Abstract in Japanese:

オブジェクト指向言語などの高級言語の処理系では、 アプリケーション内で多くの小さなメモリ領域が動的に確保され使用される。 また、これらの参照関係は複雑になるため、 一般にガベージコレクション(GC)によって不要な領域が自動的に再利用される。 このようなアプリケーション内のメモリ管理は、 従来アプリケーション内に置かれたランタイムルーチンに任されてきた。 このため、言語処理系を実装する際に メモリ管理ルーチンの実装がプログラマにとって負担となっている。 さらに、GCの際にはページフォルトが頻発するという問題があり、 この問題はこれまで解決が困難であった。

本研究ではこのような負担を軽減し、 GC中のページフォルトの問題を解決するため、 アプリケーション内部のメモリ管理をOSで支援することを提案する。

本論文では、OS支援を行う場合に メモリ管理の情報と機構がアプリケーション内とOS内に 分離されてしまう問題について考察し、 その解決のための管理情報の伝達方法について述べる。 次に、メモリ管理サービスの効率化のために GC中のページフォルト回数を減少させる手法について述べる。 この手法では、ガベージコレクタがページングのタイミングを得て 実メモリ上についてのみGCを行うことにより効率化を実現する。 また、この手法のシミュレーションを行い、OS支援による効率化の効果を示す。 さらに、オブジェクト指向OSであるApertos上で、上記の方針による設計を示す。

本論文での考察により、 OSで提供されるユーザアプリケーション内メモリ管理サービスの構成方法と、 それに基づくページフォルトの発生を避けたGCの方法が明かになった。 これらにより、今後の言語処理系およびユーザアプリケーションの 実装に要する労力を大幅に減らし、効率化を図ることができる。


back