A collection of three operating systems projects covering Linux kernel development, thread scheduling, and kernel module programming on RISC-V/Linux environments.
This repository contains three mini-projects completed as part of an Operating Systems course. Each project focuses on a different systems programming topic:
-
RISC-V Kernel Syscalls
Built and modified a custom Linux kernel on RISC-V, and implemented two custom system calls:revstrandtempbuf. -
Linux Thread Scheduling Demo
Developed a multithreaded scheduling demo to compare Linux scheduling policies such asSCHED_NORMALandSCHED_FIFO, using CPU affinity, barriers, and priority settings. -
Kfetch Kernel Module
Implemented a Linux kernel module that provides a simplekfetch-style interface through a character device, allowing configurable system information output.
Operating-Systems-Projects/
├── README.md
├── riscv-kernel-syscalls/
│ ├── README.md
│ ├── patches/
│ └── config/
├── linux-thread-scheduling-demo/
│ ├── README.md
│ ├── Makefile
│ └── sched_demo.c
└── kfetch-kernel-module/
├── README.md
├── Makefile
└── kfetch_mod.c
This project focuses on Linux kernel compilation and syscall implementation on a RISC-V environment.
Key topics
- Building a custom Linux kernel for RISC-V
- Booting with QEMU
- Adding custom syscalls to the kernel
- Kernel-space buffer handling and string processing
Implemented syscalls
revstr: reverses a user-provided stringtempbuf: stores and retrieves data through a temporary kernel buffer
This project demonstrates how Linux thread scheduling policies affect execution order and runtime behavior.
Key topics
- POSIX threads
SCHED_NORMALvsSCHED_FIFO- Thread priorities
- CPU affinity
- Barrier synchronization
- Busy-wait execution for scheduling observation
This project implements a custom Linux kernel module with a kfetch-style interface via a character device.
Key topics
- Linux kernel module development
- Character device registration
- Kernel read/write operations
- Bitmask-based output control
- System information reporting from kernel space
- Linux kernel development
- System call implementation
- Kernel module programming
- POSIX multithreading
- Linux scheduling policies
- RISC-V cross-compilation
- QEMU-based system testing
- Makefile-based build workflows
- Each subfolder contains its own README with project-specific details and build instructions.
- Reports are intentionally not included; this repository focuses on source code, configuration, and reproducible project structure.
- Both user-space and kernel-space operating systems programming topics are covered in this repository.