Sistemas operativos modernos

10.3.3 Implementación de procesos en UNIX Un proceso en UNIX es como un iceberg: lo que se ve es la parte que está sobre el agua, pero también hay una parte importante abajo. Todo proceso tiene una parte de usuario que ejecuta el programa de usuario. Sin embargo, cuando uno de sus subprocesos efectúa una llamada al sistema, pasa al modo de kernel y comienza a ejecutarse en un contexto de kernel, con un ma­ pa de memoria distinto y pleno acceso a todos los recursos de la máquina. Sigue siendo el mis­ mo subproceso, pero ahora con más poder y también con su propia pila en modo de kemel y su propio contador de programa en modo de kemel. Esto es importante porque una llamada al sistema puede bloquearse a la mitad de su ejecución, como cuando hay que esperar a que ter­ mine una operación de disco. En ese momento, el contador de programa y los registros se guar­ dan para que el subproceso pueda reiniciarse en modo de kemel más tarde. El kernel mantiene dos estructuras de datos clave relacionadas con procesos, la tabla de procesos y la estructura de usuario. La tabla de procesos reside en todo momento y contie­ ne información necesaria para todos los procesos, incluso los que no están en la memoria en la actualidad. La estructura de usuario se intercambia o pagina a disco cuando el proceso corres­ pondiente no está en la memoria, para no desperdiciar memoria en información que no se necesita. La información de la tabla de procesos puede agruparse a grandes rasgos en las siguientes categorías: 1. Parámetros de calendarización. Prioridad del proceso, tiempo de CPU consumido recientemente, tiempo que estuvo dormido recientemente. Juntos, estos datos sirven para determinar cuál proceso se ejecutará a continuación. 2. Imagen de memoria. Apuntadores a los segmentos de texto, datos y pila o, si se usa paginación, a sus tablas de páginas. Si el segmento de texto se comparte, el apuntador de texto apunta a la tabla de texto compartido. Si el proceso no está en la memoria, aquí también hay información que permite localizar sus partes en el disco. 3. Señales. Máscaras que indican cuáles señales se ignoran, cuáles se atrapan, cuáles es­ tán bloqueadas en forma temporal y cuáles se están entregando. 4. Datos diversos. Estado actual del proceso, suceso que se está esperando (en su caso), tiempo hasta que “suene” el reloj despertador, PID, PID del proceso padre e identifi­ cación de usuario y grupo. La estructura de usuario contiene información que no se necesita cuando el proceso no es­ tá físicamente en la memoria y se puede ejecutar. Por ejemplo, aunque es posible enviar una señal a un proceso que fue intercambiado a disco, ese proceso no puede leer un archivo. Por ello, la información acerca de las señales debe estar en la tabla de procesos, para que estén en memoria lodo el tiempo, incluso cuando el proceso no está presente en la memoria. En cam-

RkJQdWJsaXNoZXIy MjI4NDcx