P. Universidad Católica de Valparaíso Escuela de Ingeniería Informática INF 250 - Sistemas de Computación Guía de Ejercicios Coordinación de Procesos 1.- Dado los procesos: P1() { write(“Operativos”); } P2() { write (“Sistemas”); } Usando el mínimo número de funciones sincronizar usando semáforos ambos procesos para que en la salida se escriba: Sistemas Operativos 2.- Ud. se ha convertido en Microempresario y ha montado un negocio de Lavandería automatizado. Esta Lavandería tiene 2 Lavadoras que pueden estar funcionando al mismo tiempo. La ropa para lavar es puesta en una correa deslizadora para ser asignada a una de las 2 máquinas. Cada carga de ropa es interpretada como un proceso para el Sistema Computacional que maneja las Lavadoras. Si las 2 máquinas están ocupadas, la ropa debe esperar en una cola común la cual tiene como largo máximo 28 cargas de ropa. Si la cola está al máximo, el proceso es terminado, no aceptando carga. Si la estructura de los Procesos de Carga de Ropa es el siguiente: Int n; /*Variable Global*/ Carga de Ropa () { While (n<30){ n++; Correa Deslizadora; Máquina Lavadora; n--; } } Se debe modificar el algoritmo anterior, para asegurar lo siguiente mediante semáforos: a) Asegurar que la variable global n, no sea modificada por 2 procesos a la vez b) Asegurar que 2 cargas de ropa sean asignadas a la misma Máquina. 3.- Se tienen 2 procesos paralelos: int x=0; Proceso A { while (true) x=x+1; } Proceso B { while (true) print (x); } Sincronizar usando semáforos, para que escriba la secuencia 0 1 2 3.... 4.- Se tienen 3 procesos P1, P2, P3. El código del proceso Pi (i= 1,2,3) es: Pi() { while (true) print (“Soy el proceso i \n”); (i=1,2,3 dependiendo del proceso) } Se desea mostrar en la salida lo siguiente: Soy el proceso 1 Soy el proceso 2 Soy el proceso 3 Soy el proceso 1 Soy el proceso 2 ..... Sincronizar usando semáforos 5.- Considere un Sistema con tres procesos fumadores y un proceso agente. Cada fumador continuamente enrolla un cigarro y se lo fuma. Pero para enrollar y fumar un cigarro, el fumador necesita tres ingredientes: tabaco, papel y la cerilla. Uno de los procesos fumadores tiene papel, otro tabaco y el tercero cerillas. El agente tiene infinito suministro de los tres materiales.El agente pone dos de los ingredientes en la mesa. El fumador quien tiene el ingrediente faltante, toma los dos ingredientes y fuma el cigarro, indicándole al agente cuando termina. El agente pone otros dos ingredientes, y el ciclo se repite. Escriba un programa para sincronizar el agente y los fumadores. 6.- Se tiene el siguiente esquema: Dos calles perpendiculares. Una de doble sentido, las otras dos unidireccionales y contrarias. a) Examine si existen problemas de deadlock y como evitarlos b) Si se dan las siguientes situaciones: - El vehículo B desea doblar a la izquierda y el vehículo C a la derecha. El vehículo B desea doblar a la izquierda y el vehículo C también. Escriba una solución libre de deadlocks para las situaciones anteriores. 7.- Se le ha encargado el diseño de un Sistema de comercio electrónico, donde el usuario puede adquirir diversos productos. El funcionamiento del Sistema es el siguiente: - Primer paso: El cliente consulta productos y precios de ellos. El proceso que atiende este primer paso soporta un máximo de 100 clientes simultáneos. - Segundo Paso: Elección del producto a adquirir y forma de pago. El cliente elige el producto, ingresa sus datos y luego la forma de pago. El proceso soporta un máximo de 50 clientes simultáneos, excepto cuando elige forma de pago, pues en ese momento disminuye en uno las existencias de los productos del Sistema, por lo cual sólo un cliente puede estar en este código. - Tercer Paso: Entrega de comprobante de compra. Una vez que el cliente ha elegido y cancelado su producto, se le entrega un comprobante de pago, que puede ser impreso por el cliente. Sólo un comprobante de compra puede ser generado a la vez. Cada cliente de este Sistema debe cumplir la siguiente secuencia: Consulta de Precios (Primer Paso), Elección y Cancelación (Segundo Paso) y entrega de comprobante (Tercer paso). El cliente puede abandonar el Sistema de Comercio en cualquier instante. Escriba en seudolenguaje el código de los tres procesos, sincronizándolos adecuadamente mediante semáforos, indicando claramente variables locales, globales y secciones críticas 8.- Existe un Sistema de venta de pasajes de una línea aérea que tiene terminales repartidos a lo largo del mundo. La sincronización para la venta de pasajes se realiza entre Sistemas Remotos ubicados en los clientes y un proceso creado por un Sistema Central para cada Sistema Remoto que consulta. Este Sistema central contiene una gran base de datos con la información. La comunicación se realiza por medio de mensajes entre el Sistema Remoto y los Procesos Centrales. El funcionamiento detallado del Sistema es el siguiente: - Los Sistemas Remotos envían información de consulta de disponibilidad de asientos en diferentes vuelos, por mensaje a su proceso que lo atiende en el Sistema Central. - N Procesos Centrales, creados para atender a Sistemas Remotos, pueden acceder simultáneamente a la base de datos para leerla. - El Proceso Central le envía un mensaje con la información al Sistema Remoto. - Si el Sistema Remoto quiere hacer la reserva, envía un mensaje con la petición al Proceso Central. - El Proceso Central accede a la base de datos para hacer la reserva, si no hay ningún proceso consultando la base de datos. Sólo un proceso realiza a la vez una reserva y ningún proceso puede estar, en ese momento,consultando la base de datos. Luego de hecha la reserva, envía mensaje de confirmación a Sistema Remoto. Escriba el código de los Sistemas Remotos y Procesos Centrales, realizando la sincronización por semáforos, libre de deadlocks y starvation. 9.- Se le ha solicitado la asesoría para la automatización de atención en una tienda de gran concurrencia a través de Internet. Esta tienda ofrece N productos, cada uno de los cuales lo administra un proceso vendedor, el que puede atender sólo un cliente a la vez. Cada cliente cuando ingresa al sitio Internet saca un número y espera ser atendido. Un vendedor cuando se desocupa atiende al siguiente número. a) Diseñe el algoritmo del proceso vendedor y cliente de un producto determinado, considerando que los procesos clientes y vendedores duermen si están esperando o no están atendiendo, respectivamente, siendo despertados por el vendedor o el primer cliente. Utilice semáforos y verifique que su algoritmo esté libre de deadlocks y starvation. b) Si el número de clientes que puede atender cada vendedor simultáneamente aumenta a 2, indique cambios en el algoritmo. 10.- Se le ha solicitado diseñar un Sistema de administración centralizado que funciona de la siguiente manera: - Existe un proceso central que maneja una base de datos con la información general del sistema - Existen 4 procesos remotos que se comunican con el proceso central para obtener información cada cierto tiempo. - Para que un Proceso remoto lea la base de datos del Servidor Central deben cumplirse 2 condiciones: Debe contar con la autorización del Sistema Central, lo que solicita por mensaje y luego debe poder ingresar a leer los datos al Sistema Central, actualizando, al mismo tiempo, los datos referentes a su lugar de administración. - Sólo un proceso puede obtener el mensaje de autorización (no pueden existir 2 procesos que obtengan un mensaje de autorización al mismo tiempo) y leer la base de datos a la vez. Diseñe una solución para el Sistema Central y los Sistemas Remotos libres de deadlock y starvation, utilizando semáforos para secciones críticas. 11.- Existe un edificio inteligente con un sistema de ingreso automatizado en todos sus pisos, el que es atendido por varios procesos. La secuencia que sigue una persona que ingresa por una puerta electrónica es la siguiente: - Primero ingresa un número secreto, que es verificado por un proceso servidor, el que puede atender a 10 procesos clientes como máximo simultáneamente. - Luego se le pide que pase por un lector la tarjeta con su identificación, información que es verificada por otro proceso servidor, el cual puede atender como máximo 6 procesos clientes. - Si el usuario no trae su tarjeta, lo indica presionando el botón N, en cuyo caso se procede a una verificación adicional donde se le solicita que ponga la huella digital del dedo meñique, lo quel es verificado por otro proceso servidor, que puede atender a 5 procesos clientes como máximo. - Si el usuario trae su tarjeta pasa al proceso final de autorización y apertura de puerta, el cual atiende a 15 procesos simultáneos. - Si no la trae debe pasar por el proceso de lectura de huella digital, antes de pasar al proceso final de autorización. - Sólo si los datos son válidos abrirá la puerta. Diseñe el código del proceso cliente y de los procesos servidores, sincronizándolos para que cumplan la secuencia indicada en forma correcta y protegiendo secciones críticas.