Skip to content

PraveenKumar-Rajendran/OS-and-System-Programming

Repository files navigation

Operating Systems and System Programming: A Deep Dive into xv6

Overview

This repository showcases a series of projects developed as part of an Operating Systems course at KAIST, using the xv6 operating system. Each project focuses on enhancing or extending various components of xv6, providing hands-on experience with operating system concepts.

Projects

Introduction to xv6

Image sourced from Guru99

Refer to the project instructions to view the list of tasks to be completed.

Project Description This initial project introduces xv6, a teaching operating system used in the MIT Operating Systems course. The project involved gaining familiarity with the xv6 architecture and adding basic system calls to extend its functionality.

Kernel Threading

Image sourced from Scaler

Refer to the project instructions to view the list of tasks to be completed.

Project Description Implemented kernel threading in xv6 by creating kernel threads using `clone()` and `join()` system calls. Additionally, a user-level thread library was developed with functions such as `thread_create()`, `lock_acquire()`, and `lock_release()`.

Process Scheduler

Image sourced from Scaler

Refer to the project instructions to view the list of tasks to be completed.

Project Description Developed a priority-based process scheduler for xv6. This scheduler assigns different priority levels to processes, ensuring higher-priority processes receive more CPU time compared to those with lower priority.

Nullptr Dereferences and Shared Memory

Image sourced from MITRE CWE

Refer to the project instructions to view the list of tasks to be completed.

Project Description Enhanced xv6 by adding mechanisms to handle null pointer dereferences, ensuring that any process attempting to dereference a null pointer is terminated immediately. Also implemented shared memory functionality, complete with system calls for managing and tracking shared memory usage across processes.

Filesystem Optimization

Image sourced from UNIX v6/xv6 Book

Refer to the project instructions to view the list of tasks to be completed.

Project Description Optimized the xv6 filesystem to enhance performance when handling small files. This project involved modifying the filesystem's data structures and algorithms to reduce overhead and improve efficiency for operations involving small files.

Resources

Note

This project was organized with the aim of demonstrating my past experience with operating systems and their low-level operations, both as a reference for myself and to showcase my skills to potential future employers. Although I uploaded this after graduation, the work reflects projects I completed during my master's studies. I believe it's important to maintain a well-documented digital footprint, especially since a recruiter once inquired about my experience with low-level concepts.