A centralized repository for low-level systems programming, architectural explorations, and Linux kernel interactions. This project tracks the development of core engineering skills, focusing on process management, memory allocation, and hardware-software interfacing.
- Languages: C, Java, Bash
- Environment: Linux (Ubuntu/Debian) / JVM
- Compiler: GCC, JDK 17+
- Build Tools: Make
Focuses on the fundamentals of process creation and shell integration.
- Core Concepts:
fork(),execlp(), child process spawning, and Bash automation. - Project: A C-based shell wrapper that executes custom Bash scripts for automated system logging and directory structuring.
Explores real-time kernel data and process synchronization.
- Core Concepts:
waitpid(),execvp(), multi-process synchronization, and POSIX system calls. - Project: An end-to-end system info collector that spawns independent child processes to capture kernel versions, uptime, and hardware utilization.
Explores concurrent execution and resource protection using Java Threads.
- Core Concepts: Thread Lifecycle (
start,join), Race Conditions, and Monitors viasynchronized. - Project: A shared ATM simulation demonstrating how concurrent withdrawals lead to data inconsistency and how to resolve it using mutual exclusion.
Ensure you have the following installed:
sudo apt update && sudo apt install build-essentialsudo apt install default-jdkNavigate to any sub-directory to find specific build instructions. Generally:
- C Projects: Use the provided
Makefile. - Java Projects: Use
javac FileName.javato compile andjava FileNameto run.
Developed by: Youssef Walid Elsayed Zaki