PUERTA | Cuestionario para Sudo GATE 2021 | Pregunta 6

Un programa se llama reentrante si puede interrumpirse en medio de su ejecución y luego volver a llamarse de manera segura («reingresar») antes de que sus invocaciones anteriores completen la ejecución. La interrupción puede ser causada por una acción interna, como un salto o una llamada, o por una acción externa, como una interrupción o una señal. Una vez que se completa la invocación reingresada, las invocaciones anteriores reanudarán la ejecución correcta.

¿Cuál(es) de los siguientes programas es(n) reingresante (s) ?

Nota: esta pregunta es de selección múltiple (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) Ninguno de estos

Respuesta: (B) (C)
Explicación: Código dado en la opción (A) de una función swap() que no puede ser reentrante.

Las opciones (B) y (C) son correctas.
Cuestionario de esta pregunta
Comente a continuación si encuentra algo incorrecto en la publicación anterior

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *