Laboratorio de Sistemas Operativos

Primer Parcial

Fecha de entrega: lunes 2 de octubre de 2006

Planificación de procesos

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.

Entrada del programa

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

 

Salida del programa

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.