Skip to content

sumeetkhillare/OS_Projects

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

XINU Operating System Projects (CSC 501)

This repository contains a collection of operating system projects implemented in the XINU OS as part of CSC 501. The projects focus on core OS concepts including process scheduling, synchronization, and virtual memory management.


📁 Project Structure

xinu-projects/
│── PA1/   # Process Scheduling
│── PA2/   # Readers-Writer Locks & Priority Inheritance
│── PA3/   # Demand Paging & Virtual Memory

🚀 Overview

🔹 PA1: Process Scheduling

Implemented custom scheduling algorithms to improve fairness and prevent starvation:

  • Aging-based scheduler with dynamic priority adjustments
  • Linux-like scheduler using epochs, time quanta, and goodness metrics
  • Runtime switching between scheduling policies

🔹 PA2: Synchronization (Readers-Writer Locks)

Extended kernel synchronization primitives:

  • Implemented readers-writer locks supporting concurrent reads
  • Designed priority-based lock scheduling policies
  • Developed priority inheritance to handle priority inversion
  • Ensured fairness and correctness under concurrent workloads

🔹 PA3: Demand Paging & Virtual Memory

Built a virtual memory system with demand paging:

  • Implemented memory mapping (xmmap, xmunmap)
  • Designed per-process virtual heaps (vcreate, vgetmem, vfreemem)
  • Developed backing store management and inverted page tables
  • Implemented page fault handling (ISR 14)
  • Added page replacement policies (Second-Chance & FIFO)

🛠️ Technologies & Concepts

  • C Programming
  • XINU Operating System
  • Process Scheduling Algorithms
  • Synchronization & Concurrency
  • Virtual Memory & Paging
  • Page Replacement Algorithms
  • Kernel-Level Development

📊 Key Learnings

  • Deep understanding of OS internals and kernel design
  • Hands-on experience with scheduling, memory management, and synchronization
  • Debugging low-level systems code and handling edge cases
  • Designing efficient and fair resource management strategies

▶️ How to Run

  1. Set up the XINU environment (based on course instructions)

  2. Navigate to the desired project folder:

    cd PA1   # or PA2 / PA3
    
  3. Build and run:

    make clean
    make
    
  4. Use provided test files (e.g., testmain.c) to validate functionality


📌 Notes

  • Each project builds upon core XINU kernel functionality
  • Code modifications are primarily in kernel source files (system/, paging/, etc.)
  • Designed and tested on an emulated XINU environment

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors