Server design
-persistent metadata m1, m2, ..mm
-normal data structures + code
=>
create external data segments to back persistent data structures
-apps manage their persistence needs
Designer’s choice to use single or multiple data segment
RVM Primitives
Initialization
– initialize(options)
– map(region, options)
– unmap(region)
Body of server code
– begin_xact (tid, restore_mode)
– set_range(tid, addr, size)
– end_xact(tid, connect, t_mode)
– abort_xact(tid)
GC to reduce log space
– flush()
– truncate()
bigin_xact(tid,mode); set range(tid, base_addr, #bytes); write meta data m1 write meta data m2 end_xact(tid, mode);
No action by LRVM
LRVM create redo log in memory
Redo log
-AV changes of different region between begin and end xact
Commit
Redo log, window of vulnerability
Log truncation
apply to data seg, read redo log