The world’s Largest Sharp Brain Virtual Experts Marketplace Just a click Away
Levels Tought:
Elementary,Middle School,High School,College,University,PHD
| Teaching Since: | Apr 2017 |
| Last Sign in: | 103 Weeks Ago, 3 Days Ago |
| Questions Answered: | 4870 |
| Tutorials Posted: | 4863 |
MBA IT, Mater in Science and Technology
Devry
Jul-1996 - Jul-2000
Professor
Devry University
Mar-2010 - Oct-2016
C program in linux
Consider the following code segment:
int pid = fork();
int c = 5;
if (pid == 0) /* child process */
{
fork();
c += 10;
}
else
{
c += 5;
}
Answer the following questions:
a) How many different copies of the variable c are there? What are their values?
(Hint: every process has a different copy of variable c) (10 points)
b) Draw the tree structure of processes (you might want to review the examples
in chapter 3 slides). (5 points)
4. Write a C program to simulate deposit/withdraw activities on a banking account.
(Hint: you might want to review Lab 3 slides.) (25 points)
ï‚· Declare the balance as a global variable and initialize it to 600.
ï‚· Write two functions, one for withdraw, the other for deposit. Both withdraw
and deposit functions have one parameter, which represent the amount to
withdraw or deposit. The functions deduct the balance and add to the balance
one dollar at a time, respectively. Therefore, to withdraw 600 thousands, for
example, the withdraw function has to execute a loop with 600 thousand
iterations. The deposit function works in the same way, in the reverse
direction.
ï‚· Create two Posix threads in main(), which call the withdraw and the deposit
function respectively.
ï‚· Use pthread_mutex_lock() and pthread_mutex_unlock() functions to ensure
mutual exclusion between the two threads. Also make sure to use
pthread_join() to wait for the threads to terminate.
-----------