Mercurial > hg > Papers > 2024 > matac-master
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} |