Synchronization, Operating System

Assignment Help:

As we already know, threadsmust ensure consistency; otherwise, race conditions (non-deterministic results) might happen. Now consider the "too much milk problem": two people share the same fridge and must guaran tee that there's always milk, but not too much milk. How can we solve it? First, we consider some important concepts and their de?nitions:

 Mutex: prevents things from operating on the same data at the same time;

 Critical section: a piece of code that only one thread can execute at a time;

 Lock: a mechanism for mutual exclusion; the program locks on entering a critical section, accesses the shared data, and then unlocks. Also, a program waits if it tries to enter a locked section.

 Invariant: something that must always be true when not holding the lock. For the above mentioned problem, we want to ensure some correctness properties. First, we want to guarantee that only one person buys milk when it is need (this is the safety property, aka "noth-ing bad happens"). Also, wewant to ensure that someone does buymilkwhen needed (the progress property, aka "something good eventually happens"). Nowconsider thatwe can use the following atomic operations when writing the code for the problem:

 "leave a note" (equivalent to a lock)

 "remove a note" (equivalent to an unlock)


"don't buy milk if there's a note" (equivalent to a wait)

An atomic operation is an unbreakable operation. Once it has started, no other thread or process can interrupt it until it has ?nished. Our ?rst try could be to use the following code on both threads:

if (no milk && no note) {
leave note;
buy milk;
remove note;
}
Unfortunately, this doesn't work because both threads could simultaneously verify that there's no note and no milk, and then both would simultaneously leave a note, and buy more milk. The problem in this case is that we end up with too much milk (safety property not met).

Now consider our solution #2:

Thread A:
leave note "A";
if (no note "B")
if (no milk)
buy milk;
remove note "A";
Thread B:
leave note "B";
if (no note "A");
if (no milk)
buy milk;
remove note "B";

The problemnowis that if both threads leave notes at the same time, neitherwill ever do anything. Then, we end up with no milk at all, which means that the progress property not met. Now, let's consider an approach that does work:

Thread A
leave note A
while (note B)
do nothing
if (no milk)
buy milk
remove note A
Thread B
leave note B;
if (no note A)
if (no milk)
buy milk;
remove note B;

This approach, unlike the two examples considered on the previous class, does work. However, it is complicated: it is not quick-and-easy to convince yourself that these two sections of code always produce the desired behavior.


Related Discussions:- Synchronization

What is the use of system programs, Q. What is the use of system programs? ...

Q. What is the use of system programs? Answer: System programs are able to be thought of as bundles of useful system calls. They provide fundamental functionality to users so

Operating system design, You are required to study the important system com...

You are required to study the important system components, including important data structures, important functions and algorithms, and the various organizational, structural, logi

Explain terminal symbols, Explain Terminal Symbols Terminal symbols are...

Explain Terminal Symbols Terminal symbols are literal strings that are forming the input of a formal grammar and cannot be broken down into smaller units with no losing their l

Briefly discuss on bankers algorithm, Briefly discuss on Bankers algorithm?...

Briefly discuss on Bankers algorithm? The resource-allocation graph algorithm is not applicable to a resource-allocation system with multiple examples  for each resource type.

Roles of operating systems, Describe Three major roles of operating systems...

Describe Three major roles of operating systems in business computer systems

Pstree, Construct a process tree similar to Figure 1. Look up the Linux com...

Construct a process tree similar to Figure 1. Look up the Linux command pstree -p and describe what it does. Then type in the command the capture the output.

Explain system-wide open-file and per-process open-file, Explain system-wid...

Explain system-wide open-file and per-process open-file The system-wide open-file table have a copy of the FCB of each open file, as well as other information. The per-pr

Most wans utilize only a partially connected topology, Q. Most WANs utilize...

Q. Most WANs utilize only a partially connected topology. Why is this subsequently Answer: Cost. A completely connected network requires a link between every node in the netw

Explain about functions of operating system, Q. Explain about Functions of ...

Q. Explain about Functions of Operating System? Functions of Operating System Operating system performs 3 functions as follows: 1.  Convenience:   Operating System mak

Explain the overlay structured program, Overlay structured program: A p...

Overlay structured program: A program consisting of overlays is referred as overlay structured program in which an overlay is a part of program which has similar load origin as

Write Your Message!

Captcha
Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd