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
Computer Systems: A Programmer's Perspective (3rd Edition)
- The Reflection algorithm can be used to encrypt a C-string (character array terminated with the null character) before it is transmitted over the Internet. The Reflection algorithm works as follows: Each letter in the message is converted to the letter in that is 13 positions to the right of that letter in the English alphabet. If the end of the alphabet is reached, counting continues from the first letter in the alphabet. The case of the letters must be maintained. For example,'M' →'Z', 'x' → 'k', 'A' → 'N'The numeric characters ('0' to '9') are shifted 5 positions to the right of that number in the character set '0' to '9'. If ‘9’ is reached, counting continues from ‘0’. For example,'0' → '5', '2' →'7', '8' → '3' All other characters are left as they are. a) What would the following string be encrypted to by the Reflection algorithm?“Call me at 662-2002 Ext 85393” b) Write a function, getPosition, which finds the position of a letter in the alphabet regardless of the case of the…arrow_forwardPlease do not give solution in image formate thanku. Write a Python code for the following scenario : 1: Use Breadth First Search and Recursive Best First Search and implement the algorithms in Python. The program should be able to dynamically take in start and goal nodes from the user at run time. Compare to interpret the results in terms of the algorithm working, performance & shortest path if obtained relevant to the given problem 2: Print the minimum connections that keep the whole network up and running. For each incremental depth limit, the corresponding node generating sequence should be legibly printed in the result Consider Heuristic Value as : The edge cost is an approximation towards the transmission cost between any pair of nodes. For heuristic design, consider all the possible paths between any arbitrary node n to the goal node. The average of the total transmission cost across all these paths is the heuristic value h(n) Consider the following undirected graph…arrow_forwardCorrect answer will be upvoted else downvoted. Computer science. You are given two integers n and k. You ought to make a variety of n positive integers a1,a2,… ,a to such an extent that the total (a1+a2+⋯+an) is distinguishable by k and greatest component in an is least conceivable. What is the base conceivable most extreme component in a? Input The primary line contains a solitary integer t (1≤t≤1000) — the number of experiments. The solitary line of each experiment contains two integers n and k (1≤n≤109; 1≤k≤109). Output For each experiment, print one integer — the base conceivable most extreme component in cluster a to such an extent that the aggregate (a1+⋯+an) is distinct by k.arrow_forward
- Correct answer will be upvoted else downvoted. Computer science. positive integer is the gcd of that integer with its amount of digits. Officially, gcdSum(x)=gcd(x, amount of digits of x) for a positive integer x. gcd(a,b) means the best normal divisor of an and b — the biggest integer d to such an extent that the two integers an and b are detachable by d. For instance: gcdSum(762)=gcd(762,7+6+2)=gcd(762,15)=3. Given an integer n, track down the littlest integer x≥n to such an extent that gcdSum(x)>1. Input The primary line of input contains one integer t (1≤t≤104) — the number of experiments. Then, at that point, t lines follow, each containing a solitary integer n (1≤n≤1018). All experiments in a single test are unique. Output Output t lines, where the I-th line is a solitary integer containing the response to the I-th experiment.arrow_forwardC-F languages (or see the following figure). In particular..it points out that the language {am,a"b" | m,n = N} is a deterministic C-F language, but not LL(k) for any k Palindromes over {a, b} Non-deterministic C-F {am,a"b" | m.ne N}; Deterministic C-F -LL(K) {ab❘n EN}- Regular To show the language is not LL(k) for any k, note that a grammar for this language is SAB A→ B -> 10 or S-A|B A→ B (you only need to answer one case here, either one). The language contains A as an element. Now consider the case k = 1 and consider the input string ab. When the first symbol is scanned, we get an 'a'. This information alone is not enough for us to make a proper choice. So we don't even know what to do with the first step in | the parsing process. For k = 2, if we consider the input string aabb, we face the same problem. For any k > 2, the input string ab would cause exactly the same problem. So this grammar is not LL(k) for any k. On the other hand, by putting proper instructions into the blanks…arrow_forwardProblem Alice was given a number line containing every positive integer, x, where 1<=x<=n. She was also given m line segments, each having a left endpoint, l (1<=l<=n), a right endpoint, r (1<=r<=n), and an integer weight, w. Her task is to cover all numbers on the given number line using a subset of the line segments, such that the maximum weight among all the line segments in the chosen subset is minimal. In other words, let S=(l1,r1,w1),(l2,r2,w2),....,(lk,rk,wk), represent a set of k line segments chosen by Alice, max(w1,w2,...,wk) should be minimized. All numbers 1,2,....n should be covered by at least one of k the chosen line segments. It is okay for the chosen line segments to overlap. You program should output the minimized maximum weight in the chosen subset that covers all the numbers on the number line, or -1 if it is not possible to cover the number line. Input format The first line of the input contains an integer, n - denoting the range of numbers…arrow_forward
- Given an integer say 45, to find the sum of 45 with 8 in binary form (see the figure below), we can use the TM designed in slides 79-90 of the notes "Turing Machines and Equivalent Models I" twice to find the result. A more effective way is to design a TM to do the addition with 8 directly. 1000 101101 A + = ? Such a TM can be designed by extending the TM designed in slides 79-90 of the notes "Turing Machines and Equivalent Models I". The TM has 14 instructions and 6 states: 0, 1, 2, 3, 4, and halt. Six instructions of such a TM have been given in the first and the second tables below. Fill out the remaining blanks in the first and the second tables and also blanks in the third table to show the remaining instructions of the TM (you have to use your own text boxes here)arrow_forwardCorrect answer will be upvoted else downvoted. Computer science. You are given three positive (more prominent than nothing) integers c, d and x. You need to track down the number of sets of positive integers (a,b) with the end goal that balance c⋅lcm(a,b)−d⋅gcd(a,b)=x holds. Where lcm(a,b) is the most un-normal various of an and b and gcd(a,b) is the best normal divisor of an and b. Input The primary line contains one integer t (1≤t≤104) — the number of experiments. Each experiment comprises of one line containing three integer c, d and x (1≤c,d,x≤107). Output For each experiment, print one integer — the number of sets (a,b) to such an extent that the above uniformity holds.arrow_forwardCan you help me with this code because this is a little difficult for me:question that i need help with:The Lights Out puzzle consists of an m x n grid of lights, each of which has two states: on and off. The goal of the puzzle is to turn all the lights off, with the caveat that whenever a light is toggled, its neighbors above, below, to the left, and to the right will be toggled as well. If a light along the edge of the board is toggled, then fewer than four other lights will be affected, as the missing neighbors will beignored. In this section, you will investigate the behavior of Lights Out puzzles of various sizes by implementing a LightsOutPuzzle class task: A natural representation for this puzzle is a two-dimensional list of Boolean values, where True corresponds to the on state and False corresponds to the off state. In the LightsOutPuzzle class, write an initialization method __init__(self, board) that stores an input board of this form for future use. Also write a method…arrow_forward
- In the postfix expression evaluation example, the two most recentoperands are popped when an operator is encountered so thatthe subexpression can be evaluated. The first operand poppedis treated as the second operand in the subexpression, and thesecond operand popped is the first. Give and explain an examplethat demonstrates the importance of this aspect of the solution.arrow_forwardComputer science. Correct answer will be upvoted else downvoted. Think about a n by n chessboard. Its columns are numbered from 1 to n from the top to the base. Its sections are numbered from 1 to n from the passed on to one side. A cell on a convergence of x-th line and y-th section is indicated (x,y). The fundamental corner to corner of the chessboard is cells (x,x) for all 1≤x≤n. A stage of {1,2,3,… ,n} is composed on the fundamental slanting of the chessboard. There is actually one number composed on every one of the cells. The issue is to segment the cells under and on the principle askew (there are by and large 1+2+… +n such cells) into n associated areas fulfilling the accompanying imperatives: Each district ought to be associated. That implies that we can move from any cell of a locale to some other cell of a similar area visiting just cells of a similar district and moving from a cell to a neighboring cell. The x-th area ought to contain cell on the fundamental…arrow_forwardA ancient magnate is failing. His want is to have solely ONE of his descendant’s receive ALL of his treasure, however which one? He has N quantity of decendants. He works out a answer to locate the one fortunate baby who inherits his wealth. He will get N tokens, label every token with an integer fee and assign every token to a descendant. Each token receives a cost solely once. He locations all the tokens in a circle round him, numbered 1 to N, and begins removing one in K till there is solely one left... Write a software that takes two integer values N and K and prints the token wide variety of the fortunate decendant. Input Format The first line of the entry includes the two integers N and K. Constraints . zeroarrow_forward
- Database System ConceptsComputer ScienceISBN:9780078022159Author:Abraham Silberschatz Professor, Henry F. Korth, S. SudarshanPublisher:McGraw-Hill EducationStarting Out with Python (4th Edition)Computer ScienceISBN:9780134444321Author:Tony GaddisPublisher:PEARSONDigital Fundamentals (11th Edition)Computer ScienceISBN:9780132737968Author:Thomas L. FloydPublisher:PEARSON
- C How to Program (8th Edition)Computer ScienceISBN:9780133976892Author:Paul J. Deitel, Harvey DeitelPublisher:PEARSONDatabase Systems: Design, Implementation, & Manag...Computer ScienceISBN:9781337627900Author:Carlos Coronel, Steven MorrisPublisher:Cengage LearningProgrammable Logic ControllersComputer ScienceISBN:9780073373843Author:Frank D. PetruzellaPublisher:McGraw-Hill Education