Kernel reentrante: en el modo kernel, un kernel reentrante permite que los procesos (o, más precisamente, sus subprocesos de kernel correspondientes) renuncien a la CPU. No tienen efecto sobre otros procesos que ingresan al modo kernel. Los sistemas de múltiples procesadores pueden programarse juntos en el caso de sistemas de un solo procesador.
Ejemplo:
Una lectura de disco es un ejemplo de esto. Cuando un programa de usuario solicita la lectura de un disco, el programador delegará la CPU a otro proceso (subproceso del kernel) hasta que el controlador del disco emita una interrupción que indique que se puede acceder a los datos y nuestro subproceso se puede reanudar. Este proceso aún puede acceder a la E/S, como la entrada del usuario, que requiere funciones del kernel. El sistema sigue respondiendo y se reduce la cantidad de tiempo de CPU desperdiciado como resultado de los retrasos de E/S. La función original (cualesquiera que sean los datos solicitados) se bloquearía en un núcleo no reentrante hasta que se completara la lectura del disco.
Si un programa de computadora o una rutina se puede volver a llamar de manera segura antes de que se haya completado su invocación anterior, se dice que es reentrante (es decir, se puede ejecutar de manera segura al mismo tiempo). Un programa de computadora o rutina que es reentrante:
- No puede haber ningún dato no constante que sea estático (o global).
- La dirección no debe devolverse a datos no constantes estáticos (o globales).
- Solo debe funcionar con los datos proporcionados por la persona que llama.
- Los bloqueos no deben usarse para proteger recursos singleton, una variable a la que solo se hace referencia una vez
- No debe cambiar su propio código (a menos que se ejecute en su propio almacenamiento de subprocesos único).
- Los programas o rutinas de computadora no reentrantes no deben llamarse.
Los kernels reentrantes aún pueden ejecutar funciones no reentrantes si se utilizan bloqueos para garantizar que solo un proceso pueda ejecutar la función no reentrante. Aunque el proceso actual está operando en modo kernel, las interrupciones de hardware pueden suspenderlo (permitiendo que cosas como Ctrl+c detengan la ejecución).
Ruta de control del kernel: un conjunto de instrucciones que ejecuta el kernel para manejar una llamada al sistema. Normalmente, las instrucciones se ejecutan en orden, pero algunas actividades obligan a la CPU a intercalar rutas de control. En el modo de usuario, se realiza la siguiente llamada al sistema: el programador elige un nuevo proceso para ejecutarlo y lo enciende. En nombre de dos procesos separados, se ejecutan dos vías de control.
Publicación traducida automáticamente
Artículo escrito por yandasaketh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA