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

What are the various forms of data transparency, What are the various forms...

What are the various forms of data transparency? a) fragmentation transparency b) replication transparency c) location transparency

What are decision support systems, Question: (a) What are decision sup...

Question: (a) What are decision support systems, and what role do they play in the business environment? (b) Data mining is a knowledge discovery process of automated extr

Example of sequences, Example : Create a sequence named SEQSS that starts a...

Example : Create a sequence named SEQSS that starts at 105, has a step of 1 and can take maximum value as 2000.  CREATE SEQUENCE SEQSS START WITH 105 INCREMENT BY 1 MAX VA

What is candidate key, What is candidate key? Candidate Key - A candi...

What is candidate key? Candidate Key - A candidate key of an entity set is a minimal superkey, which uniquely identifies each row in the relation.

Explain the structure of well formed formulae, Explain the structure of wel...

Explain the structure of well formed formulae in relational calculus. Ans: a. An atom is a formula b. If P1 is a formula, after that so are ¬P1 and (P1) c. If P1 and P2 a

What are the advantages of using a dbms, What are the advantages of using a...

What are the advantages of using a DBMS? The benefits of using a DBMS are a) Controlling redundancy b) Restricting unauthorized access c) Giving multiple user interfac

Differentiate between a subquery and a join, Differentiate between a subque...

Differentiate between a subquery and a join If we need to acquire information from one or more tables after that either subquery or join can be used. If the columns which are t

Define the two phase locking protocol, Define the Two Phase Locking Protoco...

Define the Two Phase Locking Protocol This is a protocol that is used to make sure serializability of transactions. This protocol needs that every transaction issue lock and u

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