...
Question 9846 – Arrays
December 19, 2023
Question 16776 – Data-Structures
December 19, 2023
Question 9846 – Arrays
December 19, 2023
Question 16776 – Data-Structures
December 19, 2023

Question 14312 – Operating-Systems

Consider the following multi-threaded code segment (in a mix of C and pseudocode), invoked by two processes P1 and P2, and each of the processes spawns two threads T1 and T2:

int x=0;    // global

Lock L1;    // global

main()  {

     create a thread to execute foo();     // Thread T1 

     create a thread to execute foo();     // Thread T2

     wait for the two threads to finish execution;

     print (x); }

     foo() {

        int y=0;

        Acquire L1;

        x = x + 1;

        y = y + 1;

        Release L1;

        print (y);}  

Which of the following statement(s) is/are correct?

Correct Answer: B

Question 2 Explanation: 
  1. True,

Execution order : P1->T1->T2; P2->T1->T2; P1-print(x),P2-print(x) | output is 4,4

 

  1. True, 

y=y+1 can be treated as a critical section, and it is well synchronized by Acquire L1 and release L1. 

  1. False, need not be true always. 
  2. False,

Threads maintain their own copy of stack,and local variables (y) are stored on the stack. 

A
At least one of P1 and P2 will print the value of x as 4.
B
Both T1 and t2, in both the processes, will print the value of y as 1.
C
Both P1 and P2 will print the value of x as2.
D
At least one of the threads will print the value of y as 2.
0 0 votes
Article Rating
Subscribe
Notify of
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x
error: Alert: Content selection is disabled!!