changeset 53:c7ed59e807a5

...
author matac42 <matac@cr.ie.u-ryukyu.ac.jp>
date Wed, 31 Jan 2024 18:42:29 +0900
parents 886c8902f16e
children ab4ebfc6a1db
files Paper/fig/tree_condition.drawio mindmaps/gears_fs_db.mm
diffstat 2 files changed, 311 insertions(+), 36 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/fig/tree_condition.drawio	Wed Jan 31 18:42:29 2024 +0900
@@ -0,0 +1,170 @@
+<mxfile host="65bd71144e">
+    <diagram id="LJB0nR6lTuEvbrUSIzbY" name="Page-1">
+        <mxGraphModel dx="301" dy="752" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
+            <root>
+                <mxCell id="0"/>
+                <mxCell id="1" parent="0"/>
+                <mxCell id="7" style="edgeStyle=none;html=1;endArrow=none;endFill=0;" edge="1" parent="1" source="2">
+                    <mxGeometry relative="1" as="geometry">
+                        <mxPoint x="350" y="400" as="targetPoint"/>
+                    </mxGeometry>
+                </mxCell>
+                <mxCell id="2" value="" style="shape=waypoint;sketch=0;fillStyle=solid;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;" vertex="1" parent="1">
+                    <mxGeometry x="310" y="350" width="20" height="20" as="geometry"/>
+                </mxCell>
+                <mxCell id="3" value="" style="shape=waypoint;sketch=0;fillStyle=solid;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;" vertex="1" parent="1">
+                    <mxGeometry x="340" y="390" width="20" height="20" as="geometry"/>
+                </mxCell>
+                <mxCell id="18" style="edgeStyle=none;html=1;entryX=0.345;entryY=0.994;entryDx=0;entryDy=0;entryPerimeter=0;endArrow=none;endFill=0;" edge="1" parent="1" source="4" target="17">
+                    <mxGeometry relative="1" as="geometry"/>
+                </mxCell>
+                <mxCell id="4" value="" style="shape=waypoint;sketch=0;fillStyle=solid;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;" vertex="1" parent="1">
+                    <mxGeometry x="200" y="470" width="20" height="20" as="geometry"/>
+                </mxCell>
+                <mxCell id="8" style="edgeStyle=none;html=1;entryX=0.55;entryY=0.65;entryDx=0;entryDy=0;entryPerimeter=0;endArrow=none;endFill=0;exitX=1.02;exitY=0.3;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1" source="5" target="4">
+                    <mxGeometry relative="1" as="geometry"/>
+                </mxCell>
+                <mxCell id="5" value="" style="shape=waypoint;sketch=0;fillStyle=solid;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;" vertex="1" parent="1">
+                    <mxGeometry x="230" y="430" width="20" height="20" as="geometry"/>
+                </mxCell>
+                <mxCell id="6" value="" style="shape=waypoint;sketch=0;fillStyle=solid;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;" vertex="1" parent="1">
+                    <mxGeometry x="150" y="350" width="20" height="20" as="geometry"/>
+                </mxCell>
+                <mxCell id="9" value="" style="shape=waypoint;sketch=0;fillStyle=solid;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;" vertex="1" parent="1">
+                    <mxGeometry x="440" y="390" width="20" height="20" as="geometry"/>
+                </mxCell>
+                <mxCell id="10" style="edgeStyle=none;html=1;entryX=0.45;entryY=0.7;entryDx=0;entryDy=0;entryPerimeter=0;endArrow=none;endFill=0;" edge="1" parent="1" source="11" target="12">
+                    <mxGeometry relative="1" as="geometry"/>
+                </mxCell>
+                <mxCell id="11" value="" style="shape=waypoint;sketch=0;fillStyle=solid;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;" vertex="1" parent="1">
+                    <mxGeometry x="230" y="350" width="20" height="20" as="geometry"/>
+                </mxCell>
+                <mxCell id="12" value="" style="shape=waypoint;sketch=0;fillStyle=solid;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;" vertex="1" parent="1">
+                    <mxGeometry x="200" y="390" width="20" height="20" as="geometry"/>
+                </mxCell>
+                <mxCell id="13" style="edgeStyle=none;html=1;endArrow=none;endFill=0;" edge="1" parent="1" source="14">
+                    <mxGeometry relative="1" as="geometry">
+                        <mxPoint x="506.5" y="400" as="targetPoint"/>
+                    </mxGeometry>
+                </mxCell>
+                <mxCell id="16" style="edgeStyle=none;html=1;entryX=0.745;entryY=0.55;entryDx=0;entryDy=0;entryPerimeter=0;endArrow=none;endFill=0;" edge="1" parent="1" source="14" target="9">
+                    <mxGeometry relative="1" as="geometry"/>
+                </mxCell>
+                <mxCell id="14" value="" style="shape=waypoint;sketch=0;fillStyle=solid;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;" vertex="1" parent="1">
+                    <mxGeometry x="466.5" y="350" width="20" height="20" as="geometry"/>
+                </mxCell>
+                <mxCell id="15" value="" style="shape=waypoint;sketch=0;fillStyle=solid;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;" vertex="1" parent="1">
+                    <mxGeometry x="496.5" y="390" width="20" height="20" as="geometry"/>
+                </mxCell>
+                <mxCell id="17" value="" style="shape=waypoint;sketch=0;fillStyle=solid;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;" vertex="1" parent="1">
+                    <mxGeometry x="170" y="510" width="20" height="20" as="geometry"/>
+                </mxCell>
+                <mxCell id="19" style="edgeStyle=none;html=1;entryX=0.345;entryY=0.994;entryDx=0;entryDy=0;entryPerimeter=0;endArrow=none;endFill=0;" edge="1" parent="1" source="20" target="23">
+                    <mxGeometry relative="1" as="geometry"/>
+                </mxCell>
+                <mxCell id="25" style="edgeStyle=none;html=1;entryX=0.5;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;endArrow=none;endFill=0;" edge="1" parent="1" source="20" target="24">
+                    <mxGeometry relative="1" as="geometry"/>
+                </mxCell>
+                <mxCell id="20" value="" style="shape=waypoint;sketch=0;fillStyle=solid;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;" vertex="1" parent="1">
+                    <mxGeometry x="200" y="560" width="20" height="20" as="geometry"/>
+                </mxCell>
+                <mxCell id="21" style="edgeStyle=none;html=1;entryX=0.55;entryY=0.65;entryDx=0;entryDy=0;entryPerimeter=0;endArrow=none;endFill=0;exitX=1.02;exitY=0.3;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1" source="22" target="20">
+                    <mxGeometry relative="1" as="geometry"/>
+                </mxCell>
+                <mxCell id="22" value="" style="shape=waypoint;sketch=0;fillStyle=solid;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;" vertex="1" parent="1">
+                    <mxGeometry x="230" y="520" width="20" height="20" as="geometry"/>
+                </mxCell>
+                <mxCell id="23" value="" style="shape=waypoint;sketch=0;fillStyle=solid;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;" vertex="1" parent="1">
+                    <mxGeometry x="170" y="600" width="20" height="20" as="geometry"/>
+                </mxCell>
+                <mxCell id="24" value="" style="shape=waypoint;sketch=0;fillStyle=solid;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;" vertex="1" parent="1">
+                    <mxGeometry x="230" y="600" width="20" height="20" as="geometry"/>
+                </mxCell>
+                <mxCell id="26" style="edgeStyle=none;html=1;endArrow=none;endFill=0;" edge="1" parent="1" source="27">
+                    <mxGeometry relative="1" as="geometry">
+                        <mxPoint x="350" y="480" as="targetPoint"/>
+                    </mxGeometry>
+                </mxCell>
+                <mxCell id="27" value="" style="shape=waypoint;sketch=0;fillStyle=solid;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;" vertex="1" parent="1">
+                    <mxGeometry x="310" y="430" width="20" height="20" as="geometry"/>
+                </mxCell>
+                <mxCell id="31" style="edgeStyle=none;html=1;entryX=0.446;entryY=0.744;entryDx=0;entryDy=0;entryPerimeter=0;endArrow=none;endFill=0;" edge="1" parent="1" source="28" target="29">
+                    <mxGeometry relative="1" as="geometry"/>
+                </mxCell>
+                <mxCell id="28" value="" style="shape=waypoint;sketch=0;fillStyle=solid;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;" vertex="1" parent="1">
+                    <mxGeometry x="340" y="470" width="20" height="20" as="geometry"/>
+                </mxCell>
+                <mxCell id="29" value="" style="shape=waypoint;sketch=0;fillStyle=solid;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;" vertex="1" parent="1">
+                    <mxGeometry x="370" y="510" width="20" height="20" as="geometry"/>
+                </mxCell>
+                <mxCell id="32" style="edgeStyle=none;html=1;endArrow=none;endFill=0;startArrow=none;" edge="1" parent="1" source="35">
+                    <mxGeometry relative="1" as="geometry">
+                        <mxPoint x="350" y="560" as="targetPoint"/>
+                    </mxGeometry>
+                </mxCell>
+                <mxCell id="33" value="" style="shape=waypoint;sketch=0;fillStyle=solid;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;" vertex="1" parent="1">
+                    <mxGeometry x="310" y="520" width="20" height="20" as="geometry"/>
+                </mxCell>
+                <mxCell id="34" style="edgeStyle=none;html=1;entryX=0.446;entryY=0.744;entryDx=0;entryDy=0;entryPerimeter=0;endArrow=none;endFill=0;" edge="1" parent="1" source="35" target="36">
+                    <mxGeometry relative="1" as="geometry"/>
+                </mxCell>
+                <mxCell id="38" style="edgeStyle=none;html=1;entryX=0.743;entryY=0.633;entryDx=0;entryDy=0;entryPerimeter=0;endArrow=none;endFill=0;" edge="1" parent="1" source="35" target="37">
+                    <mxGeometry relative="1" as="geometry"/>
+                </mxCell>
+                <mxCell id="36" value="" style="shape=waypoint;sketch=0;fillStyle=solid;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;" vertex="1" parent="1">
+                    <mxGeometry x="370" y="600" width="20" height="20" as="geometry"/>
+                </mxCell>
+                <mxCell id="37" value="" style="shape=waypoint;sketch=0;fillStyle=solid;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;" vertex="1" parent="1">
+                    <mxGeometry x="310" y="600" width="20" height="20" as="geometry"/>
+                </mxCell>
+                <mxCell id="58" style="edgeStyle=none;html=1;entryX=0.5;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;endArrow=none;endFill=0;" edge="1" parent="1" source="59" target="63">
+                    <mxGeometry relative="1" as="geometry"/>
+                </mxCell>
+                <mxCell id="59" value="" style="shape=waypoint;sketch=0;fillStyle=solid;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;" vertex="1" parent="1">
+                    <mxGeometry x="200" y="670" width="20" height="20" as="geometry"/>
+                </mxCell>
+                <mxCell id="60" style="edgeStyle=none;html=1;entryX=0.55;entryY=0.65;entryDx=0;entryDy=0;entryPerimeter=0;endArrow=none;endFill=0;exitX=1.02;exitY=0.3;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1" source="61" target="59">
+                    <mxGeometry relative="1" as="geometry"/>
+                </mxCell>
+                <mxCell id="61" value="" style="shape=waypoint;sketch=0;fillStyle=solid;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;" vertex="1" parent="1">
+                    <mxGeometry x="230" y="630" width="20" height="20" as="geometry"/>
+                </mxCell>
+                <mxCell id="63" value="" style="shape=waypoint;sketch=0;fillStyle=solid;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;" vertex="1" parent="1">
+                    <mxGeometry x="230" y="710" width="20" height="20" as="geometry"/>
+                </mxCell>
+                <mxCell id="64" value="" style="edgeStyle=none;html=1;endArrow=none;endFill=0;" edge="1" parent="1" source="33" target="35">
+                    <mxGeometry relative="1" as="geometry">
+                        <mxPoint x="350" y="560" as="targetPoint"/>
+                        <mxPoint x="320" y="530" as="sourcePoint"/>
+                    </mxGeometry>
+                </mxCell>
+                <mxCell id="35" value="" style="shape=waypoint;sketch=0;fillStyle=solid;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;" vertex="1" parent="1">
+                    <mxGeometry x="340" y="560" width="20" height="20" as="geometry"/>
+                </mxCell>
+                <mxCell id="65" style="edgeStyle=none;html=1;endArrow=none;endFill=0;startArrow=none;" edge="1" parent="1" source="71">
+                    <mxGeometry relative="1" as="geometry">
+                        <mxPoint x="350" y="669.9999999999998" as="targetPoint"/>
+                    </mxGeometry>
+                </mxCell>
+                <mxCell id="67" style="edgeStyle=none;html=1;entryX=0.743;entryY=0.633;entryDx=0;entryDy=0;entryPerimeter=0;endArrow=none;endFill=0;" edge="1" parent="1" source="71" target="69">
+                    <mxGeometry relative="1" as="geometry"/>
+                </mxCell>
+                <mxCell id="69" value="" style="shape=waypoint;sketch=0;fillStyle=solid;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;" vertex="1" parent="1">
+                    <mxGeometry x="310" y="710" width="20" height="20" as="geometry"/>
+                </mxCell>
+                <mxCell id="70" value="" style="edgeStyle=none;html=1;endArrow=none;endFill=0;" edge="1" parent="1" target="71">
+                    <mxGeometry relative="1" as="geometry">
+                        <mxPoint x="350" y="670" as="targetPoint"/>
+                        <mxPoint x="320" y="639.9999999999998" as="sourcePoint"/>
+                    </mxGeometry>
+                </mxCell>
+                <mxCell id="71" value="" style="shape=waypoint;sketch=0;fillStyle=solid;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;" vertex="1" parent="1">
+                    <mxGeometry x="340" y="670" width="20" height="20" as="geometry"/>
+                </mxCell>
+                <mxCell id="72" value="" style="shape=waypoint;sketch=0;fillStyle=solid;size=6;pointerEvents=1;points=[];fillColor=none;resizable=0;rotatable=0;perimeter=centerPerimeter;snapToPoint=1;" vertex="1" parent="1">
+                    <mxGeometry x="310" y="630" width="20" height="20" as="geometry"/>
+                </mxCell>
+            </root>
+        </mxGraphModel>
+    </diagram>
+</mxfile>
\ No newline at end of file
--- a/mindmaps/gears_fs_db.mm	Wed Jan 31 16:27:14 2024 +0900
+++ b/mindmaps/gears_fs_db.mm	Wed Jan 31 18:42:29 2024 +0900
@@ -1,6 +1,6 @@
 <map version="freeplane 1.9.8">
 <!--To view this file, download free mind mapping software Freeplane from https://www.freeplane.org -->
