Primer Parcial
Fecha de entrega: lunes 2 de octubre de 2006
En la arquitectura actual de los computadores, los procesos aparentan se ejecutados en forma paralela. En realidad una sola CPU debe ser compartida por los procesos, que ejecutan una cantidad de instrucciones durante un determinado intervalo de tiempo antes de ser desalojados para dar paso a otros procesos. Su problema consiste en simular la tarea de planificación de procesos en un sistema operativo. Para ello, deberá implementar las primitivas necesarias para permitir la planificación de procesos utilizando las estrategias FIFO y Round Robin.
Los datos del simulador se leerán por entrada estándar, y consistirán en una serie de comandos (DEFINE, ARRIVAL, START), que indican la definición de un parámetro de simulación, la llegada de un nuevo proceso o el inicio de la tarea de planificación, respectivamente. Una vez que se lea el comando START (es decir que ha terminado la lectura de los datos), se deberá comenzar la simulación. A continuación se describe el uso de estos comandos.
Comando |
Descripción |
Ejemplo |
DEFINE |
Define un parámetro para la simulación. Los únicos parámetros que se pueden definir son la estrategia de planificación (FIFO o RR) y el cuanto (necesario solamente si se utiliza Round-Robin). |
DEFINE scheduling FIFO
DEFINE scheduling RR DEFINE quantum 10 |
ARRIVAL |
Anuncia la llegada de un proceso. Sus parámetros son el tiempo de llegada del proceso y el archivo en el cual se encuentra el código con las instrucciones de alto nivel del programa. |
ARRIVAL 10 process1.pr ARRIVAL 0 process2.pr |
START |
Anuncia el fin de la lectura de los datos y el inicio de la simulación. No especifica ningún parámetro. |
START |
Programas
Los programas que constituyen los procesos para el simulador están compuestos por una serie de instrucciones de alto nivel (BEGIN, CPU, LOCK, END). Estas instrucciones se explican a continuación.
Instrucción |
Descripción |
Ejemplo |
BEGIN |
Define el inicio del programa. Esta instrucción no consume tiempo de CPU. |
BEGIN |
CPU |
Define una ráfaga de CPU. Tiene como parámetro el número de unidades de tiempo que constituyen la ráfaga |
CPU 50 |
LOCK |
Indica que el proceso se debe bloquear, debido a que ejecutó una operación de E/S. Tiene como parámetro el número de unidades de tiempo durante las cuales el proceso se encuentra bloqueado. |
LOCK 10 |
END |
Define el fin del programa. Esta instrucción no consume tiempo de CPU. |
END |
Se puede asumir que estas instrucciones están organizadas en un orden correcto, y que los programas son válidos. Sin embargo, se debe tener en cuenta que pueden existir varias instrucciones CPU seguidas. Por ejemplo, las instrucciones
CPU 10
CPU 15
Son equivalentes a la instrucción
CPU 25
Algunos ejemplos de programas se muestran a continuación:
Archivo process1.pr BEGIN CPU 10 END |
Archivo process2.pr BEGIN CPU 5 CPU 10 LOCK 2 CPU 4 END |
Archivo process3.pr BEGIN CPU 25 END |
La salida de su programa deberá ser una tabla como la que se muestra a continuación.
Resultados de la simulación Estrategia de planificación: FIFO Tiempo total de la simulación: 50 unidades de tiempo Tiempo promedio de espera: 10 unidades de tiempo
# Proceso T. Llegada Tamaño T. Inicio T. Espera T. Finalización ------------------------------------------------------------------------------------------------------------------ 1 process1.pr 0 10 0 0 10 2 process2.pr 2 5 10 10 15 Secuencia de ejecución 1(10) – 2 (5) 1(10) – 2 (5)
|
Los datos presentados en la tabla son:
# : Numero del proceso, se asigna en forma secuencial de acuerdo con el orden de llegada de los procesos.
Proceso : Nombre del proceso (nombre del archivo en el cual se encuentra el código del proceso)
T. Llegada: Tiempo de llegada del proceso. Este parámetro es el tiempo especificado en el comando ARRIVAL.
Tamaño: Tamaño en unidades de tiempo del proceso. Se puede calcular como la suma de todas las instrucciones CPU y LOCK que se encuentran en el código del programa.
T. Inicio: Unidad de tiempo en la cual se ejecutó el proceso por primera vez
T. Espera: Tiempo total de espera para el proceso.
T. Finalizacion: Unidad de tiempo en la cual el proceso finaliza la ejecución.
Adicionalmente se debe presentar la secuencia de ejecución de los procesos. Note que en el caso de la planificación Round-Robin, un proceso se puede ejecutar varias veces, por lo tanto puede aparecer varias veces en la secuencia. Por el contrario, al utilizar FIFO, los procesos sólo aparecen una vez en la secuencia.