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
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
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.](/v2/_next/image?url=https%3A%2F%2Fcontent.bartleby.com%2Fqna-images%2Fquestion%2F0bf3b1dd-b518-4086-8e59-5352a58e0405%2Fa3fd63c0-c815-49e7-a190-e6d537c41c4a%2F9x5gesg_processed.jpeg&w=3840&q=75)
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
![](/static/compass_v2/shared-icons/check-mark.png)
This question has been solved!
Explore an expertly crafted, step-by-step solution for a thorough understanding of key concepts.
This is a popular solution!
Trending now
This is a popular solution!
Step by step
Solved in 3 steps with 5 images
![Blurred answer](/static/compass_v2/solution-images/blurred-answer.jpg)
Knowledge Booster
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.Recommended textbooks for you
![Database System Concepts](https://www.bartleby.com/isbn_cover_images/9780078022159/9780078022159_smallCoverImage.jpg)
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)](https://www.bartleby.com/isbn_cover_images/9780134444321/9780134444321_smallCoverImage.gif)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
![Digital Fundamentals (11th Edition)](https://www.bartleby.com/isbn_cover_images/9780132737968/9780132737968_smallCoverImage.gif)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
![Database System Concepts](https://www.bartleby.com/isbn_cover_images/9780078022159/9780078022159_smallCoverImage.jpg)
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)](https://www.bartleby.com/isbn_cover_images/9780134444321/9780134444321_smallCoverImage.gif)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
![Digital Fundamentals (11th Edition)](https://www.bartleby.com/isbn_cover_images/9780132737968/9780132737968_smallCoverImage.gif)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
![C How to Program (8th Edition)](https://www.bartleby.com/isbn_cover_images/9780133976892/9780133976892_smallCoverImage.gif)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
![Database Systems: Design, Implementation, & Manag…](https://www.bartleby.com/isbn_cover_images/9781337627900/9781337627900_smallCoverImage.gif)
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
![Programmable Logic Controllers](https://www.bartleby.com/isbn_cover_images/9780073373843/9780073373843_smallCoverImage.gif)
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education