Skip to content

In this project I implemented a recoverable virtual memory system like the one described in the LRVM paper (https://www.cs.berkeley.edu/~brewer/cs262/lrvm.pdf). The user of my library could create persistent segments of memory and then access them in a sequence of transactions.

Notifications You must be signed in to change notification settings

abhishekjain1991-zz/Light_Weight_Recoverable_Virtual_Memory

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Group Members
1) Abhishek Jain
Special Request 
**************************************************************************************
During compilation, we need to enable the flag -std=c++11.
**************************************************************************************

1) How you use logfiles to accomplish persistency plus transaction semantics?
Ans: The logfile holds the data for one segment. Every transaction has the format:- 
	1) Offset
	2) Size
	3) Data
	Log files and segment files are saved with name same as segment names followed by .seg or .log respectively.
	The transaction is saved in the ".log" file when the transaction is committed. 
	On a call to trucation, any log file stored in the directory for the rim object is combined with the segment file of the corresponding name to give a newly updated segment file.
	The log files are then deleted.
	If a process crashes, it can re obtain its data from the set file (here tract is called  first to update all segment files in backing store)
     	If there is any previous transaction that has been committed and truncated, you can obtain that from the ".seg" file.
     	If there is any new transaction which has just been committed, then you can obtain that from the ".log" file.

2) What goes in them? How do the files get cleaned up, so that they do not expand indefinitely?
Ans: 
	The ".log" file is created when the transactions are committed. On truncation, these transactions are put into the ".seg" file and the ".log" file is deleted.
	Now, suppose there exists a ".log" and ".seg" file for a particular segment.
     	If we call a truncate for this transaction, the ".seg" file is appended with the details of the ".log" file and the ".log" file is deleted.
     	This helps in the log file not expanding indefinitely and hence saves space.
	A single call to truncate removes all log files and updates all corresponding segment files.

About

In this project I implemented a recoverable virtual memory system like the one described in the LRVM paper (https://www.cs.berkeley.edu/~brewer/cs262/lrvm.pdf). The user of my library could create persistent segments of memory and then access them in a sequence of transactions.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published