(5) At the end of chapter 2, we studied a solution to the readers and writers problem, given below: typedef int semaphore; semaphore mutex = 1; semaphore db = 1; int rc = 0; void reader(void) { while (TRUE){ down(&mutex): rc = rc + 1; if (rc == 1) down(&db); up(&mutex): read data base(); down(&mutex): rc=rc-1; if (rc== 0) up(&db); up(&mutex); use_data_read(): void writer(void) ( while (TRUE) { think_up_data(); down(&db); write data base(); up(&db); /use your imagination / / controls access to 'rc" / / controls access to the database/ /# of processes reading or wanting to / / repeat forever / /get exclusive access to 'rc' / / one reader more now */ / if this is the first reader..../ /* release exclusive access to 'rc' / /access the data / /* get exclusive access to 'rc' / /* one reader fewer now */ / if this is the last reader..../ / release exclusive access to 're" / /* noncritical region / Page 2 /* repeat forever */ /* noncritical region / /* get exclusive access / /* update the data / /* release exclusive access / In this solution, as long as one reader is having the resource any new reader can get access to the resource. Thus, the writer will have to wait for an opportunity for all the readers to release the resource to have an exclusive access to that resource. Here, you have to modify the solution so that once the writer expresses interest to have the resource, no new reader will be granted access to the resource and the new reader(s) will have to wait for the writer to avail the resources exclusively and then to release the resource. Of course, after expressing interest the writer will also have to wait for all the existing resource-occupying- reader(s) to be done and release the resource.

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question
(5) At the end of chapter 2, we studied a solution to the readers and writers problem,
given below:
typedef int semaphore;
semaphore mutex = 1;
semaphore db = 1;
int rc == 0;
void reader(void)
{
while (TRUE){
down(&mutex):
rc = rc + 1;
if (rc == 1) down(&db);
up(&mutex);
read_data_base();
down(&mutex):
rc = rc - 1;
if (rc == 0) up(&db);
up(&mutex);
use_data_read():
void writer(void)
{
while (TRUE) {
think_up_data();
down(&db);
write data base();
up(&db);
/* use your imagination /
/* controls access to 'rc' /
/* controls access to the database/
/* # of processes reading or wanting to */
/* repeat forever /
/* get exclusive access to 'rc' /
/* one reader more now */
/* if this is the first reader..../
/* release exclusive access to 'rc' */
/* access the data */
/* get exclusive access to 'rc' */
/* one reader fewer now */
/* if this is the last reader..../
/* release exclusive access to 'rc' */
/* noncritical region */
Page 2
/* repeat forever */
/* noncritical region */
/* get exclusive access */
/* update the data */
/* release exclusive access */
In this solution, as long as one reader is having the resource any new reader can get access to the
resource. Thus, the writer will have to wait for an opportunity for all the readers to release the
resource to have an exclusive access to that resource.
Here, you have to modify the solution so that once the writer expresses interest to have the
resource, no new reader will be granted access to the resource and the new reader(s) will have to
wait for the writer to avail the resources exclusively and then to release the resource. Of course,
after expressing interest the writer will also have to wait for all the existing resource-occupying-
reader(s) to be done and release the resource.
Transcribed Image Text:(5) At the end of chapter 2, we studied a solution to the readers and writers problem, given below: typedef int semaphore; semaphore mutex = 1; semaphore db = 1; int rc == 0; void reader(void) { while (TRUE){ down(&mutex): rc = rc + 1; if (rc == 1) down(&db); up(&mutex); read_data_base(); down(&mutex): rc = rc - 1; if (rc == 0) up(&db); up(&mutex); use_data_read(): void writer(void) { while (TRUE) { think_up_data(); down(&db); write data base(); up(&db); /* use your imagination / /* controls access to 'rc' / /* controls access to the database/ /* # of processes reading or wanting to */ /* repeat forever / /* get exclusive access to 'rc' / /* one reader more now */ /* if this is the first reader..../ /* release exclusive access to 'rc' */ /* access the data */ /* get exclusive access to 'rc' */ /* one reader fewer now */ /* if this is the last reader..../ /* release exclusive access to 'rc' */ /* noncritical region */ Page 2 /* repeat forever */ /* noncritical region */ /* get exclusive access */ /* update the data */ /* release exclusive access */ In this solution, as long as one reader is having the resource any new reader can get access to the resource. Thus, the writer will have to wait for an opportunity for all the readers to release the resource to have an exclusive access to that resource. Here, you have to modify the solution so that once the writer expresses interest to have the resource, no new reader will be granted access to the resource and the new reader(s) will have to wait for the writer to avail the resources exclusively and then to release the resource. Of course, after expressing interest the writer will also have to wait for all the existing resource-occupying- reader(s) to be done and release the resource.
Expert Solution
steps

Step by step

Solved in 2 steps

Blurred answer
Knowledge Booster
Declaring and Defining the Function
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education