-<node TEXT="GearsOS上のファイルシステムとDBの信頼性(仮)" FOLDED="false" ID="ID_452131666" CREATED="1610381621610" MODIFIED="1706679674396" STYLE="oval">
+<node TEXT="GearsOS上のファイルシステムとDBの信頼性(仮)" FOLDED="false" ID="ID_452131666" CREATED="1610381621610" MODIFIED="1706691080676" STYLE="oval">
 <font SIZE="18"/>
 <hook NAME="MapStyle" zoom="0.8">
     <properties edgeColorConfiguration="#808080ff,#ff0000ff,#0000ffff,#00ff00ff,#ff00ffff,#00ffffff,#7c0000ff,#00007cff,#007c00ff,#7c007cff,#007c7cff,#7c7c00ff" associatedTemplateLocation="template:/standard-1.6-noEdgeColor.mm" fit_to_viewport="false"/>
@@ -596,13 +596,13 @@
 <node TEXT="現状はTreeにCopyがない" ID="ID_65833123" CREATED="1704630383271" MODIFIED="1704630397371"/>
 <node TEXT="Copyを実装したい" ID="ID_1314300132" CREATED="1704632535428" MODIFIED="1704632976417"/>
 </node>
-<node TEXT="GCの種類" ID="ID_1746770811" CREATED="1704695739812" MODIFIED="1704696582051">
+<node TEXT="GCの種類" FOLDED="true" ID="ID_1746770811" CREATED="1704695739812" MODIFIED="1706686162814">
 <node TEXT="CopyingGCとは" ID="ID_344664264" CREATED="1704692777863" MODIFIED="1704692782352">
 <node TEXT="正確なGC" ID="ID_267216671" CREATED="1704696904268" MODIFIED="1704696908732"/>
 <node TEXT="ヒープ領域をFrom領域とTo領域に分割" ID="ID_1262852949" CREATED="1704711856815" MODIFIED="1704711932146"/>
 <node TEXT="ルートから参照できるオブジェクトをFrom領域からTo領域にコピーする" ID="ID_1311182649" CREATED="1704711932613" MODIFIED="1704711957213"/>
 </node>
