
- OS - Home
- OS - Needs
- OS - Overview
- OS - History
- OS - Components
- OS - Structure
- OS - Architecture
- OS - Services
- OS - Properties
- OS - TAT & WAT
- OS Processes
- OS - Processes
- OS - Process Scheduling
- OS - Scheduling Algorithms
- FCFS Scheduling Algorithm
- SJF Scheduling Algorithm
- Round Robin Scheduling Algorithms
- HRRN Scheduling Algorithms
- Priority Scheduling Algorithms
- Multilevel Queue Scheduling
- Context Switching
- Operations on Processes
- Lottery Process Scheduling
- Predicting Burst Time SJF Scheduling
- Race Condition Vulnerability
- Critical Section Synchronization
- Mutual Exclusion Synchronization
- Process Control Block
- Inter Process Communication
- Preemptive and Non-Preemptive Scheduling
- Operating System - Deadlock
- Introduction to Deadlock in Operating System
- Conditions for Deadlock in Operating System
- OS Synchronization
- Operating System - Process Synchronization
- Operating System - Critical Section
- Operating System - Semaphores
- Operating System - Counting Semaphores
- Operating System - Mutex
- Operating System - Lock Variable in Process Synchronization
- Operating System - Turn Variable in Process Synchronization
- Operating System - Bounded Buffer Problem
- Operating System - Reader Writer Locks in Process Synchronization
- Operating System - Test Set Lock in Process Synchronization
- Operating System - Peterson Solution in Process Synchronization
- Operating System - Monitors in Process Synchronization
- Operating System - Sleep and Wake in Process Synchronization
- OS Memory Management
- OS - Memory Management
- OS - Virtual Memory
- OS Storage Management
- File Systems in Operating System
- Linked Index Allocation in Operating System
- Indexed Allocation in Operating System
- Structures of Directory in Operating System
- File Attributes in Operating System
- Operating System - Page Replacement
- Operating Systems - Thrashing
- Belady’s Anomaly in Page Replacement Algorithms
- Optimal Page Replacement Algorithm
- Operating System - Types
- Types of Operating System
- Batch Processing Operating System
- Multiprocessing Operating System
- Hybrid Operating System
- Monolithic Operating System
- Zephyr Operating System
- Nix Operating System
- Blackberry Operating System
- Garuda Operating System
- Tails Operating System
- Clustered Operating System
- Haiku Operating System
- AIX Operating System
- Solus Operating system
- Tizen Operating System
- Bharat Operating System
- Fire Operating System
- Bliss Operating System
- VxWorks Operating System
- Embedded Operating System
- Single User Operating System
- OS Miscellaneous
- OS - Multi-threading
- OS - I/O Hardware
- OS - I/O Software
- OS - Security
- OS - Linux
- OS Useful Resources
- OS - Quick Guide
- OS - Useful Resources
- OS - Discussion
Operating System - Reader Writer Locks in Process Synchronization
Reader-Writer Locks
The reader-writer problem in operating systems deals with managing access to shared data. It allows multiple readers to access the data simultaneously but ensures that only one writer can write at time, with no readers allowed to read during the writing the process.
This approach helps solve the fundamental issues in concurrent programming: providing safe access to shared resources.
Illustrating the reader-writer issues is important for demonstrating how data structures can be synchronized with guaranteed consistency and efficiency. The reader-writer problem describes situations where multiple processes or threads may need access to common resources, such as database or file.
This scenario highlights the necessity for effective synchronization mechanisms to balance the needs of readers and writers accessing the resources.
Concept of Readers and Writers
The Reader-Writer Problem is a synchronization issue in operating system that manages access to shared data by multiple threads or processes.
Readers: Processes that only read from the database.
Writers: Processes that read and modify(write) the database.
Challenges in Synchronization
The following are the challenges associated with the reader-writer problem in synchronization.
Concurrent Access: Multiple processes may want to either read or read and write to the database.
Reader-Reader Access: If two readers access the shared data simultaneously, there is no issue as they only read.
Writer Access: Problems arise when a writer and another process access the database at the same time.
If a writer is updating the data while a reader is reading, the reader might not read consistent data.
If two writers access the database simultaneously, conflicting changes can occur.
Solution of the Reader-Writer Problem
There are three fundamental solutions to the Readers-Writers problem:
Writer's Preference: Preference is given to the writers. This means writers arrive, they can proceed with their operations even if readers are currently accessing the resource.
Goal: The writers have exclusive access to the database,i.e., when a writer is accessing the data, no other process can access it.
Readers Preference: Preference is given to readers. This means that writers have to wait until readers have finished reading. Writers can only access the resource when no readers are accessing it.
Synchronization Using Semaphores
Semaphores solve the Reader's Writer's Problem, we use two semaphores and an integer variable:
Mutex semaphores: Used for mutual exclusion when updating the readcount variable.
Write Semaphore: Initialized to 1, shared between both readers and writers, and used to manage access for writing.
Readcount Variable: A normal integer variable that tracks the number of readers currently accessing the database.
Writer process
The writer process requests the write semaphore, and if it is available, it gains access to perform the write operation. During this time, no other process, whether a reader or another writer, can access the database while the writer holds the semaphore. Once the writing operation is completed, the writer signals the semaphore, releasing it for other process to use.
Reader Process
The reader process follows a series of steps to safely access the shared database.
Wait on the Mutex semaphore: No other process modifies the readcount variable while it's updated.
Increment the readcount: Each reader increments this variable when it starts reading.
First Reader: If the readcount equals, it waits on the write semaphore to prevent writers from accessing the database while reading.
Signal the Mutes Semaphore: After updating the readcount, the reader signals the mutex semaphore, allowing other readers to increment the readcount and enter the critical section.
Reading Operation: The reader reads the data.
Decrement the readcount: When the reader finishes, it decrements the readcount.
Last Reader: If readcount equals 0, the reader signals the write semaphore to allow a writer to access the database.
Problem Parameters
Problem parameters for the Reader-Writer process −
One set of data is shared among a number of processes.
Once a writer is ready, it performs its write. Only one writer may write at a time.
If a process is writing, no other process can read it.
If at least one reader is reading, no other process can write.
Readers may not write and only read.
Main Features of Solution
Following are the key concepts of the solution −
Writer Access: The writer can only access the database of no other reader or writer is using it, ensured by the write semaphore.
Reader Priority: Priority is given to readers. If one reader is accessing the database, no writer can modify it until all readers have finished.
Concurrency: Multiple readers can access the database simultaneously without any issues, but when a writer accesses the database, exclusive access is required.
Conclusion
This solution achieves synchronization between readers and writers through the use of semaphores, effectively preventing race conditions and ensuring the consistency of data in the shared database.