InterviewSolution
Saved Bookmarks
| 1. |
A program is called reentrant if it can be interrupted in the middle of its execution, and then be safely called again (“re-entered”) before its previous invocations complete execution. The interruption could be caused by an internal action such as a jump or call, or by an external action such as an interrupt or signal. Once the reentered invocation completes, the previous invocations will resume correct execution.Which of the following program(s) is/are reentrant ?Note – This question is multiple select questions (MSQ).(A)int t;void swap(int *x, int *y){ t = *x; *x = *y; // hardware interrupt might invoke isr() here! *y = t;}void isr(){ int x = 1, y = 2; swap(&x, &y);}(B)int t;void swap(int *x, int *y){ int s; s = t; // save global variable t = *x; *x = *y; // hardware interrupt might invoke isr() here! *y = t; t = s; // restore global variable}void isr(){ int x = 1, y = 2; swap(&x, &y);}(C)void swap(int *x, int *y){ int t = *x; *x = *y; // hardware interrupt might invoke isr() here! *y = t;}void isr(){ int x = 1, y = 2; swap(&x, &y);}(D) None of these |
| Answer» | |