changeset 24:f0c0e873e3c1

...
author matac42 <matac@cr.ie.u-ryukyu.ac.jp>
date Fri, 12 Jan 2024 18:52:08 +0900
parents fadf02ce5925
children ff89b92c159f
files Paper/master_paper.lol Paper/master_paper.pdf Paper/master_paper.tex Paper/src/SingleLinkedQueue.cbc backup.sh mindmaps/gears_fs_db.mm
diffstat 6 files changed, 142 insertions(+), 57 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/master_paper.lol	Fri Jan 12 18:52:08 2024 +0900
@@ -0,0 +1,6 @@
+\contentsline {lstlisting}{\numberline {2.1}CbCのプログラム例}{8}{}%
+\contentsline {lstlisting}{\numberline {3.1}Queueのインターフェース}{12}{}%
+\contentsline {lstlisting}{\numberline {3.2}Interfaceの呼び出し}{13}{}%
+\contentsline {lstlisting}{\numberline {3.3}Queueのインターフェース}{13}{}%
+\contentsline {lstlisting}{\numberline {6.1}CopyRedBlackTreeの実装}{24}{}%
+\contentsline {lstlisting}{\numberline {6.2}CopyRedBlackTreeのアルゴリズム}{26}{}%
Binary file Paper/master_paper.pdf has changed
--- a/Paper/master_paper.tex	Fri Jan 12 17:50:36 2024 +0900
+++ b/Paper/master_paper.tex	Fri Jan 12 18:52:08 2024 +0900
@@ -85,17 +85,13 @@
 %図目次
 \listoffigures
 
-
-
 %リスト目次
-% \lstlistoflistings
+\lstlistoflistings
 
 %chapters
 
 \chapter{GearsOSにおけるファイルシステムとDB}
 
-
-
 情報システムの信頼性を確保することは重要な課題である.
 2023年には銀行システムや航空機の旅客システム,
 電子決済システムなどで障害が発生した\cite{zengin,ana,glory}.
@@ -318,7 +314,14 @@
 inputDataGearのnextはCodeGearの処理が終わった際に次にgotoするCodeGearを指定する.
 よって,take CodeGearの処理が全て終了すると,次にodgCommitCPUWorker4へgotoする.
 nextは\texttt{next(...)}と引数に\texttt{...}が渡される.
-これは
+これは仕様を記述する時点では不定である次に遷移するCodeGearのinputDataGearを表現している.
+GearsOSでgotoする際は実際にはContextから必要な値を取り出す.
+よって,\texttt{...}は必要な値をContextから取り出すことを意味している.
+
+次にinterfaceの実装似ついて説明する.
+Queue interfaceの実装の一つであるSingleLinkedQueueをソースコード\ref{src:SingleLinkedQueue.cbc}に示す.
+
+\lstinputlisting[label=src:SingleLinkedQueue.cbc, caption=Queueのインターフェース]{src/SingleLinkedQueue.cbc}
 
 
 \section{GearsOSのRedBlackTree}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/SingleLinkedQueue.cbc	Fri Jan 12 18:52:08 2024 +0900
@@ -0,0 +1,35 @@
+#include "context.h"
+#include <stdio.h>
+#impl "Queue.h" as "SingleLinkedQueue.h"
+#data "Node.h"
+#data "Element.h"
+
+Queue* createSingleLinkedQueue(struct Context* context) {
+    struct Queue* queue = new Queue();
+    struct SingleLinkedQueue* singleLinkedQueue = new SingleLinkedQueue();
+    queue->queue = (union Data*)singleLinkedQueue;
+    queue->take  = C_takeSingleLinkedQueue;
+    queue->put  = C_putSingleLinkedQueue;
+    queue->isEmpty = C_isEmptySingleLinkedQueue;
+    queue->clear = C_clearSingleLinkedQueue;
+    singleLinkedQueue->top  = new Element();
+    singleLinkedQueue->last = singleLinkedQueue->top;
+    return queue;
+}
+
+//  ~~省略~~
+
+__code takeSingleLinkedQueue(struct SingleLinkedQueue* queue, __code next(union Data* data, ...)) {
+    printf("take\n");
+    struct Element* top = queue->top;
+    struct Element* nextElement = top->next;
+    if (queue->top == queue->last) {
+        data = NULL;
+    } else {
+        queue->top = nextElement;
+        data = nextElement->data;
+    }
+    goto next(data, ...);
+}
+
+// ~~省略~~
--- a/backup.sh	Fri Jan 12 17:50:36 2024 +0900
+++ b/backup.sh	Fri Jan 12 18:52:08 2024 +0900
@@ -1,3 +1,4 @@
 #!/bin/zsh
 