-<node TEXT="Reference counting GC" ID="ID_776539806" CREATED="1704696590166" MODIFIED="1704696594363">
+<node TEXT="Reference counting GC" ID="ID_776539806" CREATED="1704696590166" MODIFIED="1706686162814">
 <node TEXT="オブジェクトの被参照数を表すカウンタを用いる" ID="ID_166536665" CREATED="1704710714477" MODIFIED="1704710852447"/>
 <node TEXT="被参照数が0になった時オブジェクトが解放される" ID="ID_1678718232" CREATED="1704711836498" MODIFIED="1704711854290"/>
 <node TEXT="循環参照をGCできない" ID="ID_1787181256" CREATED="1706091526719" MODIFIED="1706091542945"/>
@@ -617,7 +617,7 @@
 </node>
 </node>
 </node>
-<node TEXT="GCは併用される" ID="ID_1496671439" CREATED="1704696631667" MODIFIED="1704696640285">
+<node TEXT="GCは併用される" FOLDED="true" ID="ID_1496671439" CREATED="1704696631667" MODIFIED="1704696640285">
 <node TEXT="一般的にGCは組み合わせで使われる" ID="ID_1275851809" CREATED="1704776562321" MODIFIED="1704776594813"/>
 <node TEXT="例えば世代別GC" ID="ID_1572156993" CREATED="1704776595339" MODIFIED="1704776711350"/>
 <node TEXT="メジャーGCでMark &amp; Sweep GC" ID="ID_118548516" CREATED="1704776713708" MODIFIED="1704776746730"/>
@@ -696,7 +696,7 @@
 </node>
 </node>
 </node>
-<node TEXT="CopyRedBlackTreeによるレプリケーション" ID="ID_1106336919" CREATED="1703490971550" MODIFIED="1704973002324">
+<node TEXT="CopyRedBlackTreeによるレプリケーション" FOLDED="true" ID="ID_1106336919" CREATED="1703490971550" MODIFIED="1704973002324">
 <node TEXT="GCとほとんど同じ仕組みで実装する" ID="ID_1738615864" CREATED="1704973003111" MODIFIED="1704973021762"/>
 <node TEXT="実際にはCopy時に送信を同時に行う" ID="ID_1536582463" CREATED="1704973022427" MODIFIED="1704974557823"/>
 <node TEXT="socket通信が使える" ID="ID_703110643" CREATED="1705985752084" MODIFIED="1705985760495"/>
@@ -707,6 +707,41 @@
 <node TEXT="メモ" ID="ID_1983774695" CREATED="1705551362475" MODIFIED="1705551366046">
 <node TEXT="i-node treeをbackup, replication, gc可能であることを書きたい" ID="ID_559931709" CREATED="1705551366386" MODIFIED="1705551399134"/>
 </node>
+<node TEXT="別Contextへのコピー" FOLDED="true" ID="ID_399369896" CREATED="1706681655595" MODIFIED="1706686153089">
+<node TEXT="Contextとデータの関係" ID="ID_886743343" CREATED="1706682841186" MODIFIED="1706682863894">
+<node TEXT="ContextはCode tableとData tableをそれぞれ持つ" ID="ID_21894122" CREATED="1706682868410" MODIFIED="1706682889001"/>
+<node TEXT="ALLOCATIONするとData tableのヒープ領域に,そのDataGear分の領域が確保される" ID="ID_1585444915" CREATED="1706682889540" MODIFIED="1706682925919"/>
+<node TEXT="Contextが複数ある場合" ID="ID_1471440079" CREATED="1706682969341" MODIFIED="1706682981045">
+<node TEXT="ContextキューでContextが切り替えられる" ID="ID_1985467145" CREATED="1706682982216" MODIFIED="1706683001147"/>
+</node>
+</node>
+<node TEXT="別Contextにコピーするとよい" ID="ID_1876841083" CREATED="1706681659200" MODIFIED="1706682209127"/>
+<node TEXT="別Contextでなかった場合" ID="ID_560608920" CREATED="1706681671376" MODIFIED="1706681678666">
+<node TEXT="gcの場合" ID="ID_923875693" CREATED="1706682243505" MODIFIED="1706682247016">
+<node TEXT="コピーがContextのヒープ領域を共有してしまう" ID="ID_413051853" CREATED="1706681679033" MODIFIED="1706681732770"/>
+<node TEXT="GCにおけるコンパクションがしづらい" ID="ID_1314661404" CREATED="1706681733377" MODIFIED="1706681761877"/>
+</node>
+<node TEXT="レプリケーションの場合" ID="ID_527622333" CREATED="1706682256823" MODIFIED="1706682272029">
+<node TEXT="別ノードでは別のContextが動いている" ID="ID_1828450915" CREATED="1706682266069" MODIFIED="1706682286844"/>
+<node TEXT="なのでそもそもレプリケーションできない" ID="ID_1204637406" CREATED="1706682287142" MODIFIED="1706682340929"/>
+</node>
+</node>
+<node TEXT="別にすると" ID="ID_1006310926" CREATED="1706681763993" MODIFIED="1706681768496">
+<node TEXT="gcの場合" ID="ID_1630524955" CREATED="1706681768979" MODIFIED="1706681890584">
+<node TEXT="ヒープ領域が完全に分けられる" ID="ID_1953838327" CREATED="1706681878410" MODIFIED="1706681904308"/>
+<node TEXT="前のContextから切り替えることでFrom To入れ替えができる" ID="ID_1098995506" CREATED="1706681905021" MODIFIED="1706682233872"/>
+</node>
+<node TEXT="レプリケーションの場合" ID="ID_1369269729" CREATED="1706682237947" MODIFIED="1706682320750">
+<node TEXT="レプリケーションできるようになる" ID="ID_194880813" CREATED="1706682321617" MODIFIED="1706682348973"/>
+</node>
+</node>
+<node TEXT="バックアップの場合" ID="ID_747644249" CREATED="1706683084193" MODIFIED="1706683089437">
+<node TEXT="ディスクを仮想的な別Contextのヒープ領域として捉える" ID="ID_875066740" CREATED="1706683089813" MODIFIED="1706683124532"/>
+<node TEXT="リストアは" ID="ID_640003323" CREATED="1706683937466" MODIFIED="1706683941551">
+<node TEXT="" ID="ID_1334338074" CREATED="1706684991839" MODIFIED="1706684991839"/>
+</node>
+</node>
+</node>
 </node>
 <node TEXT="CopyRedBlackTreeの実装" ID="ID_1054164602" CREATED="1706417542077" MODIFIED="1706417548592">
 <node TEXT="実装方法" ID="ID_1491466672" CREATED="1705735668943" MODIFIED="1705735677711">
