Compilers and Processes
This section explores fundamental OS concepts, including process scheduling, memory management, and concurrency. I demonstrate CPU scheduling algorithms, semaphore-based synchronization, and a custom Linux shell. Additionally, I showcase a compiler parser, and a Bash script for automating console commands.
This screenshot illustrates five scheduling algorithms that manage process execution on CPU cores and GPU buses: first-come-first-serve, shortest-job-first, highest-priority-first, round-robin, and priority round-robin. Round-robin assigns time slices to processes in a cyclic order, while priority round-robin reinserts processes based on priority.
The terminal output follows the format "[Task Name] [Priority] [Remaining_Time]" for detailed analysis.
This example simulates two threads (teaching assistants) managing 10 jobs (students). Each student receives a random programming task before requiring further assistance.
The key takeaway is the importance of locking memory-sensitive operations. Proper locking ensures data integrity in multi-threaded environments, forming the foundation of concurrent programming.
This Linux shell intercepts and modifies user commands before passing them to the system.
It supports automated compilation and execution, along with commands like "pwd" (print working directory), "!!" (repeat last command), "ls" (list directory contents), output redirection, sorting, command history, and safe exit.
Next, I introduce the compiler parser I developed for my C-style language.
This photo showcases my lab setup, featuring multiple open terminals and VIM.
This Bash script automates frequently used terminal commands, specifically for Git submissions.