In this lab you simulate one of the classica synchronization problenms in órder tð see how the (semi) critical section problem could be implemented using binary and counting semaphores. 5 processes are characterized by 3 readers and 2 writers. Up to two reader processes can be inside their critical section without any writer process. For writer process to go into its critical section, it should check whether there is any reader or writer process is in the critical section. Critical section in this problem is reading shared data buffer for reader processes and updating shared data buffer for writer processes. It is optional to implement real shared data for readers and writers, but you have to specify clearly following things in your sample output. • When reader or writer process enters its critical section, it has to report whether there are any

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

Please complete in C++, simulate multithreading using switch statements in the main and each reader or writer is comprised of a big switch statement.  

In this lab you will simulate one of the classical synchronization problems in order to see how the
(semi) critical section problem could be implemented using binary and counting semaphores.
5 processes are characterized by 3 readers and 2 writers.
Up to two reader processes can be inside their critical section without any writer process. For
writer process to go into its critical section, it should check whether there is any reader or writer
process is in the critical section.
Critical section in this problem is reading shared data buffer for reader processes and updating
shared data buffer for writer processes. It is optional to implement real shared data for readers and
writers, but you have to specify clearly following things in your sample output.
• When reader or writer process enters its critical section, it has to report whether there are any
reader(s) or writer(s) other than itself.
• You may print out the data you read or write when you implement real buffer. (Optional)
• You have to include “Panic Messages" generating function in your code when the rules behind
this semi critical section problem are not observed. If your solution is correct, the panic message
should not be printed.
In your main program, you run a random number generator function to choose process to execute.
The chosen process starts (resumes) execution and after single instruction, it will be returned to
the main function and next process to run will be chosen by the result of another random number
generator function. (You should force each process run exactly one instruction then returns and
waiting for its turn.)
You should implement this project with switch statement in C or C++. Do not use any multi-
threading nor mutex lock features from programming language level. Each (reader or writer)
process is comprised of one big switch statement and will be returned after each instruction. You
need to keep track of global program counter per process to resume at the right place.
Subproject 1: You should implement this with binary and counting semaphores.
Subproject 2: You should implement this with testandset function.
Transcribed Image Text:In this lab you will simulate one of the classical synchronization problems in order to see how the (semi) critical section problem could be implemented using binary and counting semaphores. 5 processes are characterized by 3 readers and 2 writers. Up to two reader processes can be inside their critical section without any writer process. For writer process to go into its critical section, it should check whether there is any reader or writer process is in the critical section. Critical section in this problem is reading shared data buffer for reader processes and updating shared data buffer for writer processes. It is optional to implement real shared data for readers and writers, but you have to specify clearly following things in your sample output. • When reader or writer process enters its critical section, it has to report whether there are any reader(s) or writer(s) other than itself. • You may print out the data you read or write when you implement real buffer. (Optional) • You have to include “Panic Messages" generating function in your code when the rules behind this semi critical section problem are not observed. If your solution is correct, the panic message should not be printed. In your main program, you run a random number generator function to choose process to execute. The chosen process starts (resumes) execution and after single instruction, it will be returned to the main function and next process to run will be chosen by the result of another random number generator function. (You should force each process run exactly one instruction then returns and waiting for its turn.) You should implement this project with switch statement in C or C++. Do not use any multi- threading nor mutex lock features from programming language level. Each (reader or writer) process is comprised of one big switch statement and will be returned after each instruction. You need to keep track of global program counter per process to resume at the right place. Subproject 1: You should implement this with binary and counting semaphores. Subproject 2: You should implement this with testandset function.
Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 3 steps with 5 images

Blurred answer
Knowledge Booster
Algebraic Expressions
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