@@ -742,7 +777,10 @@
 <node TEXT="分散ファイルシステムのトポロジー形成" ID="ID_1837705741" CREATED="1704631962837" MODIFIED="1704631974676"/>
 <node TEXT="Christieを用いている" ID="ID_703384422" CREATED="1704631982827" MODIFIED="1704631995001"/>
 </node>
-<node TEXT="別ContextへのCopy" POSITION="right" ID="ID_1256969896" CREATED="1706608691732" MODIFIED="1706679674395" HGAP_QUANTITY="108.5 pt" VSHIFT_QUANTITY="371.99999 pt">
+<node TEXT="実行したCodeGearを出力する仕組みが欲しい" POSITION="right" ID="ID_566018654" CREATED="1706690111878" MODIFIED="1706690124375">
+<node TEXT="毎回printfするの面倒" ID="ID_402999765" CREATED="1706690125223" MODIFIED="1706690134582"/>
+</node>
+<node TEXT="別ContextへのCopy" FOLDED="true" POSITION="right" ID="ID_1256969896" CREATED="1706608691732" MODIFIED="1706691074851" HGAP_QUANTITY="14.75 pt" VSHIFT_QUANTITY="21 pt">
 <node TEXT="新たにヒープ領域を確保することによりコンパクションされる" ID="ID_1570751579" CREATED="1706610433391" MODIFIED="1706610495922">
 <node TEXT="少なくとも論理的には" ID="ID_1203172749" CREATED="1706610530004" MODIFIED="1706610535897"/>
 </node>
@@ -759,7 +797,12 @@
 <node TEXT="リストア方法" ID="ID_1201150664" CREATED="1706611422642" MODIFIED="1706611428892">
 <node TEXT="Contextヒープとディスク上のデータ形式がbit単位で一致していればコピーするだけで済む......" ID="ID_1094786351" CREATED="1706611580254" MODIFIED="1706611621038"/>
 </node>
-<node TEXT="リストアのタイミング" ID="ID_484916387" CREATED="1706611430637" MODIFIED="1706611800129"/>
+<node TEXT="リストアのタイミング" ID="ID_484916387" CREATED="1706611430637" MODIFIED="1706611800129">
+<node TEXT="特定のバージョンをリストアしたい" ID="ID_1574892385" CREATED="1706684999835" MODIFIED="1706685007273"/>
+<node TEXT="現在のバージョンを別バージョンに切り替える時は書き込みの一貫性を確保する必要がある" ID="ID_1994863120" CREATED="1706685007752" MODIFIED="1706685069287">
+<node TEXT="書き込みが行われている際にリストアしてしまうと書き込み先がずれてしまう" ID="ID_610035180" CREATED="1706685087059" MODIFIED="1706685104511"/>
+</node>
+</node>
 </node>
 <node TEXT="Contextキュー" ID="ID_1047057445" CREATED="1706679759621" MODIFIED="1706679771873">
 <node TEXT="Contextが順次参照される" ID="ID_1047250748" CREATED="1706679793618" MODIFIED="1706679812635"/>
@@ -801,8 +844,76 @@
 </node>
 <node TEXT="バックアップの場合" ID="ID_1960787415" CREATED="1706683084193" MODIFIED="1706683089437">
 <node TEXT="ディスクを仮想的な別Contextのヒープ領域として捉える" ID="ID_212019334" CREATED="1706683089813" MODIFIED="1706683124532"/>
+<node TEXT="リストアは" ID="ID_716224417" CREATED="1706683937466" MODIFIED="1706683941551">
+<node TEXT="" ID="ID_1748042011" CREATED="1706684991839" MODIFIED="1706684991839"/>
+</node>
+</node>
+</node>
+</node>
+<node TEXT="CopyRedBlackTreeの実装" POSITION="right" ID="ID_1875155929" CREATED="1706686273106" MODIFIED="1706691080675" HGAP_QUANTITY="-10.75 pt" VSHIFT_QUANTITY="267.74999 pt">
+<node TEXT="説明" ID="ID_1618684595" CREATED="1706689938660" MODIFIED="1706689944053"/>
+<node TEXT="Tree InterfaceのAPIにCopyを追加する" ID="ID_746343495" CREATED="1705735678228" MODIFIED="1705735715335">
+<node TEXT="tree-&gt;copy()" ID="ID_1203223705" CREATED="1706692546174" MODIFIED="1706692555749"/>
+</node>
+<node TEXT="RedBlackTreeのコピーとして実装する" ID="ID_535899546" CREATED="1706417169892" MODIFIED="1706417179625"/>
+<node TEXT="copyの使用方法" ID="ID_1242421499" CREATED="1706429162944" MODIFIED="1706429182896">
+<node TEXT="tree-&gt;copy" ID="ID_1447270137" CREATED="1706690663705" MODIFIED="1706690668279"/>
+</node>
+<node TEXT="アルゴリズム" ID="ID_13939041" CREATED="1706424874581" MODIFIED="1706424880284">
+<node TEXT="深さ優先探索" ID="ID_1402042091" CREATED="1706690644933" MODIFIED="1706690656698"/>
+</node>
+<node TEXT="説明したいCodeGear" ID="ID_560487748" CREATED="1706424910753" MODIFIED="1706690491719">
+<node TEXT="ALLOCATE部分" ID="ID_109587235" CREATED="1706690492043" MODIFIED="1706690497935">
+<node TEXT="copyRedBlackTree" ID="ID_1627803921" CREATED="1706690548342" MODIFIED="1706690550357"/>
+<node TEXT="leftDown1" ID="ID_502748318" CREATED="1706690515305" MODIFIED="1706690519288"/>
+<node TEXT="rightDown1" ID="ID_637234507" CREATED="1706690521535" MODIFIED="1706690525673"/>
+</node>
+<node TEXT="swap部分" ID="ID_921375688" CREATED="1706690590468" MODIFIED="1706690593805">
+<node TEXT="swap2" ID="ID_524874877" CREATED="1706690594880" MODIFIED="1706690620487"/>
 </node>
 </node>
