Documentos de Académico
Documentos de Profesional
Documentos de Cultura
INFORME DE LABORATORIO
(formato estudiante)
INFORMACIÓN BÁSICA
ASIGNATURA: SISTEMAS OPERATIVOS.
TÍTULO DE LA
Semáforos Contadores en Linux
PRÁCTICA:
NÚMERO DE NRO.
09 AÑO LECTIVO:
PRÁCTICA: SEMESTRE:
FECHA DE HORA DE
PRESENTACIÓN PRESENTACIÓN
INTEGRANTE (s):
Mollo Mayta Christian Harry NOTA:
DOCENTE(s):
NIETO VALENCIA, RENE ALONSO
SOLUCIÓN Y RESULTADOS
I. EJERCICIO RESUELTO.
1. El código muestra cómo se inicializa un semáforo (my_semaphore) con un valor de 10. A partir de aquí,
este semáforo podría ser utilizado en el programa para sincronizar el acceso a recursos compartidos
entre diferentes procesos o hilos.
UNIVERSIDAD NACIONAL DE SAN AGUSTIN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA
2. Este fragmento de código muestra únicamente las operaciones de inicialización y destrucción del
semáforo, pero en una aplicación real, se necesitan operaciones adicionales como wait y post para
gestionar el acceso adecuado a los recursos compartidos y garantizar la sincronización entre los procesos
o hilos.
UNIVERSIDAD NACIONAL DE SAN AGUSTIN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA
3. El código muestra cómo inicializar un semáforo con un valor de 1, obtener su valor inicial, realizar una
operación wait sobre el semáforo y obtener su valor nuevamente después de la operación. La operación
wait hace que el proceso espere si el semáforo tiene un valor de 0, lo que puede utilizarse para
sincronizar el acceso a recursos compartidos y evitar condiciones de carrera entre procesos o hilos.
4. El código muestra cómo inicializar un semáforo con un valor de 10, obtener su valor inicial, realizar una
operación post sobre el semáforo y obtener su valor nuevamente después de la operación. La operación
post incrementa el valor del semáforo, lo que puede utilizarse para liberar recursos compartidos y
permitir que otros procesos o hilos accedan a ellos de manera sincronizada.
UNIVERSIDAD NACIONAL DE SAN AGUSTIN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA
● Prueba 2: Podemos observar que el consumidor intenta consumir elementos del búfer
(caracter "B") en un bucle, pero como el productor no está activo y no produce elementos para
llenar el búfer, el consumidor se queda esperando en sem_wait(&llenos) en cada iteración.
Como resultado, el consumidor está detenido y no puede avanzar, lo que se refleja en la
repetición del mensaje "B Consumidor -->" sin detenerse.
UNIVERSIDAD NACIONAL DE SAN AGUSTIN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA
● Prueba 3: Podemos ver que el productor ha producido los caracteres "A" a "H" y los ha
colocado en el búfer. Después de eso, el productor quedó detenido en la línea
sem_wait(&vacios) y el programa se detuvo con el mensaje "Terminado". Esto indica que el
productor no puede seguir produciendo más elementos hasta que haya espacio disponible en el
búfer (lo que debe ser indicado por el consumidor a través del semáforo vacios). Sin embargo,
como el consumidor no se ha creado, el búfer permanece lleno y el productor no puede
continuar su ejecución
UNIVERSIDAD NACIONAL DE SAN AGUSTIN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA
2. Fabrica Bicicletas:
#include <stdio.h>
#include <semaphore.h>
#include <pthread.h>
while (1) {
// Montar cuadros
sem_wait(&sem_cuadros);
printf("OP2: Montó un cuadro\n");
sem_post(&sem_bicicletas);
}
return NULL;
}
sem_post(&sem_manillares);
sem_post(&sem_cuadros);
sem_post(&sem_piezas_OP1);
}
return NULL;
}
int main() {
pthread_t op1_tid, op2_tid, op3_tid, montador_tid;
sem_init(&sem_ruedas, 0, N);
sem_init(&sem_cuadros, 0, N);
UNIVERSIDAD NACIONAL DE SAN AGUSTIN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA
sem_init(&sem_manillares, 0, N);
sem_init(&sem_piezas_OP1, 0, M);
sem_init(&sem_bicicletas, 0, 0);
pthread_join(op1_tid, NULL);
pthread_join(op2_tid, NULL);
pthread_join(op3_tid, NULL);
pthread_join(montador_tid, NULL);
return 0;
}
UNIVERSIDAD NACIONAL DE SAN AGUSTIN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA
III. CUESTIONARIO.
● ¿Cuáles son las ventajas o desventajas encontradas del uso de Semáforos contadores?
Los semáforos contadores son una herramienta útil y poderosa para sincronizar el acceso a recursos
compartidos en programas concurrentes o paralelos. Permiten controlar la cantidad de recursos
disponibles y asegurar que los hilos o procesos accedan a ellos de manera ordenada y segura. Algunas de
las ventajas de los semáforos contadores son:
Ventajas:
● Sincronización eficiente y flexible.
● No requiere compartir memoria.
● Permite controlar la cantidad de recursos disponibles.
● Sin embargo, también presentan algunas desventajas:
Desventajas:
● Posible bloqueo o inanición si no se utilizan adecuadamente.
● Complejidad en el diseño y posible dificultad de depuración.
● Posible condición de carrera si no se sincronizan correctamente.
Es importante utilizar los semáforos contadores con cuidado y asegurarse de liberar adecuadamente los
recursos para evitar problemas de sincronización. En ciertos casos, otras técnicas de sincronización más
simples, como mutex o variables de condición, pueden ser preferibles según las necesidades del
programa y la naturaleza de los recursos que se deben proteger
● ¿En qué se diferencian los semáforos contadores a los semáforos vistos en el laboratorio
anterior?
Los semáforos binarios son más simples y adecuados para proteger recursos compartidos que solo
pueden ser utilizados por un hilo o proceso a la vez, mientras que los semáforos contadores son más
versátiles y permiten gestionar la disponibilidad de recursos en situaciones más complejas, como
productor-consumidor o control de acceso a recursos con capacidad limitada.
RETROALIMENTACIÓN GENERAL
REFERENCIAS Y BIBLIOGRAFÍA
UNIVERSIDAD NACIONAL DE SAN AGUSTIN
FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMA