Question
CS4315 Operating Systems Lab 3: Basic Synchronization using Mutex In this lab work we will do some practice about basic synchronization. Question 1 is about
CS4315 Operating Systems
Lab 3: Basic Synchronization using Mutex
In this lab work we will do some practice about basic synchronization.
Question 1 is about creating threads and each thread runs a different function.
Question 2 and 3 are about mutex lock (acquiring a lock and releasing a lock).
1. Run the following C program (tprog1.c) and observe the result on the screen.
#include
#include
#include
#include
// These two functions will run concurrently
void* print_i(void *ptr)
{
printf("I am in i ");
}
void* print_j(void *ptr)
{
printf("I am in j ");
}
int main()
{
pthread_t t1,t2;
int rc1 = pthread_create(&t1, NULL, print_i, NULL);
int rc2 = pthread_create(&t2, NULL, print_j, NULL);
exit(0);
}
2. Run the following C program (tprog2.c) and observe the result on the screen. Briefly explain why we may get the interleaving messages from these two processes.
#include
#include
#include
#include
void* print_i(void *ptr)
{
printf("1: I am ");
sleep(1);
printf("in i ");
}
void* print_j(void *ptr)
{
printf("2: I am ");
sleep(1);
printf("in j ");
}
int main()
{
pthread_t t1,t2;
int rc1 = pthread_create(&t1, NULL, print_i, NULL);
int rc2 = pthread_create(&t2, NULL, print_j, NULL);
exit(0);
}
3. Add mutex locks to tprog2.c to achieve synchronization, and then observe the result on your screen.
Submit the following on Blackboard: 1) a text file (e.g. q2.txt) that includes your answer to question 2.
2) tprog3.c (i.e., tprog2.c with mutex lock) 3) a screenshot of running tprog3
If you like you can include 1-3 in one document, e.g. a word file.
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started