PandOS
Shahir Ahmed and Boosung Kim
Operating Systems Project – PandOS Kernel for uMPS3
Overview
PandOS is a custom operating system developed for the uMPS3 emulator, a 3000 RISC architecture simulator. This project implements key OS functionalities such as:
- Time-sharing & Multiprogramming – Running multiple processes concurrently.
- Process Scheduling – Using the round-robin algorithm for CPU time allocation.
- Device Interrupt Handling – Managing hardware interaction through interrupts.
- System Call Management – Supporting I/O, process creation, and termination.
- Trap Handling – Managing runtime errors to maintain system stability.
- Deadlock Detection – Preventing system-wide resource locks.
- Virtual Memory with Paging – Enabling efficient memory management via TLB paging.
For a more detailed explanation of the project, see the Technical Report.
Implementation Phases
Phase 1: Queue Management
- Implemented Process Control Blocks (PCB) and Active Semaphore Lists (ASL).
- Designed linked list structures for process scheduling and synchronization.
Phase 2: Kernel Development
- Added round-robin scheduler, interrupt handlers, and system calls for I/O and process management.
- Integrated passeren (P) / verhogen (V) operations for mutual exclusion.
Phase 3: Support Level
- Implemented paging and virtual memory with TLB address translation.
- Enabled eight concurrent user processes with swap pool management.
Setup & Compilation
1. Compile the PandOS Kernel
Navigate to the pandos/phase3
directory and run:
make
To clean up previous builds:
make clean
2. Set Up uMPS3 Emulator
-
Launch uMPS3:
umps3
-
Create a new machine configuration:
- Set directory to
pandos/phase3
- Adjust general settings:
- TLB Size: 32
- TLB Floor:
0x80000000
- RAM Size (Frames): 128
-
Configure Flash Drives:
- Assign each flash drive to a corresponding user process (see Technical Report for details).
-
Enable all 8 terminals under the "Terminals" tab.
3. Run PandOS
- Power on the emulator.
- Open Windows > Terminal 0-7 to observe output from all eight user processes.
- Click the Run (▶) button.
Testing
To test swapStress.c:
- Modify
Makefile
in pandos/phase3/resources/testers
:
- Replace
terminalTest5.umps
with swapStress.umps
- Recompile and run:
make
umps3
Reflection
This project deepened our understanding of process synchronization, virtual memory, and low-level OS design. Implementing paging with TLB and handling device interrupts provided valuable experience in kernel development.
Technical Report
For a full breakdown of implementation details, see PandOS-Implementation-Report.pdf.
Authors
Shahir Ahmed & Boosung Kim