So welcome back, guys.
Now I will going to discuss a programming project on socket programming.
The name of the project is distributed Transparent Memory.
The prerequisite of doing this project is that that you should be well versed with socket programming
concepts in C.
I will encourage you to do this project in C, but if you have a knowledge of socket programming in
any other language, say C Plus Plus or Python or Java even then also you are most welcome to do this
project.
But I will going to discuss and present the problem statement of this project in terms of C language.
So now let us discuss the project goals, what exactly we are trying to achieve through this project.
So many nodes share their local chunk of memory to one big chunk of memory, and this line is the entire
essence of this project.
So let us try to understand this point in detail.
So suppose you have four physical machines and each physical machine has a hard drive of two GB each,
right.
So the total of eight GB memory you have, but this eight GB of memory is actually distributed across
four different physical machines.
So memory is distributed across four nodes, but user is not aware of this distributed ness and that
is what the word transparent relates to.
The end user will be able to access the entire eight GB of memory over a network.
Right.
So you can see that in this diagram there sits a network in between a user and storage which is distributed
across physical machines.
Such memory model is used when voluminous amount of data needs to be stored on several machines.
Example of such distributed storage is Hadoop distributed file system which is built on this model.
Right.
So in this project we will going to build the distributed memory while user will not have to keep the
track of the information about where data is located or being fetched from.
Right.
So this is what actually it is.
That is we have a user here.
We have a network which sits in the middle of user and physical machines.
Now, this user has an access to total of eight GB of storage, which is distributed across distinct
physical machines.
So the end goal of this project is that that the end user must experience as if he has an access to
eight GB of memory.
The user do not have to keep a track that on which particular physical machine.
Actually the data of his interest is residing to the end user.
It would appear as if the entire eight GB of physical memory is available for use.
In other words, this project is all about creating an illusion to the end user as if he has an access
to a bigger one unified chunk of memory.
That bigger chunk of memory is actually distributed across various physical machines.
So this diagram actually captures the entire goal of our project.