Threads

Question 1
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?
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.
Question 1 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. 



Question 2

Consider the following statements with respect to user-level threads and kernel supported threads

    (i) context switch is faster with kernel-supported threads
    (ii) for user-level threads, a system call can block the entire process
    (iii) Kernel supported threads can be scheduled independently
    (iv) User level threads are transparent to the kernel

Which of the above statements are true?

A
(ii), (iii) and (iv) only
B
(ii) and (iii) only
C
(i) and (iii) only
D
(i) and (ii) only
Question 2 Explanation: 
→ User level thread context switch is faster than kernel level threads. Option A is false.
→ If one user level thread perform blocking operation then entire process will be blocked. Option B is true.
→ User level threads are threads are transparent to the kernel. Because user level threads are created by users. Option D is true.
→ Kernel supported threads can be scheduled independently, that is based on OS. Option C is true.
There are 2 questions to complete.

Access quiz wise question and answers by becoming as a solutions adda PRO SUBSCRIBER with Ad-Free content

Register Now

If you have registered and made your payment please contact solutionsadda.in@gmail.com to get access