changeset 20:91b67726191c

...
author matac42 <matac@cr.ie.u-ryukyu.ac.jp>
date Thu, 11 Jan 2024 15:29:29 +0900
parents 88d73431204d
children dcb4bb1e6bee
files Paper/master_paper.pdf Paper/master_paper.tex
diffstat 2 files changed, 29 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
Binary file Paper/master_paper.pdf has changed
--- a/Paper/master_paper.tex	Tue Jan 09 18:03:19 2024 +0900
+++ b/Paper/master_paper.tex	Thu Jan 11 15:29:29 2024 +0900
@@ -78,11 +78,6 @@
 %要旨
 \input{chapter/abstract.tex}
 
-
-%発表履歴
-\input{chapter/history.tex}
-\addcontentsline{toc}{chapter}{研究関連論文業績}
-
 \mainmatter
 %目次
 \tableofcontents
@@ -421,17 +416,38 @@
 
 GCのアルゴリズムは大きく分けてMark \& Sweep GC,Reference counting GC,
 Copying GCの3つの種類が存在する.
-Mark \& Sweep GC
-Reference counting GC
+Mark \& Sweep GCはマークフェーズとスイープフェーズからなる。
+マークフェーズはヒープ上でルートから参照することができるオブジェクト全てにマークをし,
+その後、スイープフェーズでマークされていないオブジェクトを
+使用されていないオブジェクトのリストであるフリーリストに接続することでGCを行う.
+Reference counting GCはオブジェクトの被参照数を表すReference counterを用いるGCである.
+新たに参照される度にReference counterをインクリメントし,
+参照が外れる度にデクリメントする.
+そのようにして,カウンターが0になった時点でフリーリストに接続することでGCを行う.
 CopyingGCはメモリ上のヒープ領域をFrom領域とTo領域に分割し,
-ルートから参照できるオブジェクトをFrom領域からTo領域にコピーすることで
-ガベージコレクションを行う.
+ルートから参照できるオブジェクトをFrom領域からTo領域にコピーする.
+From領域を参照していたポインタはTo領域のオブジェクトを参照するように置き換える.
+その後,From領域とTo領域を入れ替えることでGCを行う.
 
-また,Rust言語のスマートポインタによるメモリ管理手法も存在する.
+一般的にこれらのGC手法は複数を組み合わせて用いられる.
+世代別GCではオブジェクトの生存期間によって適用するGCアルゴリズムを使い分ける.
+アロケートされてすぐのオブジェクトを新世代オブジェクト,
+任意の回数のGCを生き残ったオブジェクトを旧世代オブジェクトとし,
+それぞれの特性に合ったGCアルゴリズムを適用する.
+すぐに回収されることが多い新世代オブジェクトはCopying GCで網羅的にGCをし,
+長く生き残る旧世代オブジェクトはMark \& Sweep GCで適宜回収するなどが例として挙げられる.
+このように複数のGCアルゴリズムを組み合わせることで,
+それぞれのアルゴリズムの利点を享受できる.
+
+また,メモリ管理手法としてRust言語の所有権がある.
+所有権ではメモリを所有する変数がスコープを抜ける時に,
+同時にメモリも解放する.
+そのためRustではGCの仕組みを必要とせず,
+より高速にメモリの管理を行うことができる.
 
 \section{GearsFileSystemのGC}
 
-GearsFileSystemのGCはCopyingGCを基本的なアルゴリズムとする.
+GearsFileSystemのGCはCopying GCを基本的なアルゴリズムとする.
 
 GearsFileSystemにおけるデータは全てRedBlackTreeに格納する.
 また,ディスク上とメモリ上のデータ構造は同一である.
@@ -571,8 +587,8 @@
 
 
 %発表履歴
-%\addcontentsline{toc}{chapter}{発表履歴}
-%\input{chapter/history.tex}]
+\input{chapter/history.tex}
+\addcontentsline{toc}{chapter}{研究関連論文業績}
 
 %付録
 \addcontentsline{toc}{chapter}{付録}