ごみ集めにおける自動ルート保護と手動ルート保護の併用手法 (2019年度 修士論文)

氏名:半澤 順一

概要:

  ごみ集め(GC; Garbage Collection)におけるルート保護方式には,手動ルート保護と自動ルート保護が存在する.手動ルート保護を採用する場合は,処理系の開発者自身が処理系コードにルート保護用コードを挿入する必要があり,処理系コードが煩雑となるが,メモリリークは起きにくい.ただし,必要箇所にルート保護用コードを挿入し忘れると予測不可能なバグが処理系に生じるため,細心の注意を払う必要がある.一方,保守的GCに代表される自動ルート保護を採用する場合は,開発者が処理系コードにルート保護用コードを挿入する必要はなく,処理系コードがシンプルになるが,過剰なルートスキャンによってメモリリークを起こす恐れがある.従来の処理系開発では,どちらか一方のルート保護方式を選択しなければならない.しかし,両保護方式を併用できれば,各々の特長を活かした処理系開発や,1つの処理系の中でルート保護方式を適切に使い分けることができるようになる.例えば,開発初期はGCの確実な動作を実現するために自動ルート保護を採用し,後にGC性能を追求して手動ルート保護に移行したり,あるいは,外部コードのみ自動ルート保護とすることが考えられる.本研究では,関数単位でどちらの保護方式を用いるかを指定できるようにし,開発したC-to-Cトランスレータによって自動ルート保護で記述された関数のみにルート保護用コードを自動的に挿入するようにすることでルート保護方式の併用を実現した.本論文では,ルート保護方式を併用するための提案手法について述べ,本研究で開発したトランスレータの実装について説明する.加えて,本トランスレータを利用してルート保護用コードを自動的に挿入したSIODとGNU Common Lisp処理系でベンチマークを実行したときの実験結果を報告し,本トランスレータを利用したときのオーバーヘッドを考察する


[研究室内部向け情報]