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

Example of weak entity, Consider the entity type dependent related to emplo...

Consider the entity type dependent related to employee entity, which is used to keep track of the dependents of every employee. The attributes of dependents are: name, sex, birth d

Explain the log based recovery method, Explain the Log Based Recovery Metho...

Explain the Log Based Recovery Method? The system log that is generally written on stable storage consists of the redundant data required to recover from volatile storage failu

What are the two types of errors, What are the two types of errors? The...

What are the two types of errors? The two types of errors are: a) Logical error b) System error

What is database files , The database files accept the actual data and ...

The database files accept the actual data and are typically the biggest in size. Depending on their shape, the tables for all the user operation can go in one database file-but

What is the difference between serial and sequential files, What is the dif...

What is the difference between serial and sequential files? How searching is applied on both?    Ans: A serial file is one where the records have been stored in the order where

What are ways of finding out derived attributes, What are ways of finding o...

What are ways of finding out either an update is required or not for derived attributes? The ways to find out an update is required or, not are as: Explicit update

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

OLD HOME POLICIES, Write an sql statement to find what is the percentage of...

Write an sql statement to find what is the percentage of home policies which are from the state of Arizona out of all Home policies by Policy Value.

What is a linked server, What is a Linked Server? Linked Servers is a m...

What is a Linked Server? Linked Servers is a method in SQL Server by which we can add other SQL Server to a Group and query both the SQL Server dbs using T-SQL Statements. With

Explain discretionary access control, Problem: (a) Given the following ...

Problem: (a) Given the following relation: Stats(Name,Sex,Children, Occupation, Salary, Tax, Audits) Write SQL code to define the following security constraints: (i) User

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