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

Transactions t1 and t2 are in a deadlock, Evaluate: a.When transactions...

Evaluate: a.When transactions T1 and T2 are in a deadlock, one of the transactions will eventually implement to completion and let the other one continue implementation. b.

How is the database organised in oracle, How is the database organised in O...

How is the database organised in Oracle? Database organized within Oracle in terms of table and table holds attributes and values. A database consists of one or more logical

Need database normalization and database analysis, Developer is required to...

Developer is required to do a task including: - Database Normalization - Database Analysis - ERM Diagram Details can be provided and then you can change your bid accord

What do you mean by correlated subquery, What do you mean by Correlated sub...

What do you mean by Correlated subquery? Subqueries, or nested queries, are used to bring back a set of rows to be used by the parent query. Depending on how the subquery is writ

Types of attributes, Attributes attached to an entity can be of various typ...

Attributes attached to an entity can be of various types. Simple The attribute that cannot be further separated into smaller parts and shows the basic meaning is known as a

What are the time stamps associated with each data item, What are the time ...

What are the time stamps associated with each data item? W-timestamp (Q) denotes the largest time stamp if any transaction that implemented WRITE (Q) successfully. R-timesta

Increased parallelism-data replication, Increased parallelism : Since the r...

Increased parallelism : Since the replicated date has several copies a query can be distributed or can be answered from the smallest loaded site. Also, with more replicas you have

Types of locks, Types of Locks There are two necessary types of locks: ...

Types of Locks There are two necessary types of locks: Binary lock : This locking mechanism has two states for to a data item: locked or unlocked Multiple-mode loc

Illustrate the cardinality of relationship, Cardinality of Relationship ...

Cardinality of Relationship One-to-One Only one entity of the first set is linked to only one entity of the second set. E.g. A teacher teaches a student. Only one teacher

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