ocr: ENTER (DataLock) ENTER(DataLock) Inc Activekeaders) Inc Activewriters) Activeuriters = 0? ReadingReaders == 0? I I N Y N Inc Readingkeaders) Inc Uritinguriters) SIGNAL (ReaderSem) SIGNAL (Uritersem) LEAVE (Datalock) LEAVE (Datalock) WAIT(ReaderSem) WAIT(WriterSem) ENTER (WriteLock) Perform: read operations. Perform write operations. ENTER DataLock) LEAVE (WriteLOCK) Dec ReadingReaders) Dec(ActiveReaders) ENTER(DataLock) Readingkeaders = 0? Dec (Uritinguriters) N Dec Activewriters) UritingUriters < Activeuriters == 0? activewriters? N N Readingkeaders < Inc Uritinguriters) Activereeaders? SIGNA ...