E. U. de Informática Examen Final de Sistemas Operativos I Departamento de Informática Aplicada 12 de diciembre de 2001 EJERCICIO 3 (3’5 puntos) Tiempo estimado: 75 m Tenemos un sistema operativo con un algoritmo de planificación similar al de linux, tal y como se describe a continuación. El sistema dispone de dos algoritmos de planificación, uno para procesos de tiempo compartido y otro para procesos de tiempo real. Cada proceso puede acogerse a cualquiera de estas dos políticas de planificación. Para los procesos de tiempo compartido se utiliza un algoritmo basado en créditos. Cada proceso dispone de un número de créditos, de tal manera que para seleccionar el siguiente proceso a ejecutarse, se elige al que tiene más créditos acumulados. Cada vez que se produce una interrupción de reloj, el proceso en ejecución pierde un crédito; cuando su número de créditos llega a cero, pierde la CPU y se selecciona otro proceso. Cuando no queda ningún proceso preparado con créditos, el sistema vuelve a asignar créditos a todos los procesos del sistema en función de su prioridad según la regla siguiente: Créditos = (Créditos_Restantes / 2) + Prioridad. Para los procesos de tiempo real, el sistema siempre concede la CPU al proceso de mayor prioridad, implementando dos algoritmos por prioridad expulsores: FIFO y Round Robin. Cada proceso de tiempo real debe indicar a cual de los dos se acoge. En el algoritmo FIFO no se le quita la CPU a no ser que pase a preparado un proceso de mayor prioridad. En el algoritmo Round Robin, la CPU se reparte en idénticas rodajas de tiempo entre los procesos que tengan la misma prioridad. El sistema solo ejecutará un proceso de tiempo compartido si no hay ningún proceso de tiempo real preparado para ejecutar. 1.- (0.7 ptos.) Dadas las siguientes estructuras de datos, indica qué nuevas estructuras de datos y/o modificaciones a las ya existentes introducirías para dar soporte al algoritmo de planificación descrito, teniendo en cuenta que las estructuras de datos deben permitir accesos eficientes a la información. const maxProcesos = 50; type idProceso = 0..maxProcesos; descriptorProceso = record pid : idProceso; siguiente : idProceso; end; colaProcesos = var record primero : id Proceso := 0; ultimo : idProceso := 0; end; procesos : array [1..maxProcesos] of descriptorProceso: enEjecucion : idProceso; (* Identificador del proceso en ejecución *) preparados : colaProcesos; 2.- (0.5 ptos.) El efecto de la ejecución de algunas rutinas puede (no siempre) provocar la realización de un cambio de contexto. Rellena la siguiente tabla indicando, para cada una de las rutinas de la primera columna y para los dos algoritmos de planificación indicados en la primera fila: SÍ: si en algunas circunstancias puede provocar un cambio de contexto NO: si nunca provocarán cambio de contexto Round Robin Algoritmo descrito (puro) similar a linux Subir (Semaforo) Bajar (Semaforo) Rutina Tratam. Interrup. por finalización de E/S Crear_Proceso Dormir (Lapso_Tiempo) 3.- (0.8 ptos.) Supongamos que las rodajas de tiempo del sistema son de 2 unidades de tiempo (u.t.). En el sistema existen, en un momento dado, los procesos indicados en la siguiente tabla, para los cuales se indica las unidades de tiempo de CPU que necesitan y entre paréntesis el número de unidades de tiempo que están bloqueados en espera de E/S. Por ejemplo, P1 necesita inicialmente 4 u.t de CPU, a continuación se bloquea durante 10 u.t y finalmente necesita 4 u.t. más de CPU. Además, se especifica el tipo de proceso que es cada uno. Tiempos P1 P2 P3 P4 Tipo de Proceso 4 (10) 4 Tiempo Real FIFO con prioridad 20 3 (3) 3 Tiempo Real Round Robin con prioridad 10 3 (3) 3 Tiempo Real Round Robin con prioridad 10 4 (2) 2 Tiempo Compartido (prioridad 20 > prioridad 10) Dibuja un cronograma que indique el orden en que se ejecutarán los procesos, suponiendo que todos están preparados en el instante cero y que el orden de llegada ha sido P1, P2, P3 y P4. 4.- (0.7 ptos.) Supongamos que en el sistema existen los procesos indicados en la siguiente tabla. P1 P2 P3 P4 Tiempos 5 (7) 5 (7) 5 4 (3) 2 Tcpu-P3 3 Tipo de Proceso Tiempo Real con prioridad 20 y FIFO Tiempo Real con prioridad 10 y Round Robin Tiempo Real con prioridad 10 y Round Robin Tiempo Compartido Sabemos que: el tiempo de retorno de P2 es MENOR que el tiempo de retorno de P1 el tiempo de retorno de P3 es MENOR que el tiempo de retorno de P1 entendiendo por tiempo de retorno el tiempo que un proceso tarda en ejecutarse completamente. Calcula el tiempo máximo de CPU que puede llegar a tener el proceso P3 (máximo Tcpu-P3) para que se cumplan las dos condiciones anteriores. Razona la respuesta. 5.- (0.8 ptos.) Sabemos que en el sistema se produce una interrupción de reloj cada 2 u.t. Con cada interrupción de reloj se finaliza una rodaja de tiempo para los procesos de tiempo compartido. Supongamos que en el sistema existen los procesos indicados en la siguiente tabla, donde Créditos (Pn) indica el número de créditos que tiene el proceso Pn. P1 P2 P3 P4 Tiempos 5 (20) 8 3 (6) 2 22 5 Tipo de Proceso Tiempo Real con prioridad 20 y FIFO Tiempo Real con prioridad 10 y Round Robin Tiempo Compartido con Créditos(P3) Tiempo Compartido con Créditos(P4) Considerando la siguiente situación: Créditos (P3) es MAYOR que los Créditos (P4) el proceso P4 tiene suficientes créditos para acabar su ejecución antes de que se le agoten el tiempo de retorno de P4 es menor que el tiempo de retorno de P1 indica el número máximo de Créditos(P3) para que se cumpla la situación descrita. Razona la respuesta. E. U. de Informática Departamento de Informática Aplicada Examen Final de Sistemas Operativos I 12 de diciembre de 2001 Apellidos ................................................................................................................................................ Nombre ......................................................................... Nº de Matrícula : EJERCICIO 3. Solución 1) Estructuras de datos 2) Realización de cambios de contexto Round Robin (puro) Algoritmo descrito similar a linux Subir (Semaforo) Bajar (Semaforo) Rutina Tratam. Interrup. por finalización de E/S Crear_Proceso Dormir (Lapso_Tiempo) 3) Cronograma Notación: Una línea continua indica que el proceso se está ejecutando durante esa u.t. P4 P3 P2 P1 5 10 15 20 25 30 35 40 u.t. 4) Máximo Tcpu-P3 Valor máximo: Razonamiento: 5) Máximo Créditos(P3) Valor máximo: Razonamiento: