Post Job Free
Sign in

Engineering Computer

Location:
Charlotte, NC
Posted:
June 07, 2017

Contact this candidate

Resume:

Anand Manikandan

**********@*****.*** C : (***)- 585- 5640 https://www.linkedin.com/in/anand-manikandan/ https://angel.co/anand-manikandan

EDUCATION

Master’s in Electrical and Computer Engineering University of North Carolina at Charlotte, NC

B.Tech Electronics and Communication Engineering SASTRA University, Thanjavur, India

KEY SKILLS

Languages C(Expert), C++(Expert), Go(Proficient), JAVA(Prior Experience).

Relevant Coursework Advanced Operating Systems Distribution Systems Computer Architecture Parallel Computing Algorithms and Data Structures Embedded Systems.

Simulator/Emulator GEM5, QEMU.

Communication Protocols TCP/IP, UART, SPI, I2C, HTTP.

Operating Systems Windows, Debian, Ubuntu, Tiny-OS.

Miscellaneous GDB, GIT, GNU, Perf, POSIX Threads, Standard Template Library

PROJECTS

Priority based Pre-Threaded Web Server (Dec 2015)

Developed a pre-threaded web server in Using C to serve multiple static and dynamic client requests. Which uses a pool of worker threads using POSIX threads library to implement the producer-consumer model using socket programming.

A file descriptor was created and queued in a producer consumer queue, which is made mutually exclusive by locks.

Cache Optimization and Analysis using GEM5 and Perf (Feb 2016)

Simulated a 32-bit ARM processor on GEM5, and studied the behavior of cache by varying cache and data block sizes.

Simulated an X86 processor on GEM5 and analyzed the impact of varying associativity and cache block sizes on miss rates.

Improved cache performance by improving hit rate, for L1, L2, and L3 caches by varying block sizes.

Kernel Development

Implemented the following subsystems in UNIX based Exo-kernel operating system.

Memory Management System (Sep 2016)

Set up Global Descriptor Table (GDT), virtual to physical memory mapping and privilege levels for pages.

Wrote a physical memory allocator using C and x86 Assembly for the kernel and implemented a two-level page table for address translation with kernel and user address space.

System Calls, Interrupt and Exception Handling (Oct 2016)

Set up the Interrupt Descriptor Table (IDT) and wrote interrupt handlers in assembly and C for x86 architecture.

Wrote system calls and executed protected control transfer between user-mode and kernel-mode.

Extended breakpoint exception handler to function as kernel debugger with stepping and stack back-trace capabilities using Symbol Tables (STABs).

Preemptive Multitasking (Oct 2016)

Initialized application processors from bootstrap processor using MP configuration table and APIC units.

Implemented a kernel lock to prevent concurrency, and kernel level APIs for inter-process communication (IPC).

Implemented a copy-on-write fork to spawn processes, configure round-robin scheduling using timer interrupts.

File Systems (Nov 2016)

Created a file system env, implemented with a buffer cache, file directory and information node for each file.

Used IPC syscalls to read/write to files between file system environment and the environment requesting access.

The IPC is built atop a remote procedure call(RPC) which actually accesses the file system server.

Network Driver (Dec 2016)

Wrote a Network Driver using lwIP, an Open source lightweight TCP/IP protocol suite.

Implemented Functions to initialize E1000 and to transmit packets from user space.

Configured E1000 and Implemented transmit functions from Network server to Device Driver and Vice-versa.

Independent Study – Distributed Systems

MapReduce (Jan 2017)

Designed and Implemented a Mapping, Reduce and a Schedule function in GO, which calls the input map function on the input files and writes the resulting key/value pairs to intermediate files.

The Reduce function which collects the intermediate files and calls the input reduce function and produces the result files.

The Schedule function which assigns the tasks to the workers and parallelize the map-reduce process utilizing multiple cores.

Raft Consensus Algorithm (Feb 2017)

Implemented Leader election and Heartbeats. A new leader is elected if the previous one fails or the packets from/to it are lost.

Executed a start, which adds new operation to the log. The leader then sends the new operation to the other servers.

An object to hold the Raft’s most recently persisted state was created, raft will continuously update its change in state to it.



Contact this candidate