This repository contains the projects I worked on for the Operating Systems course at SNU in 2024. Below is a summary of each project along with its objectives and descriptions.
Objective: Set up the development environment and familiarize with xv6.
Description:
- xv6 is an instructional OS developed by MIT, based on Unix version 6.
- For this project, I set up xv6-riscv on a multi-core RISC-V machine.
- Tasks included setting up the development environment on Linux or macOS and familiarizing myself with the project submission server.
Objective: Understand the implementation of system calls in xv6.
Description:
- System calls are the interfaces allowing user applications to request services from the OS kernel.
- This project involved studying and implementing system calls within the xv6 operating system.
Objective: Implement the EDF scheduler to learn about the scheduling subsystem of xv6.
Description:
- The existing CPU scheduler in xv6 uses a simple round-robin policy.
- In this project, I implemented the EDF scheduler, which is used in real-time systems to manage CPU scheduling based on task deadlines.
Objective: Explore the virtual memory subsystem by implementing KSM.
Description:
- KSM is a memory de-duplication feature that merges identical memory pages into a single shared page across multiple processes, saving memory.
- This project involved implementing the KSM feature in the xv6 operating system.
Objective: Modify the file index structure of xv6 to resemble the FAT file system.
Description:
- The FAT file system by Microsoft has a unique file index structure based on the File Allocation Table (FAT).
- The goal of this project was to adapt the file system in xv6 to mimic the structure of the FAT system.