Write modified version of transfer that avoids deadlock, Database Management System

Assignment Help:

Your OS has a set of queues, each of which is protected by a lock. To enqueue or dequeue an item, a thread must hold the lock associated to the queue.

You need to implement an atomic transfer routine that dequeues an item from one queue and enqueues it on another. The transfer must appear to occur atomically.

This is your first attempt:

void transfer(Queue *q1, Queue *q2) {

Item thing; /* the thing being transferred */

q1->lock.Acquire(); thing = q1->Dequeue(); if (thing != NULL){

q2->lock.Acquire(); q2->Enqueue(thing); q2->lock.Release();

} q1->lock.Release()

You may assume that q1 and q2 never refer to the same queue. Also, assume that you have a function Queue::Address that takes a queue and returns, as an unsigned integer, its address in memory.

a. Explain how using this implementation of transfer leads to deadlock; b. Write a modified version of transfer that avoids deadlock and does the transfer atomically; c. If the transfer does not need to be atomic, how might you change your solution to achieve a higher degree of concurrency? Justify how your modification increases concurrency.


Related Discussions:- Write modified version of transfer that avoids deadlock

Adding redundant associations for efficient access, Adding Redundant Associ...

Adding Redundant Associations for Efficient Access Redundant associations do not add any type of information, therefore during design we should actually examine structure of o

What is an object design, What is an object design? Object design is a ...

What is an object design? Object design is a very interactive method, which decides the relationship among objects, classifies operations on classes, determines overall system

What is a foreign key, What is a foreign key, and what is it used for? ...

What is a foreign key, and what is it used for? A foreign key is used to establish relationships between relations in the relational model. Technically, a foreign key is a colu

One to many - relationship cardinality, One-to-many : An entity in A is rel...

One-to-many : An entity in A is related with any number of entities in B. An entity in B is related with at the most one entity in A. Example: Relationship between faculty and d

Write a short note on temporary tables, Write A short note on temporary tab...

Write A short note on temporary tables? Temporary Tables - Temporary tables exists solely for a particular session, or whose data persists for the duration of the transaction

Management information system, Explain the challenges before an E-business ...

Explain the challenges before an E-business management.

Transaction managenment, can you please explain with the help of suitable e...

can you please explain with the help of suitable example the difference between conflict equivalence and conflict serializability?

Explain the query processing, Explain the Query Processing  Data Query ...

Explain the Query Processing  Data Query Processing permits a user to report or analyze structured and unstructured data pulled from multiple data sources.

find a non-redundant cover and canonical cove, Given the following set of ...

Given the following set of functional dependencies {cf→ bg, g → d, cdg → f, b → de, d → c} defined on R(b,c,d,e,f,g) a. Is cf→ e implied by the FDs? b. Is dg a superkey?

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