
Readers-Writers problem:
- The readers-writers interactions would happen frequently in real systems.
- It has some variations; each is centered on priority of writers and readers.
- The details for “first readers-writers problem” is displayed below:
- This problem favors readers.
- It needs that no reader must be kept waiting lest a writer has already been granted approval to use object.
- There should be no reader waiting due to waiting of writer.
- The details for “second readers-writers problem” is displayed below:
- This problem favors writers.
- It requires that after a writer is set to write, it performs write as fast as possible.
- A reader arriving after writer should wait, even if writer is also waiting.
- The “w” semaphore controls access to critical sections that access shared object.
- The “mutex” semaphore would protect admittance to shared variable “readcnt”.
- It counts number of readers currently in critical section.
- A writer locks “w” mutex each time it would enter critical section and unlocks it each time it leaves.
- This guarantees that there exists at most one writer in critical section at any time point.
- The first reader who enter critical section locks “w” and last reader to leave critical section unlocks it.
- The “w” mutex is ignored by readers who enter and leave while other readers are present.
- A correct solution to either of readers-writers problem could result in starvation.
- A thread is been blocked indefinitely and is failed from making progress.

Explanation of Solution
C code for readers-writers problem:
//Include libraries
#include <stdio.h>
#include "csapp.h"
//Define constants
#define WrteLmt 100000
#define Pple 20
#define N 5
//Declare variable
static int readtms;
//Declare variable
static int writetms;
//Declare semaphore variable
sem_t mtx;
//Declare semaphore variable
sem_t rdrcnt;
//Declare reader method
void *reader(void *vargp)
{
//Loop
while (1)
{
//P operation
P(&rdrcnt);
//P operation
P(&mtx);
//Increment variable
readtms++;
//V operation
V(&mtx);
//V operation
V(&rdrcnt);
}
}
//Declare writer method
void *writer(void *vargp)
{
//Loop
while (1)
{
//P operation
P(&mtx);
//Increment value
writetms++;
//If condition satisfies
if (writetms == WrteLmt)
{
//Display
printf("read/write: %d/%d\n", readtms, writetms);
//Exit
exit(0);
}
//V operation
V(&mtx);
}
}
//Declare init method
void init(void)
{
//Declare variables
readtms = 0;
//Declare variables
writetms = 0;
//Call method
Sem_init(&mtx, 0, 1);
//Call method
Sem_init(&rdrcnt, 0, N);
}
//Define main
int main(int argc, char* argv[])
{
//Declare variable
int li;
//Declare thread variable
pthread_t lTd;
//Call method
init();
//Loop
for (li = 0; li < Pple; li++)
{
//If condition satisfies
if (li%2 == 0)
//Call method
Pthread_create(&lTd, NULL, reader, NULL);
//If condition does not satisfies
else
//Call method
Pthread_create(&lTd, NULL, writer, NULL);
}
//Call method
Pthread_exit(NULL);
//Exit
exit(0);
}
Explanation:
- The reader method decrements the reader count and semaphore initially.
- The reading operation is performed after that.
- The reader count and semaphore values are incremented after the operation.
- The writer method decrements the semaphore variable initially.
- The write operation is then performed.
- If count reaches limit of writers, then display count.
- The semaphore values are incremented after the operation.
read/write: 142746/100000
Want to see more full solutions like this?
Chapter 12 Solutions
EBK COMPUTER SYSTEMS
- "Please, the answer must be documented from a book, experience, or accurate information without using artificial intelligence." Write an Arduino program to blink (flash) 8- LED's connected to pins (6-13) according to the following sequence: array with delay of 0.1s). (Note: Use Pin 6 Pin 7 Pin 8 Pin 9 Pin 10 Pin 11 Pin 12 Pin 13 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 1 1 0 0 0 0 0 1 1 11100 0 1 1 1 1 1 1 1 1 1 1 1 1 177 1 1 1 1 1 1 1 1arrow_forward"Please, the answer must be documented from a book, experience, or accurate information without using artificial intelligence." Suppose you have two push buttons connected to pins 7 & 8 and two LED's connected to pins 9 & 10 of an Arduino. Write a program to turn ON the LED's if the two push buttons are pressed according to the following scenario. push buttons push buttons LED (pin9) LED (pin10) Delay (pin7) (pin8) open open HIGH HIGH 2s closed open LOW HIGH 1s open closed HIGH LOW 1s closed closed LOW LOW 3sarrow_forward"Please, the answer must be documented from a book, experience, or accurate information without using artificial intelligence." OF ENG Connect 8 LED's and one push button to an Arduino, write a program to glow the LED's in series one by one when the button is pressed. When the button is released it should stop and restart again when the button is pressed hold. And when the LED's sequence is complete it should stop and shouldn't restart unless the button is released and repressed.arrow_forward
- "Please, the answer must be documented from a book, experience, or accurate information without using artificial intelligence." Write an Arduino program to read the status of two push buttons COLED's connected to pins 2&3 respectively and flash ON two connected to pins 12&13 respectively according to the following scenario: If pin 2 is HIGH let LED 12 flash with delay of 400ms, and if pin 3 HIGH, let LED 13 flash ON with delay of 300ms.arrow_forward"Please, the answer must be documented from a book, experience, or accurate information without using artificial intelligence." Write an Arduino program to obtain the complement following input sequence (1011) by using switch connected to pin11 and one LED connected to pin12. one push of the buttonarrow_forward"Please, the answer must be documented from a book, experience, or accurate information without using artificial intelligence." Suppose you have two push buttons connected to pins 7,8 and two LED's connected to pins 9,10 of an Arduino. Write a program to turn ON/OFF the LED's if the two push buttons are pressed according to the following scenarios: S7 S$ L9 L10 Delay 0 0 1 1 2s 1 0 0 1 1s 1 1 0 1s 0 0 3s EERINGarrow_forward
- "Please, the answer must be documented from a book, experience, or accurate information without using artificial intelligence." Write an Arduino program to read the status of two push buttons connected to pins 2&3 respectively and flash ON two LED's connected to pins 12&13 respectively according to the following scenario: If pin 2 is HIGH let LED 12 flash with delay of 400ms, and if pin 3 HIGH, let LED 13 flash ON with delay of 300ms.arrow_forward"Please, the answer must be documented from a book, experience, or accurate information without using artificial intelligence." Suppose you have 4-LED's connected to pins (10,11,12,13) and 2-Switches connected to pins (4,5) of an Arduino, write program to turn ON 10&12 while turning OFF 11&13 for 350ms by pressing the switch connected to pin 4. Then turn ON 10&11 while turning OFF 12&13 for 400ms when pressing the switch connected to pin 5.arrow_forwardCan you write the following C program into ARMv8 Assembly Language?long long int f(long long int n, long long int k) { long long int b; b=k+2; if (n==0) b = 8; else b = b + 4 * n + f(n-1,k+1); return b + k; }Can you make sure to properly save and restor registers across prodcedure calls, and assume that the procedure starts at address 0x00400100. Additionally, can you keep variable b at X19, and assume n and k are passed in X0 and X1. The result is returned in X0arrow_forward
- No Ai, find the correct answer to this question. Because all the rest ive found or tried are wrong. Show the steps.arrow_forwardCould you use pencil and paper, NO AI. Make it the correct answer, Dont use ai to solve this. I keep getting different answer. When ever I try it. Use this: Make a database with multiple tables from attributes as shown above that are in 3NF, showing PK, non-key attributes, and FK for each table? Assume the tables are already in 1NF. [Hint: 3 tables will result after deducing 1NF -> 2NF -> 3NF]arrow_forwardPlease answer the JAVA OOP Programming Assignment scenario below: Patriot Ships is a new cruise line company which has a fleet of 10 cruise ships, each with a capacity of 300 passengers. To manage its operations efficiently, the company is looking for a program that can help track its fleet, manage bookings, and calculate revenue for each cruise. Each cruise is tracked by a Cruise Identifier (must be 5 characters long), cruise route (e.g. Miami to Nassau), and ticket price. The program should also track how many tickets have been sold for each cruise. Create an object-oriented solution with a menu that allows a user to select one of the following options: 1. Create Cruise – This option allows a user to create a new cruise by entering all necessary details (Cruise ID, route, ticket price). If the maximum number of cruises has already been created, display an error message. 2. Search Cruise – This option allows to search a cruise by the user provided cruise ID. 3. Remove Cruise – This op…arrow_forward
- Computer Networking: A Top-Down Approach (7th Edi...Computer EngineeringISBN:9780133594140Author:James Kurose, Keith RossPublisher:PEARSONComputer Organization and Design MIPS Edition, Fi...Computer EngineeringISBN:9780124077263Author:David A. Patterson, John L. HennessyPublisher:Elsevier ScienceNetwork+ Guide to Networks (MindTap Course List)Computer EngineeringISBN:9781337569330Author:Jill West, Tamara Dean, Jean AndrewsPublisher:Cengage Learning
- Concepts of Database ManagementComputer EngineeringISBN:9781337093422Author:Joy L. Starks, Philip J. Pratt, Mary Z. LastPublisher:Cengage LearningPrelude to ProgrammingComputer EngineeringISBN:9780133750423Author:VENIT, StewartPublisher:Pearson EducationSc Business Data Communications and Networking, T...Computer EngineeringISBN:9781119368830Author:FITZGERALDPublisher:WILEY





