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

Describe the definition of a transaction in sql, Describe the definition of...

Describe the definition of a transaction in SQL  Ans: The SQL transaction starts implicitly. Transactions are finished by either Commit work that commits the transaction and st

Database errors, Database Errors: An error is said to have occurred if the ...

Database Errors: An error is said to have occurred if the implementation of a command to manipulate the database cannot be successfully finished either due to inconsistent data or

Create a database model, Submit the table creation statements (including co...

Submit the table creation statements (including constraints) for the Database Model. Submit them all in a single script file. Also submit a document explaining what test data yo

Replication-design of distributed databases, Replication : It is definite a...

Replication : It is definite as a copy of a relation. Every replica is stored at a dissimilar site. The alternative to replication is to store only single copy of a relation which

Relationship between security and integrity, Relationship between Security ...

Relationship between Security and Integrity: Database security usually refers to access, while database integrity refers to avoidance of accidental loss of consistency. But usually

Define transitive dependencies, What do you understand by transitive depend...

What do you understand by transitive dependencies? Define with an example any two problems that can take place in the database if transitive dependencies are available in the datab

What is relational dbms, What is Relational DBMS This is our subject of...

What is Relational DBMS This is our subject of study. A DBMS is relational if the data is organized into relations, that is, tables. In RDBMS, all data are kept in the well-kno

Domains, Every simple attribute of an entity type have a possible set of va...

Every simple attribute of an entity type have a possible set of values that can be attached to it. This is known as the domain of an attribute. An attribute cannot have a value out

Explain data sublangauges, Explain Data Sublangauges ? Data sublanguage...

Explain Data Sublangauges ? Data sublanguage: In relational database theory, the term sublanguage, first used for this purpose through E. F. Codd in the year of 1970, refers t

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