-rsync -avP /Users/matac/ws/src/firefly/hg/Papers/2024/matac-master amane87:~/
\ No newline at end of file
+rsync -avP /Users/matac/ws/src/firefly/hg/Papers/2024/matac-master amane87:~/
+rsync -avP /Users/matac/ws/src/firefly/hg/Papers/2024/matac-master ui:~/
--- a/mindmaps/gears_fs_db.mm	Fri Jan 12 17:50:36 2024 +0900
+++ b/mindmaps/gears_fs_db.mm	Fri Jan 12 18:52:08 2024 +0900
@@ -93,6 +93,21 @@
 </node>
 </node>
 <node TEXT="信頼性の保証を目的としている" ID="ID_489283513" CREATED="1702111964176" MODIFIED="1702111972169"/>
+<node TEXT="interface" ID="ID_1090553760" CREATED="1705044283721" MODIFIED="1705044286729">
+<node TEXT="モジュール化の仕組み" ID="ID_1650605077" CREATED="1705044424301" MODIFIED="1705044435039">
+<node TEXT="Javaのクラスのような仕組み" ID="ID_1592717534" CREATED="1705044987112" MODIFIED="1705045006109"/>
+<node TEXT="使用するDGとCGをまとめる" ID="ID_616289115" CREATED="1705045011571" MODIFIED="1705045022968"/>
+</node>
+<node TEXT="DGの構造とCGの型の集合を定義する" ID="ID_613772826" CREATED="1705044331294" MODIFIED="1705044457429"/>
+<node TEXT="APIがCGで表現される" ID="ID_1438000127" CREATED="1705044643957" MODIFIED="1705044655030"/>
+<node TEXT="仕様と実装を分けて記述する" ID="ID_447965145" CREATED="1705044468383" MODIFIED="1705044490619">
+<node TEXT="仕様の定義方法" ID="ID_382365488" CREATED="1705045039309" MODIFIED="1705045049695"/>
+<node TEXT="実装の定義方法" ID="ID_710439475" CREATED="1705045050343" MODIFIED="1705045054967"/>
+</node>
+<node TEXT="interface-&gt;methodで呼び出せる" ID="ID_717163611" CREATED="1705044776612" MODIFIED="1705044788098"/>
+<node TEXT="code next" ID="ID_966484010" CREATED="1705044813010" MODIFIED="1705044818116"/>
+<node TEXT="..." ID="ID_267004486" CREATED="1705044819091" MODIFIED="1705044978009"/>
+</node>
 </node>
 <node TEXT="ファイルシステムとDB" ID="ID_1884932719" CREATED="1699849849835" MODIFIED="1699849855383">
 <node TEXT="RedBlackTreeを基本構造とする" ID="ID_224748942" CREATED="1699849885632" MODIFIED="1699849902671"/>
@@ -402,18 +417,21 @@
 <node TEXT="CodeGearの記述例" ID="ID_1731637915" CREATED="1703307784821" MODIFIED="1703307887307"/>
 </node>
 <node TEXT="信頼性の保証を目的としたGearsOS" ID="ID_1315567458" CREATED="1701692210913" MODIFIED="1703311040671">
-<node TEXT="3種類のGearsOS" ID="ID_1326415213" CREATED="1703309744902" MODIFIED="1703309750565"/>
-<node TEXT="Gearの概念" ID="ID_467816607" CREATED="1704785349473" MODIFIED="1704785353246"/>
-<node TEXT="メタ処理を記述するmetaGear" ID="ID_1666892566" CREATED="1703309692742" MODIFIED="1703309713823">
+<node TEXT="3種類のGearsOS" ID="ID_1326415213" CREATED="1703309744902" MODIFIED="1703309750565">
+<node TEXT="Gears Agda" ID="ID_1385168402" CREATED="1705044105795" MODIFIED="1705044111649"/>
+<node TEXT="Gears OS" ID="ID_1367848198" CREATED="1705044112079" MODIFIED="1705044114581"/>
+<node TEXT="CbC_x.v6" ID="ID_323899306" CREATED="1705044116042" MODIFIED="1705044124351"/>
+</node>
+<node TEXT="メタ処理を記述するmetaGear" FOLDED="true" ID="ID_1666892566" CREATED="1703309692742" MODIFIED="1703309713823">
 <node TEXT="ノーマルレベルとメタレベルの切り分け" ID="ID_719507396" CREATED="1703308470210" MODIFIED="1703308478844"/>
 <node TEXT="CbCによって容易に切り分け可能" ID="ID_1803106515" CREATED="1704785297162" MODIFIED="1704785306308"/>
 </node>
