The Kernel is organized into following 5 executable processes.
1. Join process:
The join process is not an RPC server.
This is started when a new machine wants to join as an ARC participant.
It is also started when the machine that had joined earlier fails and wants
to rejoin the system. (A failure of the co-ordinator process on the machine
is considered to be a failure of the machine as far as ARC computation
is concerned.)
There should be only one instance of the join process at anytime on a machine. The co-ordinators are distinguished based on the IP addresses of their host machines. Join process exits after creating the RPC coordinator server.
2. Coordinator process:
This is an RPC server and it is started automatically
by join process. This process coordinates all activities for a machine:
such as fault tolerance, load adaptability, heterogeneous ARC executions,
accepting and executing ARC functions and returning and accepting results.
All these are bundled as a group of RPC services. Before the coordinator
starts accepting requests, it joins the ARC system by making a broadcast
from within an initialization RPC call made by the join process.
The last coordinator joined becomes the leader. The role of the leader is to allocate a new id to a newly subscribing coordinator. Once a new coordinator joins, it becomes the new leader.
3. Monitor process : This process is
started by the coordinator during its initialization from within an initialization
RPC call by the join process. The main purpose of the monitor process is
to detect the failure of coordinator.
4. Leave process: This process is not
a RPC server and it is started whenever the co-ordinator leaves the ARC
system. This can be considered as the graceful exit of the coordinator
from the ARC ring. The leave process stops the coordinator and the monitor
process.
5. ARC function executor
process: This process is started by a coordinator for the execution
of the ARC task received.
The ARC Kernel
Kernel source code is located in "arc/kernel": Within this directory, there are sub directories for each of the kernel components, such as co-ordinator, join process, monitor process.
The ARC Parser
The user writes his program (.arc file) without worrying about the RPC invocation and task distribution details. It is the job of the parser to convert this program into a C program. The parser source can be found in "arc/parser"
The user library
The user library provides API for the user program
to interact with the coordinator. It is located in "arc/usr"
Example Programs
There are some examples programs present in "arc/examples".
List of files in ARC Package
People involved in the project:
Students who have worked on this project:
Yamini Sharma, Kalpesh Kapoor, Aruna L., Amit Soni, Satyashil Awadhare, Mayuresh Phadke, Satish
Umale .
ARC is a paradigm for distributed computing.
This documentation provides a designer's perspective on the ARC implementation.