Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

This is a review question so an explanation and answer would be tremendously hel

ID: 657201 • Letter: T

Question

This is a review question so an explanation and answer would be tremendously helpful, as I am studying for finals.

void select_seat(int passenger){

show_cabin();

seat = get_click();

//code to assign seat to passenger and update cabin

...

...

}

Suppose test_and_set can be used to ensure the above function is free of race conditions.

Illustrate how test_and_set is used by adding code either inside the function, or around the function call, assuming a global variable to all processes called exclusive is declared and initialized to 0.

I don't understand test_and_set method or how it works. Thanks!

Explanation / Answer

void select_seat(int passenger){

show_cabin();

seat = get_click();

//code to assign seat to passenger and update cabin
seatassign();
updatecabin() ;
}

semaphore seat_assigned= 0;
semaphore seat_unassigned = n;

volatile int exclusive = 0;


void updatecabin() {
while (TestAndSet(&exclusive) == 1);

critical section // only one process can be in this section at a time
seat_unassigned=seat_assigned+1 mod n;
exclusive = 0 ;// release lock when finished with the critical section
}
void seatassign()
{
while (TestAndSet(&exclusive) == 1);

critical section // only one process can be in this section at a time
seat_assigned=seat_assigned + 1 mod n;
exclusive = 0 ;// release lock when finished with the critical section
}

Test-and-set does two things atomically:

-> Test a lock (whose value is returned)

-> Set the lock

Lock can be obtained when the return value is 0.

  If returned value is 1, someone already had the lock (and still has it)

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote