💾

Flash Translation Layer Simulator

SSD flash translation layer with wear leveling and garbage collection

C Programming May 2025
🧠

Virtual Memory Manager

Demand paging system with TLB simulation and page replacement

Memory Management April 2025
🖨️

3D Printer Job Scheduler

Multi-threaded scheduler with concurrent job queue management

Concurrency April 2025
🔄

Thread Performance Analyzer

Benchmarking tool for thread behavior and scalability analysis

Performance March 2025

Process Management Toolkit

Command-line tool to execute, trace, and benchmark processes

Process Control February 2025
📁

Directory Watch Tool

Real-time Unix directory monitoring with responsive terminal UI

File Systems January 2025
🔤

Crossword Anagram Generator

Puzzle generator with word placement algorithm and anagram clues

Algorithms April 2023
🔲

Conway's Game of Life

Interactive cellular automaton simulation with custom animations

C Programming March 2023
💾

Flash Translation Layer Simulator

📅 May 2025 📍 Operating Systems Course

Overview

Simulated an SSD flash translation layer (FTL) with logical-to-physical mapping, garbage collection, and wear leveling.

Key Features

  • FTL Mapping: Translates logical to physical addresses
  • Garbage Collection: Reclaims invalidated blocks
  • Wear-Leveling: Balances write cycles across blocks
  • Metrics: Tracks write amplification, erase counts, and wear distribution
C Custom Simulation Engine Flash Memory Concepts
🧠

Virtual Memory Manager

📅 April 2025 📍 Operating Systems Course

Overview

Implemented a virtual memory system with demand paging, page tables, and TLB simulation. Tracked page faults and optimized access time.

Key Features

  • Page Table Management: Supports single- and two-level paging
  • Address Translation: Converts virtual to physical addresses with TLB caching
  • Statistics: Reports hit/miss rates, memory usage, and effective access time
  • Replacement Policy: FIFO or LRU for page eviction
C Memory Mapping TLB Simulation Bit Manipulation
🖨️

3D Printer Job Scheduler

📅 April 2025 📍 Operating Systems Course

Overview

Built a multi-threaded interactive scheduler for managing print jobs. Simulated real-world concurrency challenges with thread-safe job queues.

Key Features

  • Producer-Consumer Pattern: Threads manage job arrival and execution
  • Command Interface: Allows dynamic job submission and status checks
  • Synchronization: Prevents race conditions via mutexes and condition vars
  • Statistics: Tracks active jobs, wait times, and queue state
C POSIX Threads Mutexes Condition Variables

Screenshots

printsched> list
ID     Status      Input File               Output File              Input Size   Output Size  Submit Time  Start Time   Complete Time
-----------------------------------------------------------------------------------------------------------------------------------------

printsched> submit cube.gcode output.png
Job 1 submitted.
printsched> list
ID     Status      Input File               Output File              Input Size   Output Size  Submit Time  Start Time   Complete Time
-----------------------------------------------------------------------------------------------------------------------------------------
1      PRINTING    cube.gcode               output.png               155692       0            20:10:38     20:10:38     N/A
printsched> submit cube.gcode output1.png
Job 2 submitted.
printsched> submit cube.gcode output2.png
Job 3 submitted.
printsched> submit cube.gcode output3.png
Job 4 submitted.
printsched> list
ID     Status      Input File               Output File              Input Size   Output Size  Submit Time  Start Time   Complete Time
-----------------------------------------------------------------------------------------------------------------------------------------
1      COMPLETE    cube.gcode               output.png               155692       203124       20:10:38     20:10:38     20:10:40
2      COMPLETE    cube.gcode               output1.png              155692       203124       20:11:10     20:11:10     20:11:12
3      COMPLETE    cube.gcode               output2.png              155692       203124       20:11:13     20:11:13     20:11:14
4      PRINTING    cube.gcode               output3.png              155692       0            20:11:16     20:11:16     N/A

Average Turnaround Time: 1.67 seconds
Average Response Time  : 0.00 seconds
printsched> waitall
All jobs completed.
🔄

Thread Performance Analyzer

📅 March 2025 📍 Operating Systems Course

Overview

Designed experiments to measure thread behavior under different workloads. Explored scheduling, parallelism, and synchronization overhead.

Key Features

  • Multi-Threaded Experiments: Vary thread counts and CPU bindings
  • Timing Analysis: Compare wall-clock and CPU time
  • Scalability Insights: Evaluated speedup and contention
  • Lightweight Code: Focused on measurement accuracy with minimal overhead
C POSIX Threads (pthreads) clock_gettime() pthread_create()

Screenshots

student11.cse.nd.edu lwardeh ~ OS project3 ./progressperf 5555555 1
100% [======================================================]
size 5555555 threads 1 sum 1849684726792 time 156.99707ms
student11.cse.nd.edu lwardeh ~ OS project3 ./progressperf 5555555 2
100% [======================================================]
size 5555555 threads 2 sum 1849684726792 time 385.41602ms
student11.cse.nd.edu lwardeh ~ OS project3 ./progressperf 5555555 3
100% [======================================================]
size 5555555 threads 3 sum 1849684726792 time 434.48193ms
student11.cse.nd.edu lwardeh ~ OS project3 ./progressperf 5555555 4
100% [======================================================]
size 5555555 threads 4 sum 1849684726792 time 474.02222ms
student11.cse.nd.edu lwardeh ~ OS project3 ./seqperf 5555555
size 5555555 sum 1849684726792 time 13.484ms
student11.cse.nd.edu lwardeh ~ OS project3 ./seqperf 5555555
size 5555555 sum 1849684726792 time 13.065ms
student11.cse.nd.edu lwardeh ~ OS project3 ./seqperf 5555555
size 5555555 sum 1849684726792 time 13.034ms
student11.cse.nd.edu lwardeh ~ OS project3 ./seqperf 1234567
size 1234567 sum 410729960324 time 2.880ms
student11.cse.nd.edu lwardeh ~ OS project3 ./seqperf 1234567
size 1234567 sum 410729960324 time 2.897ms
student11.cse.nd.edu lwardeh ~ OS project3 ./seqperf 1234567
size 1234567 sum 410729960324 time 2.957ms
student11.cse.nd.edu lwardeh ~ OS project3 ./seqperf 1234567
size 1234567 sum 410729960324 time 2.869ms
student11.cse.nd.edu lwardeh ~ OS project3 ./syncperf 1234567 1
size 1234567 threads 1 sum 410729960324 time 21.89990ms
student11.cse.nd.edu lwardeh ~ OS project3 ./syncperf 1234567 2
size 1234567 threads 2 sum 410729960324 time 134.96680ms
student11.cse.nd.edu lwardeh ~ OS project3 ./syncperf 1234567 3
size 1234567 threads 3 sum 410729960324 time 138.56494ms
student11.cse.nd.edu lwardeh ~ OS project3 ./syncperf 1234567 4
size 1234567 threads 4 sum 410729960324 time 190.76001ms
student11.cse.nd.edu lwardeh ~ OS project3 ./threadperf 5555555 1
size 5555555 threads 1 sum 1849684726792 time 16.00488ms
student11.cse.nd.edu lwardeh ~ OS project3 ./threadperf 5555555 2
size 5555555 threads 2 sum 1849684726792 time 8.51392ms
student11.cse.nd.edu lwardeh ~ OS project3 ./threadperf 5555555 3
size 5555555 threads 3 sum 1849684726792 time 5.86304ms
student11.cse.nd.edu lwardeh ~ OS project3 ./threadperf 5555555 4
size 5555555 threads 4 sum 1849684726792 time 4.69092ms

Process Management Toolkit

📅 February 2025 📍 Operating Systems Course

Overview

Built a command-line tool to execute, trace, and benchmark processes in Unix. Demonstrated understanding of process creation, execution, and resource usage.

Key Features

  • Custom Shell (psh): Executes commands with support for fork() and exec()
  • Execution Tracing: Displays process exit status and signals
  • Resource Measurement: Measures CPU time and wall-clock time
  • Robust Handling: Catches failed commands and invalid usage gracefully
C POSIX fork() execvp() waitpid() getrusage()

Shell in Action

myshell> list
NAME                    SIZE      TYPE    MODE    OWNER
--------------------------------------------------------------------------------
.                       157 B     dir     0700    lwardeh
..                      148 B     dir     0700    lwardeh
c2.txt                  35 B      file    0600    lwardeh
commands.txt            61 B      file    0600    lwardeh
test                    98 B      dir     0700    lwardeh
myshell_tests.txt       2232 B    file    0600    lwardeh
Makefile                239 B     file    0600    lwardeh
myshell.c               14892 B   file    0600    lwardeh
myshell                 35880 B   file    0700    lwardeh
--------------------------------------------------------------------------------
myshell> chdir test
myshell> list
NAME                    SIZE      TYPE    MODE    OWNER
--------------------------------------------------------------------------------
.                       98 B      dir     0700    lwardeh
..                      157 B     dir     0700    lwardeh
txt.txt                 0 B       file    0600    lwardeh
hi                      0 B       file    0600    lwardeh
as                      0 B       file    0600    lwardeh
test2                   18 B      dir     0700    lwardeh
commands.txt            61 B      file    0600    lwardeh
--------------------------------------------------------------------------------

myshell> pwd
/escnfs/home/lwardeh/OS/project2/test
myshell> start test1
myshell: process 2612555 started
myshell> start test2
myshell: process 2612565 started
myshell> kill 2612555
myshell: process 2612555 has been killed
📁

Directory Watch Tool

📅 January 2025 📍 Operating Systems Course

Overview

Developed a real-time Unix directory monitoring tool using C. Displays live file system updates with a responsive terminal UI and robust error handling.

Key Features

  • Live Refresh: Auto-updates every 3 seconds
  • Smart Layout: Dynamic column widths; truncates when terminal is too small
  • Detailed Display: Shows file type, size, permissions, owner, and first-line content
  • Edge-Case Ready: Handles symbolic links, special chars, empty files, and errors gracefully
  • POSIX-Compliant: Clean system call usage and no memory leaks
C POSIX Unix System Calls opendir stat readlink Terminal UI

Screenshots

Contents of /escnfs/home/lwardeh/OS/project1 on 21:25:24 on 06/23/2025

NAME                    SIZE      TYPE    MODE    OWNER     CONTENTS
--------------------------------------------------------------------------------
.                       123 B     dir     0700    lwardeh   (directory)
..                      148 B     dir     0700    lwardeh   (directory)
dirwatch.c              6188 B    file    0600    lwardeh   /*#
example_link.txt        11 B      link    0777    lwardeh   --> example.txt
example.txt             0 B       file    0600    lwardeh   (empty)
Makefile                240 B     file    0600    lwardeh   # Configuration#
dirwatch                26536 B   file    0700    lwardeh   #ELF###
--------------------------------------------------------------------------------

total: 4 files, 2 directories, and 1 symlink
Window dimensions are too small
Contents of /escnfs/home/lwardeh/OS/project1 on 21:26:27 on 06/23/2025

NAME                    SIZE      TYPE    MODE    OWNER     CONTENTS
--------------------------------------------------------------------------------
.                       123 B     dir     0700    lwardeh   (directory)
..                      148 B     dir     0700    lwardeh   (directory)
dirwatch.c              6188 B    file    0600    lwardeh   /*#
example_link.txt        11 B      link    0777    lwardeh   --> example.txt
example.txt             0 B       file    0600    lwardeh   (empty)
Makefile                240 B     file    0600    lwardeh   # Configuration#
(truncated)
--------------------------------------------------------------------------------

total: 3 files, 2 directories, and 1 symlink
🔤

Crossword Anagram Generator

📅 April 2023 📍 Fundamentals of Computing

Overview

Designed a crossword puzzle generator in C that arranges intersecting words on a 15×15 board and outputs playable anagram-based clues. Implemented full puzzle creation logic, error handling, and multiple I/O modes.

Key Features

  • Word Processing: Reads up to 20 words (from user or file), filters invalid entries, and converts to uppercase
  • Board Generation: Builds crossword with proper spacing and single-letter intersections using a placement algorithm
  • Anagram Clues: Randomizes each valid word to produce clue hints
  • Three Output Modes: Interactive input, file input, and file-to-file processing
  • Puzzle Output:
    • Solution View: Words placed, unused cells marked with .
    • Puzzle View: Word spaces left blank, unused cells marked with #
    • Clue List: Start coordinate, direction (Across/Down), and anagram
C String Manipulation 2D Arrays Sorting File I/O Custom Data Structures Makefile

Screenshots

Enter a list of words followed by '.':
notredame
irish
football
computer
engineering
research
boxing
uganda
.


Solution:
+---------------+
|......U........|
|..C...G........|
|.FOOTBALL......|
|..M...N........|
|..P...D..N.....|
|..U...A.BOXING.|
|..T.....T......|
|..ENGINEERING..|
|..R.....E...I..|
|........D...R..|
|........A...I..|
|........M...S..|
|.....RESEARCH..|
|...............|
|...............|
+---------------+


Crossword Puzzle:
+---------------+
|###### ########|
|## ### ########|
|# ###### ######|
|## ### ########|
|## ### ## #####|
|## ### # ######|
|## ##### ######|
|## ##|
|## ###### ### #|
|######## ### #|
|######## ### #|
|######## ### #|
|##### #|
|###############|
|###############|
+---------------+

Clues:

 8, 3 Across ENNIGNIREGE
 5,10 Down   ETEMRDNOA
13, 7 Across EHAERRSRC
 2, 3 Down   MCORETPU
 3, 2 Across BAOTLLOF
 1, 7 Down   AAUNGD
 6, 9 Across OXGIBN
 9,14 Down   IHRIS
🔲

Conway's Game of Life

📅 March 2023 📍 Fundamentals of Computing

Overview

Simulated Conway's Game of Life on a 40×40 grid with both interactive and batch modes. Practiced 2D array manipulation, command-line processing, and animation techniques in C.

Key Features

  • Interactive Mode: Add/remove live cells, step through iterations, or animate continuously
  • Batch Mode: Loads a predefined scene from a text file and plays it automatically
  • Custom Animation: Used usleep() and system("clear") for visualizing cell evolution
  • Scene Design: Created a custom scene (myscene.txt) with still lifes, oscillators, gliders, and explosive patterns
  • Modular Architecture: Separated logic into multiple C files and used a Makefile for builds
C 2D Arrays Makefile Terminal Animation Command-Line Args

Interactive Mode

Enter a followed by two integers to add a new live cell.
Enter r followed by two integers to remove a live cell.
Enter n to advance the simulation to the next iteration.
Enter q to quit the game.
Enter p to play the game continuously.
Command: a 2 0
----------------------------------------
|                                      |
|                                      |
|X                                     |
|                                      |
|                                      |
|                                      |
|                                      |
|                                      |
|                                      |
|                                      |
|                                      |
|                                      |
|                                      |
|                                      |
|                                      |
|                                      |
|                                      |
|                                      |
|                                      |
|                                      |
|                                      |
|                                      |
|                                      |
|                                      |
|                                      |
|                                      |
|                                      |
|                                      |
|                                      |
|                                      |
|                                      |
|                                      |
|                                      |
|                                      |
|                                      |
|                                      |
|                                      |
|                                      |
|                                      |
|                                      |
----------------------------------------