Skip to content

jonathan0626/Operating-Systems-Projects

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

Operating Systems Projects

A collection of three operating systems projects covering Linux kernel development, thread scheduling, and kernel module programming on RISC-V/Linux environments.

Repository Overview

This repository contains three mini-projects completed as part of an Operating Systems course. Each project focuses on a different systems programming topic:

  1. RISC-V Kernel Syscalls
    Built and modified a custom Linux kernel on RISC-V, and implemented two custom system calls: revstr and tempbuf.

  2. Linux Thread Scheduling Demo
    Developed a multithreaded scheduling demo to compare Linux scheduling policies such as SCHED_NORMAL and SCHED_FIFO, using CPU affinity, barriers, and priority settings.

  3. Kfetch Kernel Module
    Implemented a Linux kernel module that provides a simple kfetch-style interface through a character device, allowing configurable system information output.

Repository Structure

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

Project Details

1. RISC-V Kernel Syscalls

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 string
  • tempbuf: stores and retrieves data through a temporary kernel buffer

2. Linux Thread Scheduling Demo

This project demonstrates how Linux thread scheduling policies affect execution order and runtime behavior.

Key topics

  • POSIX threads
  • SCHED_NORMAL vs SCHED_FIFO
  • Thread priorities
  • CPU affinity
  • Barrier synchronization
  • Busy-wait execution for scheduling observation

3. Kfetch Kernel Module

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

Skills Demonstrated

  • 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

Notes

  • 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.

About

A collection of Linux kernel and operating systems projects, including custom syscalls, thread scheduling, and kernel module development.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors