1
GATE CSE 2021 Set 2
MCQ (More than One Correct Answer)
+2
-0

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
Both T1 and T2, in both the processes, will print the value of y as 1.
B
At least one of P1 and P2 will print the value of x as 4
C
Both P1 and P2 will print the value of x as 2.
D
At least one of the threads will print the value of y as 2.
2
GATE CSE 2021 Set 2
Numerical
+2
-0

Consider a three-level page table to translate a 39-bit virtual address to a physical address as shown below.

GATE CSE 2021 Set 2 Operating Systems - Memory Management Question 16 English

The page size is 4 KB (1 KB = 210 bytes) and page table entry size at every level is 8 bytes. A process P is currently using 2 GB (1 GB = 230 bytes) virtual memory which is mapped to 2 GB of physical memory. The minimum amount of memory required for the page table of P across all levels is _______ KB.

Your input ____
3
GATE CSE 2021 Set 2
Numerical
+1
-0

Consider the following ANSI C function:

int SomeFunction (int x, int y)

{

if ( (x == 1) I I (y == 1)) return 1;

if (x == y) return x;

if (x > y) return SomeFunction(x - y, y);

if (y > x) return SomeFunction(x, y - x);

}

The value returned by SomeFunction(15, 255) is _______.

Your input ____
4
GATE CSE 2021 Set 2
MCQ (Single Correct Answer)
+2
-0.66

Consider the following ANSI C program:

#include <stdio.h>

#include <stdlib.h>

struct Node{

int value;

struct Node ⋆next;};

int main(){

struct Node ⋆boxE, ⋆head, ⋆boxN; int index = 0;

boxE = head = (struct Node ⋆) malloc (sizeof(struct Node));

head -> value = index;

for (index = 1; index <=3; index++){

boxN = (struct Node ⋆) malloc(sizeof(struct Node));

boxE -> next = boxN;

boxN -> value = index;

boxE = boxN; }

for (index = 0; index <= 3; index++) {

printf("value at index %d is %d\m", index, head -> value);

head = head -> next;

printf("value at index %d is %d\n", index + 1, head -> value);}}

Which one of the statement below is correct about the program ?

A
It has a missing return which will be reported as an error by the compiler.
B
It dereferences an uninitialized pointer that may result in a run-time error.
C
Upon execution, the program goes into an infinite loop.
D
Upon execution, the program creates a linked-list of five nodes.