Model of Readers and Writers Problem The readers and writers problem is a generalization of the critical section problem. Here there are two kinds of processes: readers and writers. They all have a critical section that accesses a shared database. The readers only want to read the database, while the writers want to write to it. As with the critical section problem, at any time, a process is either not in its critical section and not trying to get in, or trying to get in, or in its critical section. The difference here is that if a reader is trying to read the database and no writer is writing to it, then the reader will start reading, even if other readers are already reading. On the other hand, a writer may not start writing if any ther process is either reading or writing to the database. Your assignment is to design a protocol for two readers and two writers that satisfies the following: 1) If a reader or writer is trying to access the database, then eventually it will get access. 2) If a reader wants to read the database and no writer is writing to it, then the reader will start reading at the next step. 3) A writer may not start writing if any reader is reading or another writer is writing. Your model should have two instantiations each for the readers and writers. It should execute asynchronously. Also, express the three conditions above as specifications, which should be satisfied by your model.