+<node TEXT="CodeGearの遷移図" ID="ID_1817152324" CREATED="1706690760642" MODIFIED="1706690766522">
+<node TEXT="4つのフェーズ" ID="ID_659102113" CREATED="1706692593057" MODIFIED="1706692597444">
+<node TEXT="leftDown" ID="ID_1733945258" CREATED="1706692652301" MODIFIED="1706692657973"/>
+<node TEXT="rightDown" ID="ID_576929999" CREATED="1706692658387" MODIFIED="1706692661892"/>
+<node TEXT="up" ID="ID_1479524994" CREATED="1706692662332" MODIFIED="1706692663819"/>
+<node TEXT="swap" ID="ID_1491257973" CREATED="1706692664212" MODIFIED="1706692666506"/>
+</node>
+</node>
+<node TEXT="2つのStackの状態" ID="ID_1242761849" CREATED="1706690782698" MODIFIED="1706690788011">
+<node TEXT="nodeStack" ID="ID_490511205" CREATED="1706690792199" MODIFIED="1706690798537"/>
+<node TEXT="toStack" ID="ID_623970278" CREATED="1706690798816" MODIFIED="1706690800978"/>
+</node>
+<node TEXT="ALLOCATION" ID="ID_1483360062" CREATED="1706689945370" MODIFIED="1706689948913">
+<node TEXT="同じContextにコピーしている" ID="ID_392545374" CREATED="1706689949866" MODIFIED="1706689961356"/>
+<node TEXT="別ContextにコピーするためにはGearsに手を入れる必要がある" ID="ID_763880859" CREATED="1706689961906" MODIFIED="1706690001831">
+<node TEXT="別ContextをALLOCATIONに渡す" ID="ID_1985803376" CREATED="1706690009989" MODIFIED="1706690022323"/>
+</node>
+</node>
+<node TEXT="test" ID="ID_1700130711" CREATED="1706690975424" MODIFIED="1706690978243">
+<node TEXT="一応のテストケース" ID="ID_1423214579" CREATED="1706692239367" MODIFIED="1706692246372">
+<node TEXT="ノード数" ID="ID_1964840725" CREATED="1706692262124" MODIFIED="1706692264486">
+<node TEXT="3" OBJECT="java.lang.Long|3" ID="ID_1422106160" CREATED="1706692264846" MODIFIED="1706692266248"/>
+<node TEXT="7" OBJECT="java.lang.Long|7" ID="ID_1488274279" CREATED="1706692266663" MODIFIED="1706692268000"/>
+<node TEXT="6316" OBJECT="java.lang.Long|6316" ID="ID_1200028911" CREATED="1706692268482" MODIFIED="1706692382199"/>
+<node TEXT="6317" OBJECT="java.lang.Long|6317" ID="ID_564805681" CREATED="1706692273753" MODIFIED="1706692277339"/>
+</node>
+<node TEXT="木のパターンでやりたい" ID="ID_267932296" CREATED="1706692282451" MODIFIED="1706692290220"/>
+</node>
+</node>
+<node TEXT="記述時に気づいた言語バグ" ID="ID_696764717" CREATED="1706418932388" MODIFIED="1706418940900">
+<node TEXT="ifにてnextを持つCGへのgotoをするとうまく変換されない" ID="ID_1841484842" CREATED="1706418941366" MODIFIED="1706418994628"/>
+<node TEXT="gotoする時にCGを3つ以上チェーンできない" ID="ID_694782376" CREATED="1706419095962" MODIFIED="1706419119983">
+<node TEXT="tree-&gt;nodeStack-&gt;push" ID="ID_319569355" CREATED="1706419141188" MODIFIED="1706419149014"/>
+</node>
+</node>
+<node TEXT="実行" ID="ID_24457646" CREATED="1706691161304" MODIFIED="1706691165601">
+<node TEXT="ある程度のノード数で死ぬ" ID="ID_1253513150" CREATED="1706691166430" MODIFIED="1706691176293">
+<node TEXT="6317ノードで死ぬ" ID="ID_521488303" CREATED="1706691448672" MODIFIED="1706691457416"/>
+<node TEXT="stack pushで死んでる" ID="ID_1846037284" CREATED="1706692200303" MODIFIED="1706692222314"/>
+</node>
+</node>
+<node TEXT="tree-&gt;rootを書き換えて,途中のノードからコピーできるみたいなの作りたい" ID="ID_1603927493" CREATED="1706692686178" MODIFIED="1706692704418"/>
 </node>
 <node TEXT="バックアップやGCのタイミング" FOLDED="true" POSITION="left" ID="ID_1968325106" CREATED="1705995867783" MODIFIED="1705995947002">
 <node TEXT="木の操作の度にGCしていては効率が悪い" ID="ID_1270257607" CREATED="1705995886579" MODIFIED="1705995983113">
