Feature #14: Releasing Process Lock
Explore techniques to find which process did not release a lock on shared resources by analyzing log files. Learn to apply binary search effectively on even indices and understand the underlying OS concepts of process synchronization and mutual exclusion to solve this problem efficiently.
We'll cover the following...
Description
Processes acquire and release locks on shared resources, which must be accessed with mutual exclusion. Whenever a process acquires a lock, the OS writes the corresponding process ID in a log file. Similarly, whenever the process releases the lock, the process ID is written to the log file again. Suppose that several processes acquired locks on a shared resource, but only one of these processes released the lock.
In this feature, we want to figure out which process did not release the lock. Each process is assigned a number, according to the order in which it acquired the lock. So, the first process that acquired the lock is given the number 1, the second process that acquired the lock is given the number 2, and so on. We will be given a list of integers, representing the order in which the lock was acquired and released. We have to return the process number that did not release the lock.
Let’s look at an example of this:
Solution
We will use binary search only on the even indices to solve this problem. First, we will set the following variables:
lo