View GitHub View Documentation
This project implements a collection of advanced system calls for the XV6 kernel. The goal is to expand on XV6’s core functionality with file system traversal, inter-process communication, and optimized I/O operations. It is based on MIT’s 6.1810 (formerly 6.828) Operating Systems course.
This project accomplishes the following objectives:
- Implements standard Unix user-level utilities:
sleep, which pauses execution for a set number of ticks;find, which recursively searches directories for specific filenames; andxargs, which executes commands from standard input. - Improves memory allocation by replacing statically declared arrays with a buddy allocator and implementing lazy page allocation for user-space heap memory.
- Optimizes the
fork()system call by using a copy-on-write method that initially shares physical memory pages between parent and child processes, as opposed to directly duplicating them. - Adds to the capabilities of the existing
Xv6file system by supporting much larger file sizes and implementing symbolic links. - Implements the
mmapandmunmapsystem calls, allowing processes to dynamically map files directly into memory and share memory with other processes.
/
[pdf]