Actividad 4.
Clase práctica
Sistemas Operativos
Actividad 4. Aplicaciones de problemas clásicos de sincronización.
Objetivo: Aplicar mecanismos de IPC para solucionar problemas clásicos de comunicación y
sincronización.
Bibliografía
[1] Sistemas operativos modernos. Andrew S. Tanembaum. Epígrafes 2.2.8, 2.3.5, 2.3.7.
Complementaria
[2] Sistemas Operativos. Williams Stallings. Epígrafes 5.3, 5.4, 5.5, 5.6, 6.6.
[3] Fundamentos de los Sistemas Operativos. Abraham Silverschatz. Epígrafes 6.5, 6.6.
Orientaciones
En esta actividad deberás aplicar los conceptos introducidos en la conferencia anterior. Ello
significa que debes dominarlos para enfrentar los ejercicios. Te recomendamos entonces que,
antes de continuar, repases mentalmente los siguientes conceptos: sección crítica, exclusión
mutua, semáforo, paso de mensajes.
Ejercicios
1. Se tienen N procesos clientes y un proceso servidor que comparten un buffer único. Inicialmente
el buffer está vacío, su capacidad es de M registros. El proceso servidor permanece inactivo hasta
que el buffer se llene, entonces procesa todas las peticiones y vuelve a dormir. Cada cliente
produce un número x de peticiones que coloca en el buffer, el cliente que llene el buffer despierta
al servidor.
a. Coloque las directivas y variables necesarias inicializadas correctamente, para lograr la
sincronización de los procesos utilizando el mecanismo de semáforos.
b. Mencione los conceptos de condiciones de competencia y exclusión mutua.
2. Realice los ajustes del siguiente problema completando el código y colocando los semáforos que
se necesitan para lograr la sincronización de los procesos y la exclusión mutua. Inicialice los
semáforos necesarios. Descripción del problema:
Tenemos un restaurante que tiene capacidad para 100 personas, cada vez que llega una persona
el portero le comunica si hay capacidad, en caso de que no haya, la persona debe esperar a que
se desocupe una mesa, en caso contrario se sienta en la mesa y le hace una solicitud a uno de
los meseros. El cocinero es el que hace la comida de acuerdo a las solicitudes del mesero y las
va colocando en la barra. Esta barra solo puede ser accedida por el mesero y el cocinero, uno a
Universidad de las Ciencias Informáticas 1
Actividad 4. Clase práctica
la vez. El mesero va recogiendo los platos de la barra para servírselos a las personas que lo
solicitaron y solo puede servir 100 platos que es la máxima capacidad de personas que tiene el
restaurante.
Platos = ; Proceso Cocinero
Proceso Mesero {
{ while(true) {
while(true) { if()
if() else
else {
{ Cocinar();
Servir(); Platos++;
Platos--; }
} }
} }
}
a. Realice los ajustes del problema completando el código, utilizando el paso de mensajes para
lograr la sincronización de los procesos y la exclusión mutua. Inicialice todas las estructuras
que vaya a utilizar.
3. Se tienen dos procesos que actúan concurrentemente en la monitorización de los accesos a una
PC. El proceso X, analiza las conexiones y dependiendo de las políticas de seguridad de la PC
las autoriza o deniega, generando un fichero .log por cada conexión analizada, que es
almacenado en un buffer de memoria de tamaño N, temporalmente. El proceso Y es el
responsable de analizar los ficheros .log almacenados en el buffer, para informar al usuario en
caso de que exista algún problema, como por ejemplo violación de las políticas de seguridad. En
este caso se almacenará este fichero en una carpeta llamada TMP, para una posterior revisión
por el usuario y en caso contrario se eliminará el fichero del buffer.
a. Sincronice la ejecución de estos procesos, utilizando las primitivas de semáforos para que no
exista conflicto con la ejecución concurrente de los mismos. Declare e inicialice todos los
semáforos utilizados.
b. Mencione las cuatro condiciones que deben cumplirse para tener una solución adecuada al
problema de la sección crítica. Explique brevemente una de ellas.
4. Se tiene una aplicación Web que utiliza la planificadora de una Universidad para planificar los
horarios de clases de los distintos grupos. Esta aplicación implica que cada vez que un estudiante
o profesor necesite ver el horario, iniciará un proceso que intenta leer del servidor la información.
Por otra parte, cada vez que la planificadora necesite realizar cambios en el horario, iniciará un
proceso que intenta escribir información en el servidor. Considere en esta solución que mientras
exista un lector consultando el horario, este no podrá ser modificado.
a. Sincronice la ejecución de estos procesos, utilizando las primitivas de semáforos para que no
exista conflicto entre la lectura y escritura de información en el servidor, teniendo en cuenta
que pueden existir varios procesos leyendo en un mismo momento sin crear conflictos.
Declare e inicialice todas las variables utilizados.
b. Explique brevemente cual es la diferencia fundamental entre: comunicación directa y
comunicación indirecta, en la comunicación entre procesos (IPC).
5. En la fábrica de helados Clic, se trabaja constantemente para satisfacer la voracidad que por este
Universidad de las Ciencias Informáticas 2
Actividad 4. Clase práctica
producto presentan los habitantes de la Universidad de las Ciencias Informáticas. Varias líneas
de producción principales funcionan simultáneamente en la producción de potes de helado. En la
#1 se elabora el helado en sí y en la #2 se preparan los potes, una tercera llena los potes con el
helado. La línea #1 produce en una cubeta de 15 litros que vierte en un tanque de 3000 litros,
cuando el tanque se llena la línea debe detenerse momentáneamente para evitar que se derrame
el helado. La línea #2 cuenta con varios brazos limpiadores que limpian los potes de 1 en 1, a
gran velocidad y los depositan en una plataforma con capacidad para 5000 potes, no pueden
colocar potes en la plataforma varios brazos a la vez porque podría ocasionar que sean dañados
por colisiones, en caso de que se llene la plataforma deben detenerse hasta que exista espacio
disponible. Cada pote tiene una capacidad de 200 mililitros. Cada noche los guardias de seguridad
friegan el tanque de helado y la plataforma de potes por lo que al día siguiente ambos amanecen
completamente limpios y vacíos.
a. Sincronice la ejecución de estos procesos, utilizando las primitivas de semáforos para que no
exista conflicto con la ejecución concurrente de los mismos. Declare e inicialice todas las
variables utilizados.
b. Menciones tres algoritmos que antecedieron a los semáforos y explique brevemente que
problemas tenía asociado uno de ellos.
Trabajo independiente
1. En el sistema operativo Linux, dos procesos actúan concurrentemente en la monitorización de
los accesos o intentos de acceso a una PC. El proceso A recibe las conexiones (o intentos de
conexiones) y genera un registro log (con un determinado formato) por cada una de ellas
almacenándolo en un buffer de memoria de un tamaño de 20 entradas. El proceso B es el
responsable de leer del buffer, clasificar los logs en INFO, WARNING, ALERTA o
EMERGENCIA y escribirlos en un fichero llamado [Link]. Pepe, que es el administrador del
sistema, escribió un programa que cuando es ejecutado lee cada 40 segundos el fichero
[Link] para detectar algún patrón que indique algún intento de ataque al sistema. En caso
positivo es enviado un correo a pepe@[Link] indicando la gravedad de la situación.
a. Modele la ejecución de estos tres procesos sincronizados con las primitivas de semáforos
para que no exista conflicto. Declare e inicialice todos los semáforos utilizados.
b. Mencione las condiciones que deben cumplirse para tener una solución adecuada al
problema de la sección crítica. Explique brevemente una de ellas.
2. Un cuentapropista dedicado a la venta de alimentos ligeros cuenta con dos ayudantes para la
elaboración de batidos de frutas. Uno de los ayudantes toma las frutas de un saco, las lava,
las pela, les saca la semilla y las coloca en una fuente con capacidad para 30 porciones. El
otro ayudante toma las frutas de la fuente, verifica que no tengan semillas o cáscaras y las
coloca en una batidora para batirlas; en caso de que alguna fruta tenga semillas o cáscaras
las coloca nuevamente en el saco para que el primer ayudante las limpie completamente. El
Universidad de las Ciencias Informáticas 3
Actividad 4. Clase práctica
cuentapropista es el encargado de vender los batidos ya preparados.
a. Modele el funcionamiento concurrente de los dos ayudantes y el cuentapropista,
apoyándose en el uso de semáforos para la sincronización, tenga en cuenta las
situaciones extremas.
Universidad de las Ciencias Informáticas 4