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.
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.01. 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()`.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.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.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.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.