A Processes Simulator written in C, featuring a graphical interface using GTK-3 for process management and OS simulation. This project allows users to visualize and experiment with process scheduling and management algorithms via an interactive GUI.
This project simulates the management of processes as performed by an operating system, using a GTK-3 graphical interface for visualization. It's ideal for students and educators to understand:
- Process creation and termination
- Scheduling algorithms (FCFS, Round Robin, etc.)
- Context switching
- Process states and transitions
- GUI-based simulation and control
- Written in C with a GTK-3 graphical user interface
- Modular code for easy extension and customization
- Multiple scheduling algorithms
- Command-line and GUI interface
- Educational and demonstrative
- GCC or any compatible C compiler
- GTK-3 development libraries
On Ubuntu/Debian:
sudo apt update
sudo apt install build-essential libgtk-3-devOn Fedora:
sudo dnf install gcc make gtk3-develOn macOS (with Homebrew):
brew install gtk+3-
Clone the repository:
git clone https://github.com/Seif2005/Processes-Simulator.git cd Processes-Simulator -
Compile the project with GTK-3:
- If a
Makefileis provided, simply run:make
- Otherwise, compile manually (for example, if your main file is
os_simulator.cand there are other.cfiles needed):gcc -o os_simulator os_simulator.c Queues.c MS2.c `pkg-config --cflags --libs gtk+-3.0`
- If a
-
Check for additional dependencies:
- Ensure all required
.cand.hfiles are included in the compile command or Makefile.
- Ensure all required
To run the graphical OS simulator:
./os_simulator- The GTK-3 GUI will open, allowing you to interact with and visualize the process simulation.
- Follow on-screen menus or prompts to perform actions such as creating, terminating, or scheduling processes.
Processes-Simulator/
├── os_simulator.c # Main source file with GTK-3 GUI
├── *.c, *.h # Other supporting C source/header files
├── Makefile # Build instructions (if available)
├── README.md # Project documentation
└── ... # Other files (examples, input, etc.)
Contributions are welcome! Please open issues or submit pull requests for bug fixes, improvements, or new features.
This project is open source. Add a LICENSE file if a specific license is required.
For questions or suggestions, open an issue or contact Seif2005.