-<node TEXT="全てのGearを参照するContext" ID="ID_91888278" CREATED="1703309731224" MODIFIED="1703310166027">
+<node TEXT="全てのGearを参照するContext" FOLDED="true" ID="ID_91888278" CREATED="1703309731224" MODIFIED="1705052148391">
 <node TEXT="全てのCodeGear, DataGearの参照を持つ" ID="ID_816175749" CREATED="1704777710835" MODIFIED="1704777722631"/>
 <node TEXT="従来OSのプロセスに相当する概念" ID="ID_485427631" CREATED="1704777731086" MODIFIED="1704777739954"/>
 <node TEXT="Contextにも種類がある" ID="ID_309360319" CREATED="1704787077056" MODIFIED="1704787082791"/>
 <node TEXT="Gearの概念ではmetaDataGearにあたる" ID="ID_1983036538" CREATED="1704777794150" MODIFIED="1704777819739"/>
-<node TEXT="ノーマルレベルから直接参照されない" ID="ID_280262393" CREATED="1704777824342" MODIFIED="1704777833700"/>
+<node TEXT="ノーマルレベルから直接参照されない" ID="ID_280262393" CREATED="1704777824342" MODIFIED="1705052148391"/>
 <node TEXT="metaCodeGearから参照される" ID="ID_526551168" CREATED="1704777838132" MODIFIED="1704778973371"/>
 <node TEXT="ノーマルレベルから直接参照されるとどうなるか" ID="ID_1998855779" CREATED="1704778991437" MODIFIED="1704779001760">
 <node TEXT="ノーマルレベルでメタレベルを書き換えることが可能になる" ID="ID_517717354" CREATED="1704779027195" MODIFIED="1704779037558"/>
@@ -421,11 +439,37 @@
 </node>
 <node TEXT="Contextを含めたGear遷移" ID="ID_1897519980" CREATED="1704779305504" MODIFIED="1704779324312"/>
 </node>
-<node TEXT="GearsOSのinterface" ID="ID_227287316" CREATED="1703310975416" MODIFIED="1704626095237"/>
-<node TEXT="GearsOSのRedBlackTree" ID="ID_894257471" CREATED="1704625749056" MODIFIED="1704625759342">
+<node TEXT="モジュール化の仕組みinterface" ID="ID_979914453" CREATED="1705044283721" MODIFIED="1705045105599">
+<node TEXT="モジュール化の仕組み" ID="ID_1323690074" CREATED="1705044424301" MODIFIED="1705044435039">
+<node TEXT="Javaのクラスのような仕組み" ID="ID_515246380" CREATED="1705044987112" MODIFIED="1705045006109"/>
+<node TEXT="使用するDGとCGをまとめる" ID="ID_1867289776" CREATED="1705045011571" MODIFIED="1705045022968"/>
+</node>
+<node TEXT="DGの構造とCGの型の集合を定義する" ID="ID_1609812236" CREATED="1705044331294" MODIFIED="1705044457429"/>
+<node TEXT="APIがCGで表現される" ID="ID_1744335025" CREATED="1705044643957" MODIFIED="1705044655030"/>
+<node TEXT="仕様と実装を分けて記述する" ID="ID_1841677639" CREATED="1705044468383" MODIFIED="1705044490619">
+<node TEXT="仕様の定義方法" ID="ID_554139727" CREATED="1705045039309" MODIFIED="1705045049695"/>
+<node TEXT="実装の定義方法" ID="ID_1845996229" CREATED="1705045050343" MODIFIED="1705045054967"/>
+</node>
+<node TEXT="interface-&gt;methodで呼び出せる" ID="ID_1716944029" CREATED="1705044776612" MODIFIED="1705044788098"/>
+<node TEXT="code next" ID="ID_493231617" CREATED="1705044813010" MODIFIED="1705044818116"/>
+<node TEXT="..." ID="ID_1146219373" CREATED="1705044819091" MODIFIED="1705044978009">
+<node TEXT="Contextから値を取り出す" ID="ID_1241470700" CREATED="1705049804204" MODIFIED="1705049810183"/>
+<node TEXT="次のCodeGearのinputDataGearは不定である" ID="ID_574655805" CREATED="1705049810780" MODIFIED="1705049835325"/>
+</node>
+<node TEXT="実装" ID="ID_1727927338" CREATED="1705050293688" MODIFIED="1705050297703">
+<node TEXT="#impl as" ID="ID_1508543884" CREATED="1705052044177" MODIFIED="1705052048026"/>
+<node TEXT="queue-&gt;" ID="ID_1223273790" CREATED="1705052048517" MODIFIED="1705052055499"/>
+<node TEXT="create" ID="ID_115012523" CREATED="1705052063509" MODIFIED="1705052066013"/>
+<node TEXT="SingleLinkedQueue.h" ID="ID_626185032" CREATED="1705052116061" MODIFIED="1705052122797"/>
+<node TEXT="C_" ID="ID_1002337273" CREATED="1705052125563" MODIFIED="1705052140851"/>
+</node>
+</node>
+<node TEXT="GearsOSのRedBlackTree" FOLDED="true" ID="ID_894257471" CREATED="1704625749056" MODIFIED="1704625759342">
 <node TEXT="Treeを継承している" ID="ID_830044324" CREATED="1704625938387" MODIFIED="1704625986222"/>
-<node TEXT="Treeはput, get, removeを持つ" ID="ID_325206226" CREATED="1704625785328" MODIFIED="1704625993146"/>
-<node TEXT="Copyがない" ID="ID_1861504637" CREATED="1704625774975" MODIFIED="1704625778526"/>
+<node TEXT="Tree interface" ID="ID_137044314" CREATED="1705050144077" MODIFIED="1705050161749">
+<node TEXT="DG" ID="ID_1897529344" CREATED="1705050163353" MODIFIED="1705050166212"/>
+<node TEXT="CG" ID="ID_710468405" CREATED="1705050166599" MODIFIED="1705050168009"/>
+</node>
 </node>
 </node>
 <node TEXT="GearsOSのファイルシステム(現状の話" FOLDED="true" ID="ID_667012992" CREATED="1701694178540" MODIFIED="1704630791818">
@@ -447,15 +491,15 @@
 <node TEXT="RedBlackTreeのトランザクション" ID="ID_1088328123" CREATED="1701696247760" MODIFIED="1702112463420" HGAP_QUANTITY="14.75 pt" VSHIFT_QUANTITY="3.75 pt"/>
 </node>
 </node>
-<node TEXT="GearsFileSystemにおけるGCとレプリケーション" ID="ID_1092227909" CREATED="1701690558237" MODIFIED="1704632532265" HGAP_QUANTITY="16.25 pt" VSHIFT_QUANTITY="-1.5 pt">
-<node TEXT="ファイルシステムの信頼性" ID="ID_200982245" CREATED="1704630258973" MODIFIED="1704630267498">
+<node TEXT="GearsFileSystemにおけるGCとレプリケーション" FOLDED="true" ID="ID_1092227909" CREATED="1701690558237" MODIFIED="1704632532265" HGAP_QUANTITY="16.25 pt" VSHIFT_QUANTITY="-1.5 pt">
+<node TEXT="ファイルシステムの信頼性" FOLDED="true" ID="ID_200982245" CREATED="1704630258973" MODIFIED="1704630267498">
 <node TEXT="信頼性に関する追加機能" ID="ID_1574949535" CREATED="1704630312069" MODIFIED="1704630320377"/>
 <node TEXT="GCやレプリケーションの機能がない" ID="ID_878946385" CREATED="1704630323433" MODIFIED="1704632961588"/>
 <node TEXT="実装するためにはデータのCopyが必要" ID="ID_822351907" CREATED="1704630337081" MODIFIED="1704630382753"/>
 <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="1704696582051">
 <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"/>
@@ -475,7 +519,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"/>
@@ -483,12 +527,41 @@
 <node TEXT="それぞれのGCの利点を享受できる" ID="ID_704438541" CREATED="1704776762298" MODIFIED="1704776776709"/>
 </node>
 <node TEXT="Rustのスマートポインタ" ID="ID_881149259" CREATED="1704696608959" MODIFIED="1704696615328"/>
-<node TEXT="CopyingGCを用いる" ID="ID_1639428535" CREATED="1704692768575" MODIFIED="1704692777490">
+<node TEXT="CopyingGCを用いる" FOLDED="true" ID="ID_1639428535" CREATED="1704692768575" MODIFIED="1704692777490">
 <node TEXT="どのように利用するか" ID="ID_549509034" CREATED="1704696775586" MODIFIED="1704696779463">
 <node TEXT="通常のCopyingGCではヒープ領がコピーされる" ID="ID_830576894" CREATED="1704692782815" MODIFIED="1704692814222"/>
 <node TEXT="GearsFileSystemの場合は木をコピーする" ID="ID_1003156855" CREATED="1704692814851" MODIFIED="1704692831840"/>
 <node TEXT="参照しているオブジェクトは木のルートから辿れる" ID="ID_1653048898" CREATED="1704696789481" MODIFIED="1704696806177"/>
 <node TEXT="辿れるノードのみコピーするだけでGCになる" ID="ID_355389629" CREATED="1704696807343" MODIFIED="1704696829530"/>
+<node TEXT="RedBlackTreeのコピーを用いる" ID="ID_1495626047" CREATED="1704630409263" MODIFIED="1704632465291">
+<node TEXT="Copy" ID="ID_1713857745" CREATED="1699848476363" MODIFIED="1699848479936">
+<node TEXT="単なる2分木のコピー" ID="ID_1165724596" CREATED="1699849455588" MODIFIED="1699849469353"/>
+<node TEXT="Stack無しで書くとおそらく結構複雑" ID="ID_1214201745" CREATED="1699849470075" MODIFIED="1699857892247"/>
+<node TEXT="木を辿るためにStackを使う" ID="ID_278711519" CREATED="1699849561986" MODIFIED="1699849582652">
+<node TEXT="コピー後に消されるので使って良い" ID="ID_841332618" CREATED="1701690823328" MODIFIED="1701690834394"/>
+</node>
+<node TEXT="Copy前後の同一性確認が必要" ID="ID_659073251" CREATED="1699849956727" MODIFIED="1699849974942"/>
+<node TEXT="Copy中の変更" ID="ID_58260128" CREATED="1699849982760" MODIFIED="1699849992692"/>
+<node TEXT="毎回全てをGCするか" ID="ID_1441955822" CREATED="1699858222922" MODIFIED="1699858309153">
+<node TEXT="アクセス頻度によって世代分けする" ID="ID_1844124057" CREATED="1699858236610" MODIFIED="1699858248665"/>
+<node TEXT="ほとんどアクセスされないデータはGC対象から除く" ID="ID_279065121" CREATED="1699858262921" MODIFIED="1699858318515"/>
+</node>
+<node TEXT="Copyによってreplicationの作成が可能になる" ID="ID_1531756423" CREATED="1701690510698" MODIFIED="1701690536500"/>
+<node TEXT="incrementalなTreeのcopy" ID="ID_1594894473" CREATED="1699869669939" MODIFIED="1699869692257">
+<node TEXT="後からcommitできるかも" ID="ID_1694113573" CREATED="1699869742980" MODIFIED="1699869754391"/>
+<node TEXT="commitのシーケンスをとっておく" ID="ID_251890400" CREATED="1699869765723" MODIFIED="1699869778036">
+<node TEXT="Treeとは別にオペレーションのリストがある" ID="ID_1030866225" CREATED="1699869879779" MODIFIED="1699869889686">
+<node TEXT="これもcopyが必要" ID="ID_247714394" CREATED="1699869957930" MODIFIED="1699869963814"/>
+</node>
+<node TEXT="RedBlackTree with commtted operation" ID="ID_118589427" CREATED="1699869899048" MODIFIED="1699869915123">
+<node TEXT="番号" ID="ID_1574803424" CREATED="1699869923512" MODIFIED="1699869928338"/>
+<node TEXT="insert, delete" ID="ID_252146025" CREATED="1699869929471" MODIFIED="1699869933942"/>
+</node>
+</node>
+</node>
+</node>
+<node TEXT="RedBlackTreeは単なる2分木" ID="ID_1037813952" CREATED="1704632767323" MODIFIED="1704632780206"/>
+</node>
 </node>
 <node TEXT="なぜCopyingGCなのか" ID="ID_1226680678" CREATED="1704696722580" MODIFIED="1704696736347">
 <node TEXT="全てのデータはRedBlackTreeに格納される" ID="ID_1096077315" CREATED="1704710451766" MODIFIED="1704710463902">
@@ -525,43 +598,10 @@
 </node>
 </node>
 </node>
-<node TEXT="RedBlackTreeのコピーを用いる" ID="ID_1495626047" CREATED="1704630409263" MODIFIED="1704632465291">
-<node TEXT="Copy" ID="ID_1713857745" CREATED="1699848476363" MODIFIED="1699848479936">
-<node TEXT="単なる2分木のコピー" ID="ID_1165724596" CREATED="1699849455588" MODIFIED="1699849469353"/>
-<node TEXT="Stack無しで書くとおそらく結構複雑" ID="ID_1214201745" CREATED="1699849470075" MODIFIED="1699857892247"/>
-<node TEXT="木を辿るためにStackを使う" ID="ID_278711519" CREATED="1699849561986" MODIFIED="1699849582652">
-<node TEXT="コピー後に消されるので使って良い" ID="ID_841332618" CREATED="1701690823328" MODIFIED="1701690834394"/>
-</node>
-<node TEXT="Copy前後の同一性確認が必要" ID="ID_659073251" CREATED="1699849956727" MODIFIED="1699849974942"/>
-<node TEXT="Copy中の変更" ID="ID_58260128" CREATED="1699849982760" MODIFIED="1699849992692"/>
-<node TEXT="毎回全てをGCするか" ID="ID_1441955822" CREATED="1699858222922" MODIFIED="1699858309153">
-<node TEXT="アクセス頻度によって世代分けする" ID="ID_1844124057" CREATED="1699858236610" MODIFIED="1699858248665"/>
-<node TEXT="ほとんどアクセスされないデータはGC対象から除く" ID="ID_279065121" CREATED="1699858262921" MODIFIED="1699858318515"/>
+<node TEXT="CopyRedBlackTreeによるレプリケーション" 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>
-<node TEXT="Copyによってreplicationの作成が可能になる" ID="ID_1531756423" CREATED="1701690510698" MODIFIED="1701690536500"/>
-<node TEXT="incrementalなTreeのcopy" ID="ID_1594894473" CREATED="1699869669939" MODIFIED="1699869692257">
-<node TEXT="後からcommitできるかも" ID="ID_1694113573" CREATED="1699869742980" MODIFIED="1699869754391"/>
-<node TEXT="commitのシーケンスをとっておく" ID="ID_251890400" CREATED="1699869765723" MODIFIED="1699869778036">
-<node TEXT="Treeとは別にオペレーションのリストがある" ID="ID_1030866225" CREATED="1699869879779" MODIFIED="1699869889686">
-<node TEXT="これもcopyが必要" ID="ID_247714394" CREATED="1699869957930" MODIFIED="1699869963814"/>
-</node>
-<node TEXT="RedBlackTree with commtted operation" ID="ID_118589427" CREATED="1699869899048" MODIFIED="1699869915123">
-<node TEXT="番号" ID="ID_1574803424" CREATED="1699869923512" MODIFIED="1699869928338"/>
-<node TEXT="insert, delete" ID="ID_252146025" CREATED="1699869929471" MODIFIED="1699869933942"/>
-</node>
-</node>
-</node>
-</node>
-<node TEXT="RedBlackTreeは単なる2分木" ID="ID_1037813952" CREATED="1704632767323" MODIFIED="1704632780206"/>
-</node>
-<node TEXT="CopyRedBlackTreeによるGCの仕組み" ID="ID_694714867" CREATED="1701696212033" MODIFIED="1703491006779">
-<node TEXT="CopyingGCを使用する" ID="ID_1956008882" CREATED="1704630535071" MODIFIED="1704630542771"/>
-<node TEXT="ディスク上とメモリ上の構造が同じ" ID="ID_1708669942" CREATED="1704630543186" MODIFIED="1704630559778">
-<node TEXT="データの一貫性" ID="ID_1054564074" CREATED="1704630577917" MODIFIED="1704630584566"/>
-</node>
-<node TEXT="" ID="ID_722857782" CREATED="1704630560764" MODIFIED="1704630560764"/>
-</node>
-<node TEXT="CopyRedBlackTreeによるレプリケーションの仕組み" ID="ID_1106336919" CREATED="1703490971550" MODIFIED="1703491035629"/>
 </node>
 <node TEXT="CopyRedBlackTreeの実装" FOLDED="true" ID="ID_1619882257" CREATED="1701697553803" MODIFIED="1703491075408" VSHIFT_QUANTITY="-4.5 pt">
 <node TEXT="コピーのアルゴリズム" ID="ID_64994373" CREATED="1703491215841" MODIFIED="1703491223454">