Septiembre 2008 (con Soluciones) - DSA-Research

fd1=open(?data/doc/examen?,O_CREATE?); ... Proponer el código del esquema
de ejecución de este grafo (1)usando fork() y wait(). ..... pidA = Fork(); exec(?A);.

Part of the document


Ingeniería Informática. Curso 3º
Sistemas Operativos
Examen Final. PROBLEMAS.
5 de Septiembre de 2008
1. Es necesario modelar el comportamiento de un ascensor que presta
servicio a un edificio de 20 pisos. Dicho ascensor es utilizado por
robots para subir a su planta destino. El ascensor se encuentra
inicialmente en la planta baja. Los robots afluyen continuamente y van
accediendo al ascensor en la planta baja. Cuando hay 5 robots en el
ascensor, éste cierra sus puertas; los demás robots tendrán que esperar.
Cada robot que consigue acceder al ascensor solicita un piso de destino
(por simplicidad consideraremos que cada robot subido al ascensor va un
piso diferente).
Una vez ocupado el ascensor al completo, éste se pone en marcha y
sube, accediendo a los pisos solicitados en orden de recorrido. El robot
que haya llegado a su destino se baja y acaba su operación.
Vaciado el ascensor, éste regresa inmediatamente a la planta baja para
cargar 5 nuevos robots.
El comportamiento de ambos procesos los podemos esquematizar así:
|robot(int piso_destino) |ascensor() |
|- Esperar a que haya sitio en el |Ir a planta baja(); // función |
|ascensor, y entrar cuando sea |dada. No implementar |
|posible; |while (true) { |
|- Pulsar piso de destino; |esperar a que entren 5 robots; |
|- Notificar al ascensor si ya hay|for (i=0; i