This repository includes a collection of real-time and concurrent system projects developed in C++. The goal of these projects is to explore the use of multiprocessing, multithreading, shared memory, semaphores, and signal handling, along with graphical interfaces built using OpenGL. Each project demonstrates a different aspect of process or thread management in practical, simulated environments.
A simulation where multiple racers compete in sequence, each running a defined distance before passing control to the next racer.
- Concepts used: Multiprocessing,
exec(),fork(), and signal handling (interrupts). - Highlights: Demonstrates inter-process communication and synchronization between racers.
- Interface: Simple graphical representation built with OpenGL.
A multi-process system that simulates users entering a virtual ministry to check their documents.
- Concepts used: Multiprocessing, shared memory, and semaphores.
- Highlights: Focuses on resource sharing and controlled access to critical sections.
- Interface: Visualized through OpenGL to show user interactions and document flow.
A multithreaded simulation representing the workflow inside a chocolate factory.
- Concepts used: Multithreading, semaphores, and alarms for task coordination.
- Highlights: Threads represent different stages of the production line, such as mixing, molding, and packaging.
- Interface: Animated with OpenGL to illustrate thread synchronization and process timing.
A small program written in assembly language for a PIC microcontroller.
- Purpose: Demonstrates low-level control and hardware interaction.
- Tools: Developed and tested on a physical PIC device.
- Languages: C++, Assembly
- Libraries: OpenGL
- Concepts: Multiprocessing, Multithreading, Shared Memory, Semaphores, Signals, Alarms
- Build Tools: Makefile
- Clone the repository:
git clone https://github.com/ahmaide/RealTime-Systems-Multiprocessing-Multithreading.git cd RealTime-Systems-Multiprocessing-Multithreading