Problem 2. In addition to POSIX semaphores, the POSIX threads standard provides another useful synchronization primitives: the muter (type pthread_mutex_t) A mutex is used to wait for it implement mutual exclusion. A thread locks a mutex variable by calling pthread_mutex_lock(), and unlocks it by calling pthread_mutex_unlock(). When a thread calls pthread_mutex_lock() while another thread has previously locked the same mutex but not yet unlocked it, the former thread blocks until the latter thread calls pthread_mutex_unlock() on it. a. Is there any difference between a binary semaphore and a pthread_mutex? Justify your answer. b. Consider a program with multiple threads running this function: struct {...} shared_data; pthread_mutex_t m; void *thread_func(void *arg) { [update shared_data]; // critical section! return NULL; } Assume the mutex is initialized before the threads are created. Add the necessary pthread_mutex_* calls to the above code to ensure that only one thread is in the critical section at any time. c. Consider the program below, where ". . ." represents code that updates a shared data structure.
Problem 2. In addition to POSIX semaphores, the POSIX threads standard provides another useful synchronization primitives: the muter (type pthread_mutex_t) A mutex is used to wait for it implement mutual exclusion. A thread locks a mutex variable by calling pthread_mutex_lock(), and unlocks it by calling pthread_mutex_unlock(). When a thread calls pthread_mutex_lock() while another thread has previously locked the same mutex but not yet unlocked it, the former thread blocks until the latter thread calls pthread_mutex_unlock() on it. a. Is there any difference between a binary semaphore and a pthread_mutex? Justify your answer. b. Consider a program with multiple threads running this function: struct {...} shared_data; pthread_mutex_t m; void *thread_func(void *arg) { [update shared_data]; // critical section! return NULL; } Assume the mutex is initialized before the threads are created. Add the necessary pthread_mutex_* calls to the above code to ensure that only one thread is in the critical section at any time. c. Consider the program below, where ". . ." represents code that updates a shared data structure.
Chapter11: Operating Systems
Section: Chapter Questions
Problem 14VE
Related questions
Question
Expert Solution
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
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
Systems Architecture
Computer Science
ISBN:
9781305080195
Author:
Stephen D. Burd
Publisher:
Cengage Learning
Systems Architecture
Computer Science
ISBN:
9781305080195
Author:
Stephen D. Burd
Publisher:
Cengage Learning