The document discusses various file system and operating system related projects including implementing snapshots and recovery points for a file system, an inode based file system, mounting Google Drive as a file system using FUSE, a basic version control system like git, a MapReduce implementation, distributed key-value stores like Pastry, Piazza, Chord, a Google File System implementation, extending the NachOS operating system, a slab allocator, a custom memory allocator, a multi-threaded server using a thread pool, and developing a benchmark for evaluating computer performance.
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0 ratings0% found this document useful (0 votes)
48 views3 pages
Projectlist
The document discusses various file system and operating system related projects including implementing snapshots and recovery points for a file system, an inode based file system, mounting Google Drive as a file system using FUSE, a basic version control system like git, a MapReduce implementation, distributed key-value stores like Pastry, Piazza, Chord, a Google File System implementation, extending the NachOS operating system, a slab allocator, a custom memory allocator, a multi-threaded server using a thread pool, and developing a benchmark for evaluating computer performance.
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3
Filesystem
1. Snapshot and Recovery/restore point of File System
Add snapshots to a file system, so that a user can look at the file system as it appeared at various points in the past. You'll probably want to use some kind of copy-on-write for disk storage to keep space consumption down. https://www.ibm.com/support/knowledgecenter/en/STXKQY_4.2.3/com.ibm.spectrum.scale.v4r23. doc/bl1adv_logcopy.htm
2. Inode based Filesystem implementation
The goals of this project are to implement a simple file system on top of a virtual disk and to understand implementation details of file systems https://sites.cs.ucsb.edu/~chris/teaching/cs170/projects/proj5.html
3. Google Drive with FUSE
Implement mounting Google Drive as a File-System using libfuse (File System in User Space). Design a user space C/C++ application that links against libfuse and maps the appropriate kernel calls to HTTP requests to Google Drive API and vice-versa. https://developers.google.com/drive/api/v3/about-sdk
System Mgmt
4. Version Control System ( git )
Implement a git like client system with limited capabilities. The program should be able *To create/initialize a git repository, creating a .git folder with the necessary details. *To be able to add files to index and commit, maintaining the commit-ids so that retrieving them back could be done. *To be able to see the status, diff, checkout previous commits, as shown by the git utility. *Bonus: To be able to communicate the GitHub server and upload files, getting update of only the changed files https://shafiul.github.io//gitbook/index.html
System Core:
5. Map reduce Implementation
MapReduce is a programming model and an associated implementation for processing and generating big data sets with a parallel, distributed algorithm on a cluster. As a part of project, students need to implement map reduce parallel implementation for various problems like word count, inverted index creation on wiki dump, Facebook common friend finder etc. Handling node failures, network failures, data replication would be few of the challenges. Simultaneous execution of multiple map reduce jobs would require handling of synchronization, socket communication, race conditions. https://hadoop.apache.org/docs/r1.2.1/mapred_tutorial.html
6. Pastry ( Key value store )
A distributed hash table (DHT) is a class of a decentralized distributed system that provides a lookup service similar to a hash table: (key, value) pairs are stored in a DHT, and any participating node can efficiently retrieve the value associated with a given key. http://research.microsoft.com/en-us/um/people/antr/PAST/pastry.pdf
7. Piazza ( Key value store )
Implement a distributed key-value store that runs across multiple nodes. Data storage is durable, i.e., the system does not lose data if a single node fails. You will use replication for fault tolerance. The key-value store is to be built optimizing for read throughput. Accessing data concurrently from multiple replicas of the data will be used to improve performance. Operations on the store should be atomic. i.e., either the operation should succeed completely or fail altogether without any side effects. You will use the Two-Phase Commit protocol to ensure atomic operations. https://inst.eecs.berkeley.edu/~cs162/fa12/
8. Chord ( Key value store )
The core problem facing peer-to-peer Systems is locating documents in a decentralized network and propose Chord, a distributed lookup primitive. Chord provides an efficient method of locating documents while placing few constraints on the applications that use it. https://pdos.csail.mit.edu/papers/ton:chord/paper-ton.pdf
9. Google FS from its research paper
Implementation of the Google File System, a scalable distributed file system for large distributed data-intensive applications. Possible file system interface extensions. http://www.cs.cornell.edu/courses/cs614/2004sp/papers/gfs.pdf
10. NachOS operating system - subsystems implementation.
Stock Nachos has an incomplete thread system. Your job is to complete it, and then use it to solve several synchronization problems. The second phase of Nachos is to support multiprogramming and system calls. In a real operating system, the kernel not only uses its procedures internally, but allows user-level programs to access some of its routines them via system calls. https://inst.eecs.berkeley.edu/~cs162/fa12/
11. Slab Allocator : Object caching
This allocator is based on a set of object-caching primitives that reduce the cost of allocating complex objects by retaining their state between uses. These same primitives prove equally effective for managing stateless memory (e.g. data pages and temporary buffers) because they are space-efficient and fast. Slab allocator works along with Buddy allocation system. Can you implement one on any old Unix kernel with only support for buddy allocator? http://srl.cs.jhu.edu/courses/600.418/SlabAllocator.pdf
12. Improvised Malloc design
* implement a memory allocator for the heap of a user-level process * Malloc - functions similar to traditional malloc, but free can free memory from any point in the allocated memory implementations of Mem_Alloc (int size) and Mem_Free (void *ptr) are identical, except the pointer passed to Mem_Free does not have to have been previously returned by Mem_Alloc; instead, ptr can point to any valid range of memory returned by Mem_Alloc. Will need to have a more sophisticated data structure than the traditional malloc to track the regions of memory allocated by Mem_Alloc. Specifically, this data structure will allow you to efficiently map any address to the corresponding memory object or to determine that there is no corresponding object. http://pages.cs.wisc.edu/~dusseau/Classes/CS537-F07/Projects/P3/index.html
13. Multi-threaded Server HPC
* First task is to design, implement, and test an abstraction called a thread pool. Your thread pool implementation should consist of two files: threadpool.h and threadpool.c. Implementation shouldn’t contain BUSYWAITING or DEADLOCKS or RACE CONDITIONS * Use your thread pool to turn the single-threaded server into a multithreaded server. * Finally test the performance of your server https://homes.cs.washington.edu/~zahorjan/homepage/Tools/LinuxProjects/MTServer/proj2.html
14. Developing Benchmark/framework for Computer Performance evaluation