A small Virtual OS dashboard project with a backend REST API and a frontend Vite React app.
This project is a simulation of a Multiprogramming Operating System built using C++.
It demonstrates core OS concepts like process management, memory management, paging, and interrupt handling.
I have also extended this project with a React-based dashboard to visualize execution logs in a structured way.
- Supports multiple jobs execution
- Implements Paging (Memory Management)
- Handles Interrupts (SI, PI, TI)
- Simulates Process Control Block (PCB)
- Performs Address Mapping (Virtual → Real)
- Executes instructions like:
GD(Get Data)PD(Print Data)LR(Load Register)SR(Store Register)CR(Compare)BT(Branch)H(Halt)
- Generates output with error handling
- Visualizes logs using a React frontend
- Node.js 18+ (backend + frontend)
- Express (backend server)
- Vite + React (frontend)
- CSS variables and custom animations
- Input file contains job instructions
- Jobs are loaded into memory using paging
- Instructions are executed one by one
- Interrupts are handled by the OS (MOS)
- Output is written to a file
- Backend reads logs and sends to frontend
- React dashboard displays logs in table format
$AMJ → Job start (program instructions) $DTA → Data section (data) $END → Job end
$AMJ000100050005 GD10 PD10 H $DTA HELLO WORLD $END
- Displays program output
- Shows error messages (if any)
- Includes job execution details
- Process Table view
- Job execution logs
- Error highlighting
- Structured UI instead of raw logs
backend/- Node.js servermy-app/- Vite React frontend- Shared UI styling and process table + OS register legend
You should run backend and frontend concurrently in separate terminals:
cd backend
npm install
npm startcd my-app
npm install
npm run dev- Your OS code writes output to
output.json(C++ → JSON) - Backend Node.js reads
output.jsonand exposes API - React frontend requests data from backend
- UI updates every second to simulate real-time behavior
Flow: C++ → JSON file → Node.js → React
This project helped in understanding:
- How an operating system manages processes
- Memory management using paging
- Interrupt handling mechanism
- Execution flow of jobs
- No real parallel execution
- No scheduling algorithms
- Fixed memory size
- File-based input only
- Add process scheduling (FCFS, Round Robin)
- Memory visualization (blocks view)
- Execution timeline animation
- Control panel (Start / Pause / Reset)
Anshika Rawat🩷