Operating Systems
Assignment 1: Multithreaded Zero-Day Attack
Goals:
- Understand the complexities of zero-day attacks and the necessity of quick patch deployment to protect systems.
- Implement a parallel solution using Java multithreading to analyze system logs for potential vulnerabilities.
- Gain experience working with the Levenshtein Distance algorithm to detect patterns in log files.
- Manage multiple threads dynamically, adjusting the number of worker threads based on the detection rate of vulnerabilities.
Assignment 2: Dining Philosophers Problem
Goals:
- Extend the classical Dining Philosophers synchronization problem by implementing additional behaviors, such as talking.
- Utilize Java's synchronization primitives, such as
wait()andnotifyAll(), to ensure a deadlock- and starvation-free solution. - Implement the Monitor class to manage philosophers' behaviors, including eating, thinking, and talking, and to ensure safe access to shared resources like chopsticks and pepper shakers.
- Explore the challenges of dynamic thread management by modifying the number of philosophers during execution.
Assignment 3: Simulating Round Robin Process Scheduling
Goals:
- Implement a simulation of a process scheduler using a round-robin scheduling algorithm.
- Develop a non-preemptive scheduler that allocates CPU time based on the remaining execution time of processes, ensuring fairness and preventing starvation.
- Simulate processes using threads in Java, allowing only one process to run on the CPU at a time.
- Analyze and report on the effectiveness of the round-robin technique compared to other scheduling algorithms.