El planificador de tareas es dispositivo electrnico que se utiliza para
organizar la realizacin de ciertas tareas que piden los usuarios va internet. El principal objetivo es atender a varios usuarios a la vez; l debe dar repuestas a todos en la brevedad de lo posible, aunque esta respuesta sea parcial. Un usuario debe solicitar al menos la ejecucin de una tarea y un mximo que se establece por cada planificador, las solicitudes se hacen todas en una sola peticin, en caso que un usuario se conecte y no tengas tareas, se considera rechazado, si hubiese en una peticin ms solicitudes que las permitidas por el planificador, solo se atendern las permitidas y la otras se consideran rechazadas e ignoradas. Una peticin, est compuesta por solicitudes de ejecucin de tareas, cada solicitud tiene mximo una tarea. El usuario puede solo hacer una peticin por cada conexin, pero se puede conectar varias veces, es importante saber cuntas veces se ha conectado. Las tareas, son la ejecucin de ciertos algoritmos que se nombran a continuacin: suma, resta, multiplicacin, divisin, raz cuadrada y elevacin. Los datos necesarios para la operacin vienen en el mismo archivo que la peticin y, las respuestas estarn en el archivo de salida.
El planificador, lleva un orden circular de los usuarios que est
atendiendo, si llega un nuevo usuario, se le asigna una ip y se incorpora a este orden. El planificador tiene un lmite en las ip a asignar, si an usuario no se le puede asignar una ip se considera rechazado. Para la asignacin de la ip se sigue las siguientes polticas: hay una pila de ips disponibles, de la cual se toma el tope. Si no hubiese ip disponibles, se revisa las ip liberadas, si hubiesen, se llena la pila de ips disponibles de tal forma que, en el tope, quede la primera ip en ser liberada.
Si no hubiese ip disponibles, ni liberadas, se rechaza la conexin
del usuario. El manejo del planificador, sobre los usuarios es el siguiente: Si un usuario intenta conectarse y no tiene tareas, es rechazado. Si es admitido se colocar de ultimo en el orden circular. para usuario que se haya admitido y se ejecutaron todas sus tareas, se considera atendido, sale del orden circular y su ip es liberada. El planificador adems, puede recibir rdenes especiales a las que llamaremos token, que no es ms que un nmero entero, que en caso de ser recibido se ejecuta una accin particular segn se explica en la siguiente seccin. El planificador almacena las tareas, hasta un mximo, hasta que recibe el token= -1 en ese momento se ejecutan en orden de llegada todas la tareas almacenadas, por cada usuario solo se puede ejecutar una tarea a la vez y se debe dar tiempo de ejecucin al siguiente usuario, esta planificacin se conoce como round-robin y se aplicar sobre las tareas de los usuarios. Cuando se hayan ejecutados las tareas almacenadas, no se volver a almacenar ms tareas, hasta recibir el token=-2 y se almacenaran, hasta alcanzar el mximo de tareas que puede almacenar. El planificador termina su labor cuando: se atendieron todos los usuarios admitidos y ya no hay ms usuarios haciendo solicitudes O se recibe le tokem=-10 (salida abrupta, finalizan todas las ejecuciones) De los usuarios que harn conexin, se tiene la siguiente informacin: 1. Identificador, alfanumrico de mximo 10 caracteres. 2. Numero de tareas a realizar
3. Tareas a realizar en una sola lnea, separadas por * entre tareas y #
los datos. Ejemplo: 1#5#7*6#3#3*5#4 Suma 5 y 7, eleva 3 a la 3 y obtn la raz cuadrada de 4 Donde 1 para suma, 2 para resta, 3, para multiplicacin, 4 para divisin, 5 para raz cuadrada, 6 para elevacin
Se requiere que usted, haga un programa en C que simule todos los
procesos del planificador es importante que su proyecto pueda ser ejecutado en LINUX Usted recibir como insumos de su proyecto un archivo llamado: data.in que contendr toda la informacin referente al planificador, sus usuarios y sus tareas, puede haber varios casos de prueba y un archivo plan.confi que tendr la configuracin del planificador Su programa deber generar un archivo de salida con el nombre: planificador.out Que contendr la siguiente informacin:
Cantidad de usuarios que hicieron conexin
Cantidad de usuarios rechazados, admitidos y atendidos. Por cada usuario la cantidad de tareas admitidas y rechazadas Por cada usuario, se debe especificar: la tarea, valores y resultado. Recuerde que un usuario se puede conectar varias veces. Si hay ips liberadas: cuantas y cuales si la salida fue abrupta se debe especificar en la cabecera de la salida: salida abrupta y aadir todo lo anterior ms: Usuarios pendientes (en el orden circular) y sus tareas almacenadas para ejecucin