comparison Paper/master_paper.tex @ 20:91b67726191c

...
author matac42 <matac@cr.ie.u-ryukyu.ac.jp>
date Thu, 11 Jan 2024 15:29:29 +0900
parents 88d73431204d
children dcb4bb1e6bee
comparison
equal deleted inserted replaced
19:88d73431204d 20:91b67726191c
76 \newpage 76 \newpage
77 77
78 %要旨 78 %要旨
79 \input{chapter/abstract.tex} 79 \input{chapter/abstract.tex}
80 80
81
82 %発表履歴
83 \input{chapter/history.tex}
84 \addcontentsline{toc}{chapter}{研究関連論文業績}
85
86 \mainmatter 81 \mainmatter
87 %目次 82 %目次
88 \tableofcontents 83 \tableofcontents
89 84
90 %図目次 85 %図目次
419 414
420 \section{メモリの管理手法} 415 \section{メモリの管理手法}
421 416
422 GCのアルゴリズムは大きく分けてMark \& Sweep GC,Reference counting GC, 417 GCのアルゴリズムは大きく分けてMark \& Sweep GC,Reference counting GC,
423 Copying GCの3つの種類が存在する. 418 Copying GCの3つの種類が存在する.
424 Mark \& Sweep GC 419 Mark \& Sweep GCはマークフェーズとスイープフェーズからなる。
425 Reference counting GC 420 マークフェーズはヒープ上でルートから参照することができるオブジェクト全てにマークをし,
421 その後、スイープフェーズでマークされていないオブジェクトを
422 使用されていないオブジェクトのリストであるフリーリストに接続することでGCを行う.
423 Reference counting GCはオブジェクトの被参照数を表すReference counterを用いるGCである.
424 新たに参照される度にReference counterをインクリメントし,
425 参照が外れる度にデクリメントする.
426 そのようにして,カウンターが0になった時点でフリーリストに接続することでGCを行う.
426 CopyingGCはメモリ上のヒープ領域をFrom領域とTo領域に分割し, 427 CopyingGCはメモリ上のヒープ領域をFrom領域とTo領域に分割し,
427 ルートから参照できるオブジェクトをFrom領域からTo領域にコピーすることで 428 ルートから参照できるオブジェクトをFrom領域からTo領域にコピーする.
428 ガベージコレクションを行う. 429 From領域を参照していたポインタはTo領域のオブジェクトを参照するように置き換える.
429 430 その後,From領域とTo領域を入れ替えることでGCを行う.
430 また,Rust言語のスマートポインタによるメモリ管理手法も存在する. 431
432 一般的にこれらのGC手法は複数を組み合わせて用いられる.
433 世代別GCではオブジェクトの生存期間によって適用するGCアルゴリズムを使い分ける.
434 アロケートされてすぐのオブジェクトを新世代オブジェクト,
435 任意の回数のGCを生き残ったオブジェクトを旧世代オブジェクトとし,
436 それぞれの特性に合ったGCアルゴリズムを適用する.
437 すぐに回収されることが多い新世代オブジェクトはCopying GCで網羅的にGCをし,
438 長く生き残る旧世代オブジェクトはMark \& Sweep GCで適宜回収するなどが例として挙げられる.
439 このように複数のGCアルゴリズムを組み合わせることで,
440 それぞれのアルゴリズムの利点を享受できる.
441
442 また,メモリ管理手法としてRust言語の所有権がある.
443 所有権ではメモリを所有する変数がスコープを抜ける時に,
444 同時にメモリも解放する.
445 そのためRustではGCの仕組みを必要とせず,
446 より高速にメモリの管理を行うことができる.
431 447
432 \section{GearsFileSystemのGC} 448 \section{GearsFileSystemのGC}
433 449
434 GearsFileSystemのGCはCopyingGCを基本的なアルゴリズムとする. 450 GearsFileSystemのGCはCopying GCを基本的なアルゴリズムとする.
435 451
436 GearsFileSystemにおけるデータは全てRedBlackTreeに格納する. 452 GearsFileSystemにおけるデータは全てRedBlackTreeに格納する.
437 また,ディスク上とメモリ上のデータ構造は同一である. 453 また,ディスク上とメモリ上のデータ構造は同一である.
438 よって,RedBlackTreeの単なるコピーによってGCを行うことによって, 454 よって,RedBlackTreeの単なるコピーによってGCを行うことによって,
439 データの透過性が確保され,単純なプログラムで実装することが可能と考える. 455 データの透過性が確保され,単純なプログラムで実装することが可能と考える.
569 \bibliography{reference} 585 \bibliography{reference}
570 \bibliographystyle{junsrt} 586 \bibliographystyle{junsrt}
571 587
572 588
573 %発表履歴 589 %発表履歴
574 %\addcontentsline{toc}{chapter}{発表履歴} 590 \input{chapter/history.tex}
575 %\input{chapter/history.tex}] 591 \addcontentsline{toc}{chapter}{研究関連論文業績}
576 592
577 %付録 593 %付録
578 \addcontentsline{toc}{chapter}{付録} 594 \addcontentsline{toc}{chapter}{付録}
579 \appendix 595 \appendix
580 \input{chapter/appendix.tex} 596 \input{chapter/appendix.tex}