Project 1
- Object Oriented Programming in C Abstract Matrix Implementation : It consists of operations such as transpose, multiplications which can be implemented with the help of other operations such as
getting rows, columns and entries in the matrices without the knowledge of concrete implementations. This is known to be Abstract Matrix Implementation. Dense Matrix Implementation : It consists of accessing matrices elements in row major order and inherit operations from Abstract Matrix and implements only those
which are not implemented in Abstract matrix. It implements multiplication operation by inheriting it from Abstract Matrix. Smart Matrix Implementation: It consists of accessing matrices elements in column major order and inherit operations from Dense Matrix and override the multiplication
operation in addition to taking a transpose of a multiplier.
Project 2
- The Matrix Multiplication is being implemented in C using Inter Process Communication(IPC) mechanism such as Anonymous Pipes.
The Client creates multiple worker processes and communication within processes happens in such a way that client
would distribute input data for each row multiplication among the worker processes in order to achieve more concurrency. In short,
designed and developed IPC protocol and structure between client and worker processes. Worker process receives input data ,
performs multiplication and sends response data back to the client.
Project 3
- The Matrix Multiplication is being implemented in C using Inter Process Communication (IPC) mechanism such as Named Pipes.
A long running daemon concurrent server waits on well-known FIFO to listen to client request and after accepting the request,
server creates a worker process using double fork technique to perform multiplication of matrices sent by the client using multiplication
function which is dynamically loaded module and in response, it returns the time taken at user, system level i.e. how many cycle ticks it needed to
perform the matrix multiplication calculation.
Project 4
- Concept uses Semaphores, Shared Memory Segment IPC client server mechanism to perform matrices multiplication.
Project 5
- Concept uses Socket IPC Client/Server mechanism in which client sends matrices to the server and server performs matrices multiplication
and send time response taken back to the client.
Project 1
- Character device driver
- A classical producer consumer problem. A miscellaneous character device driver or also known as a kernel level pipe which maintains a FIFO queue with its size can be configured as a kernel parameter is used to exchange strings messages between user level processes.
Multiple concurrent processes can read from the device driver as well as write to the device driver.
Implemented a kernel module that creates a character device driver that stores process ID, parent process ID, state and CPU on which a process is running of all currently running processes. And this stored information has been shown to the user using user level processes.
Explored process hierarchy tree using fork, exec , wait, getpid and getppid system calls.
Project 2
- JProbes to track page faults
- Implemented a kernel module that accepts process ID as a kernel parameter of a running process and logs all the virtual addresses of a target process and time at which the process generates page faults to system log
Plotted the graphs of virtual addresses against time (as obtained above) for three different kinds of applications such as kernel compilation, sysbench, network and observed memory access patterns of a targeted process
Project 3
- Procee Tree Hierarchy
- Recursively create a process hierarchy tree that given H levels deep, print out the process tree information as the tree is being created and then systamatically terminates all the
processes in the tree. Use of getpid, wait and execvp system calls.
Project 4
- Active Processes Retrieval Module
- Written Kernel module that returns all the currently running processes to the user module. In short, how user space communicates with the kernel module via character device drivers.
Please contact me to get the source code for the following implementations
Project 1
- Rvalue References
- Comparing the performance between Copy constructor and Move constructor
Project 2
- Polymorphic Function Wrapper
- Storing the callable function type which contains return type and parameter list together and then call the callable using type erasure technique
Project 4
- Printf Call
- Printf style format library in c++ using tuple and universal reference, perfect forwarding mechanism. It supports IO manipulators. It uses partial specialization,
method overloading using enable-if feature, and variadic arguments. Trying to find midway of printf and cout call.
Project 5
- Map
- Implemented subset operations of std::map in template class named Map using AVL tree data structure. Increment and decrement operations performed
in O(1) rather than O(nlogn) by adding left, right and parent node to the node struct.
Project 6
- Generic Container
- Implemented generic container using double ended queue data structure. It can hold primitive and class types. Used internal qsort to
store the data in sorted order.
Project 7
- Arbitrary Dimension Array Class Template
- Implemented array class template that can be instantiated with any number of dimensions. Used partial specialization and variadic number of
arguments mechanism to achieve this functionality.
Project 1
- Implemented ID3 decision tree classifier.
Project 2
- Classify emails as spam or ham using Naive bayes, LRMAP, Perceptron training rule and gradient descent perceptron rule
Project 3
- APEX pipeline
- Developed In Order and Out Of Order Simulator in Java using register renaming, unified register file, centralized issue queue and reorder buffer.
- First in first out Issue Queue policy is being implemented.
- It simulates the working of the processor with multiple function units, multiple write ports, branch handling , branch bubbles, and instruction fetching.