@@ -840,21 +951,21 @@
 </node>
 </node>
 </node>
-<node TEXT="実装" POSITION="left" ID="ID_1462455862" CREATED="1706417525408" MODIFIED="1706520562138">
-<node TEXT="CopyRedBlackTreeの実装" FOLDED="true" ID="ID_1619882257" CREATED="1701697553803" MODIFIED="1706520562137" VSHIFT_QUANTITY="-4.5 pt">
-<node TEXT="実装方法" ID="ID_1774988166" CREATED="1705735668943" MODIFIED="1705735677711">
+<node TEXT="実装" FOLDED="true" POSITION="left" ID="ID_1462455862" CREATED="1706417525408" MODIFIED="1706520562138">
+<node TEXT="CopyRedBlackTreeの実装" ID="ID_1619882257" CREATED="1701697553803" MODIFIED="1706520562137" VSHIFT_QUANTITY="-4.5 pt">
+<node TEXT="実装方法" FOLDED="true" ID="ID_1774988166" CREATED="1705735668943" MODIFIED="1705735677711">
 <node TEXT="Tree InterfaceのAPIにCopyを追加する" ID="ID_95904284" CREATED="1705735678228" MODIFIED="1705735715335"/>
 <node TEXT="RedBlackTreeのコピーとして実装する" ID="ID_748405331" CREATED="1706417169892" MODIFIED="1706417179625"/>
 </node>
-<node TEXT="使い方(test)" ID="ID_952766134" CREATED="1706417138868" MODIFIED="1706417138868">
+<node TEXT="使い方(test)" FOLDED="true" ID="ID_952766134" CREATED="1706417138868" MODIFIED="1706417138868">
 <node TEXT="Copy()にはtree以外何も渡さない" ID="ID_1081702361" CREATED="1706417367338" MODIFIED="1706417401749">
 <node TEXT="何か渡すことも考えられる" ID="ID_1227095307" CREATED="1706417402206" MODIFIED="1706417409509"/>
 <node TEXT="GCする場合とreplicationする場合で動作を切り替えるとか" ID="ID_431028898" CREATED="1706417409901" MODIFIED="1706417421736"/>
 </node>
 </node>
-<node TEXT="コピーのアルゴリズム" ID="ID_64994373" CREATED="1703491215841" MODIFIED="1703491223454">
-<node TEXT="アルゴリズム" ID="ID_972208221" CREATED="1699849518269" MODIFIED="1699849522647">
-<node TEXT="Stackを使う" ID="ID_799370781" CREATED="1706417204202" MODIFIED="1706417282682">
+<node TEXT="コピーのアルゴリズム" FOLDED="true" ID="ID_64994373" CREATED="1703491215841" MODIFIED="1706691006775">
+<node TEXT="アルゴリズム" ID="ID_972208221" CREATED="1699849518269" MODIFIED="1706691006775">
+<node TEXT="Stackを使う" FOLDED="true" ID="ID_799370781" CREATED="1706417204202" MODIFIED="1706417282682">
 <node TEXT="2つのStack" ID="ID_1829045504" CREATED="1706417283299" MODIFIED="1706417289209">
 <node TEXT="nodeStack" ID="ID_651682201" CREATED="1706417210255" MODIFIED="1706417229905">
 <node TEXT="From木を辿るためのStack" ID="ID_1782478294" CREATED="1706417237281" MODIFIED="1706417257704"/>
@@ -865,25 +976,25 @@
 </node>
 <node TEXT="SingleLinkedStack" ID="ID_1528506233" CREATED="1706417294502" MODIFIED="1706417299177"/>
 </node>
-<node TEXT="左側を深さ優先で辿る" ID="ID_239741561" CREATED="1699849525266" MODIFIED="1699849604742">
+<node TEXT="左側を深さ優先で辿る" FOLDED="true" ID="ID_239741561" CREATED="1699849525266" MODIFIED="1706690997244">
 <node TEXT="子にcurrentを付け替えて親をnodeStackにpush" ID="ID_1852624670" CREATED="1706417608144" MODIFIED="1706417658172"/>
-<node TEXT="nodeStackはcurrentより以前のノードを持つ" ID="ID_304892775" CREATED="1706417633577" MODIFIED="1706417700399"/>
+<node TEXT="nodeStackはcurrentより以前のノードを持つ" ID="ID_304892775" CREATED="1706417633577" MODIFIED="1706690997243"/>
 <node TEXT="allocateした新しいnodeはinputStackにpush" ID="ID_749123856" CREATED="1706418475694" MODIFIED="1706418497889"/>
 </node>
-<node TEXT="アロケートしたノードは別のContext上に作る" ID="ID_573859973" CREATED="1699849620905" MODIFIED="1699849638042">
+<node TEXT="アロケートしたノードは別のContext上に作る" FOLDED="true" ID="ID_573859973" CREATED="1699849620905" MODIFIED="1699849638042">
 <node TEXT="GCのため" ID="ID_259949416" CREATED="1699849638520" MODIFIED="1699849668501"/>
 <node TEXT="Copy後古いContextを消す" ID="ID_1297792398" CREATED="1699849646521" MODIFIED="1699849693755"/>
 <node TEXT="メモリ管理をモナドで表していることになる" ID="ID_152951728" CREATED="1699849705089" MODIFIED="1699849715878"/>
 <node TEXT="ALLOCで別のContextに書き込むようにしたいな" ID="ID_1289215093" CREATED="1706417832741" MODIFIED="1706417849017"/>
 <node TEXT="別ノードに書き込むことになるのでそのままreplicationになる" ID="ID_1997482213" CREATED="1706508692481" MODIFIED="1706508711469"/>
 </node>
