Sistemas operativos modernos

Administración de procesos Administración de memoria Administración de archivos Registros Apuntador a segmento de texto Directorio raíz Contador de programa Apuntador a segmento de datos Directorio de trabajo Palabra de estado del programa Apuntador a segmento de pila Descriptores de archivo Apuntador de pila ID de usuario Estado de proceso ID de grupo Prioridad Parámetros de calendarización ID de proceso Proceso padre Grupo de procesos Señales Hora de inicio del proceso Tiempo de CPU consumido Tiempo de CPU de los hijos Hora de la siguiente alarma Figura 2-4. Algunos campos de una entrada típica de la tabla de procesos. se saca la información que la interrupción metió en la pila, y el apuntador de pila se ajusta de modo que apunte a una pila temporal empleada por el manejador de procesos. Las acciones, como guardar los registros y ajustar el apuntador de pila, ni siquiera pueden expresarse en len­ guajes de alto nivel como C, así que se ejecutan mediante una pequeña rutina en lenguaje en­ samblador, que por lo regular es la misma para todas las interrupciones, porque la tarea de guardar los registros es idéntica, sea cual sea la causa de la interrupción. Cuando esta rutina termina, llama a un procedimiento en C que realiza el resto del trabajo para este tipo específico de interrupción. (Damos por hecho que el sistema operativo está escri­ to en C, como es el caso la mayoría de los sistemas operativos reales.) Una vez que dicho pro­ cedimiento ha terminado su labor, con lo cual es probable que ahora un proceso esté listo, se llama al calendarizador para ver quién se ejecutará a continuación. Después, el control regresa al código en lenguaje ensamblador para que cargue los registros y el mapa de memoria del pro­ ceso actual y lo ponga en marcha. El manejo de interrupciones y la calendarización se resumen en la figura 2-5. Es conveniente señalar que los detalles varían un tanto de un sistema a otro. 1. El hardware mete el contador de programa, en la pila, etc. 2. El hardware carga un nuevo contador de programa tomándolo del vector de interrupción. 3. Un procedimiento en ensamblador guarda registros. 4. Un procedimiento en ensamblador crea la nueva pila. 5. Se ejecuta el servicio de interrupción en C (que suele leer entradas y ponerlas en un búfer). 6. El calendarizador decide qué programa ejecutará ahora. 7. El procedimiento en C regresa al código ensamblador. 8. Un procedimiento en ensamblador arranca el nuevo proceso actual. Figura 2-5. Bosquejo de lo que hace el nivel más bajo del sistema operativo cuan­ do ocurre una interrupción.

RkJQdWJsaXNoZXIy MjI4NDcx