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

Database for online assignment system, i want to database for online assign...

i want to database for online assignment submission system

Managing database, 10A.53 Code an Oracle Database trigger to enforce the ...

10A.53 Code an Oracle Database trigger to enforce the constraint that an employee can never change his or her department. 10A.54 Code an Oracle Database trigger to allow the

Explain the structured decomposition, Differentiate between the object orie...

Differentiate between the object oriented decomposition and the structured decomposition? Process-oriented (structural) decomposition divides a complex process, function or tas

ER diagram, #question. acompani datdbase needs to store information about e...

#question. acompani datdbase needs to store information about employees (identified by a social security number,with salary and phone as attributes) and departments (identified by

What is equi join, What is equi join? Equi Join - It generates all th...

What is equi join? Equi Join - It generates all the combinations of tuples from two relations which satisfy a join condition along with only equality comparison (=).

Describe participation constraints, Describe Participation Constraints? ...

Describe Participation Constraints? Participation Constraints - The participation constraint exacts whether the existence of an entity depends on its being related to another

Identify the candidate keys, Consider the following six relation schemes an...

Consider the following six relation schemes and their corresponding sets of functional dependencies. In each case identify a. All the candidate keys b. The highest normal for

Indexed (indexed sequential) file organisation, Indexed (Indexed Sequential...

Indexed (Indexed Sequential) File Organisation It organises the file like a big dictionary, i.e., records are kept in order of the key but an index is stored which also allows

Differentiate between various levels of data abstraction, Differentiate bet...

Differentiate between various levels of data abstraction? Data Abstraction - Abstraction is the procedure to hide the irrelevant things from the users and represent the 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