-<node TEXT="リーフまで降りたらroot方向に木を戻る" ID="ID_1233772087" CREATED="1699849731393" MODIFIED="1699849765553">
+<node TEXT="リーフまで降りたらroot方向に木を戻る" FOLDED="true" ID="ID_1233772087" CREATED="1699849731393" MODIFIED="1699849765553">
 <node TEXT="Stack pop" ID="ID_1907664340" CREATED="1699849765982" MODIFIED="1699849773214"/>
 <node TEXT="右側を呼び出す" ID="ID_1658933965" CREATED="1699849789218" MODIFIED="1699849803550"/>
 </node>
 </node>
 </node>
-<node TEXT="コード説明" ID="ID_1352482727" CREATED="1704630501155" MODIFIED="1704630507416">
+<node TEXT="コード説明" FOLDED="true" ID="ID_1352482727" CREATED="1704630501155" MODIFIED="1704630507416">
 <node TEXT="ALLOCATEの部分" ID="ID_933840077" CREATED="1706418297855" MODIFIED="1706418365645">
 <node TEXT="" ID="ID_1621850954" CREATED="1706503638877" MODIFIED="1706503638877"/>
 </node>
@@ -901,17 +1012,20 @@
 <node TEXT="rightDown" ID="ID_1843132193" CREATED="1706419399509" MODIFIED="1706419403818"/>
 <node TEXT="swap" ID="ID_11264463" CREATED="1706419404827" MODIFIED="1706419406275"/>
 </node>
-<node TEXT="記述時に気づいた言語バグ" ID="ID_696764717" CREATED="1706418932388" MODIFIED="1706418940900">
-<node TEXT="ifにてnextを持つCGへのgotoをするとうまく変換されない" ID="ID_1841484842" CREATED="1706418941366" MODIFIED="1706418994628"/>
-<node TEXT="gotoする時にCGを3つ以上チェーンできない" ID="ID_694782376" CREATED="1706419095962" MODIFIED="1706419119983">
-<node TEXT="tree-&gt;nodeStack-&gt;push" ID="ID_319569355" CREATED="1706419141188" MODIFIED="1706419149014"/>
+</node>
+<node TEXT="動作確認" FOLDED="true" ID="ID_793097790" CREATED="1706419438278" MODIFIED="1706691045584">
+<node TEXT="テストケース" ID="ID_596576048" CREATED="1706420024765" MODIFIED="1706691045584"/>
 </node>
 </node>
 </node>
-<node TEXT="動作確認" ID="ID_793097790" CREATED="1706419438278" MODIFIED="1706419442565">
-<node TEXT="テストケース" ID="ID_596576048" CREATED="1706420024765" MODIFIED="1706420029622"/>
-</node>
-<node TEXT="証明のしやすさについて" ID="ID_2776247" CREATED="1703492904417" MODIFIED="1703492910899">
+<node TEXT="評価" POSITION="left" ID="ID_186645686" CREATED="1706418118012" MODIFIED="1706418120523">
+<node TEXT="スタックを使ってることに関して" ID="ID_1617928125" CREATED="1706417138929" MODIFIED="1706417138929"/>
+<node TEXT="フラグメンテーション解消できてないことにかんして" ID="ID_912797279" CREATED="1706417138929" MODIFIED="1706417138929"/>
+<node TEXT="GearsFileSystemで重要なCopyの機能を実装できた" ID="ID_1040965600" CREATED="1706418258268" MODIFIED="1706418270889"/>
+<node TEXT="copy機能が追加されたことにより信頼性を確保する機能が実装できるようになるだろう" ID="ID_759285029" CREATED="1706424528708" MODIFIED="1706424548485"/>
+<node TEXT="今回は簡易的なGCに留まる" ID="ID_945220922" CREATED="1706424556818" MODIFIED="1706424564389"/>
+<node TEXT="ここまで動作確認はした" ID="ID_1964377761" CREATED="1706424650365" MODIFIED="1706424656184"/>
+<node TEXT="証明のしやすさについて" FOLDED="true" ID="ID_2776247" CREATED="1703492904417" MODIFIED="1703492910899">
 <node TEXT="Stackの使用に関して" ID="ID_432827984" CREATED="1703492856041" MODIFIED="1703492863503">
 <node TEXT="使用していることを明示しているので問題ない" ID="ID_203410953" CREATED="1706418581660" MODIFIED="1706418592724"/>
 <node TEXT="それはそれで証明する必要があるんだけども" ID="ID_1283008974" CREATED="1706418601289" MODIFIED="1706418613023"/>
@@ -922,13 +1036,4 @@
 </node>
 </node>
 </node>
-<node TEXT="評価" POSITION="left" ID="ID_186645686" CREATED="1706418118012" MODIFIED="1706418120523">
-<node TEXT="スタックを使ってることに関して" ID="ID_1617928125" CREATED="1706417138929" MODIFIED="1706417138929"/>
-<node TEXT="フラグメンテーション解消できてないことにかんして" ID="ID_912797279" CREATED="1706417138929" MODIFIED="1706417138929"/>
-<node TEXT="GearsFileSystemで重要なCopyの機能を実装できた" ID="ID_1040965600" CREATED="1706418258268" MODIFIED="1706418270889"/>
-<node TEXT="copy機能が追加されたことにより信頼性を確保する機能が実装できるようになるだろう" ID="ID_759285029" CREATED="1706424528708" MODIFIED="1706424548485"/>
-<node TEXT="今回は簡易的なGCに留まる" ID="ID_945220922" CREATED="1706424556818" MODIFIED="1706424564389"/>
-<node TEXT="ここまで動作確認はした" ID="ID_1964377761" CREATED="1706424650365" MODIFIED="1706424656184"/>
-</node>
-</node>
 </map>