Major locking errors, Operating System

Assignment Help:

When programming with threads, there are three very common mistakes that programmers often
make:

1. locking twice (depending on the system and type of lock, can cause crashes, hangs, or do bizarre things);

2. locking and not unlocking (i.e. failure to unlock);

3. deadlock (see next lecture).

4. Priority inversion - This is not an error per se, but an important issue that occurs Of these problems, locking twice is probably the easiest type of error to detect. Here's one example:

function f() { function g() {
lock(L); lock(L);
g(); // access shared data
unlock(L); unlock(L);
} }

So-called "recursive" locks can deal with this situation correctly, though normal locks will cause this thread to wait forever when the function g(), when called fromf(), then calls lock(L) on a previously-held lock. Dealing with this can lead to a common code pattern with certain functions designed only to be called with locks held:

function f(){

function g() {

function g_internal() {
lock(L); lock(L); // locks must be held here!
g_internal(); g_internal(); // access shared data
unlock(L); unlock(L); }
} }

Failure to unlock is slightly more dif?cult to detect. It can occur, for example, if the programmer forgets to release the lock in one of the possible execution branches of the function:

function f() {
lock();
if (x==0) {
// should also unlock here before returning!
return;
}
// do something
unlock();
return;
}

One way to deal with this is just to remember to unlock() at each possible return. Another is to have every return path go through the same section of code (and in C, goto is sometimes useful for this, despite its bad reputation).


Related Discussions:- Major locking errors

Multilevel page table, what is multilevel page table and its applications?

what is multilevel page table and its applications?

Rf, whta is an operating system ? what sorts services are provided by an op...

whta is an operating system ? what sorts services are provided by an operating system ?

VB. Net & XML, Write a XML with database with book details (BOOK ID, Title,...

Write a XML with database with book details (BOOK ID, Title, Author, subject, publisher year, language, vendor, and price)

Shell scripting, A friend has promised to log in at a particular time. Howe...

A friend has promised to log in at a particular time. However, he needs to be contacted as soon as he logs in. The shell script checks after every minute whether he has logged in o

Explain beladys anomaly, Explain Belady's Anomaly? Also called FIFO ano...

Explain Belady's Anomaly? Also called FIFO anomaly. Usually, on enhancing the number of frames allocated to a process virtual memory, the process implementation is faster, beca

Define segmentation, Define Segmentation  The memory allocation method...

Define Segmentation  The memory allocation method subject to “external” fragmentation is Segmentation.

Explain the spawnlp functions used in the netware, Explain the Spawnlp Func...

Explain the Spawnlp Functions Used in the NetWare Spawnlp(flags, execName, arg0,...)  The Spawnlp function is used to load  a NetWare executable file (NLM) specified by exec

Explain single partition allocation., Operating Systems 1. Explain sing...

Operating Systems 1. Explain single Partition Allocation and Multiple Partition Allocation. 2. What do you mean by PCB? What useful information is available in PCB? 3. De

How can application use memory via the win32 api, Q. Explain some of the wa...

Q. Explain some of the ways an application can use memory via the Win32 API. Answer: (1) Virtual memory offers several functions that allow an application to reserve and rele

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