Ir al contenido principal

Entradas

Mostrando las entradas con la etiqueta semaforo

Semaforos del Sistema en C/C++ sobre Linux

Crear semaforos en Linux para sincronizar procesos # include < sys/ipc.h > # include < sys/sem.h > void main ( ) { key_t llave ; int id_semaforo ; //algun archivo para crear la llave, todos los procesos //que desean obtener la misma llave deben pasar los mismos //parametros, con la misma llave tambien se adquiere el mismo //conjunto de semaforos llave = ftok ( " /bin/bash " , 'X' ) ; //crear 10 semaforos con persimos 0666 (rw-rw-rw-) id_semaforo = semget ( llave , 10 , 0666 | IPC_CREAT ) ; } al crear los semaforos en un proceso, es posible adquirir el mismo conjunto de semaforos desde otro proceso con una llamada a semget # include < sys/ipc.h > # include < sys/sem.h > void main ( ) { key_t llave ; int id_semaforo ; //la misma llave para obtener acceso al conjunto de semaforos creado llave = ftok ( " /bin/bash " , 'X' ) ; i...

Semáforos en Java, Sincronizar Threads

Este ejemplo muestra como utilizar semáforos para coordinar un grupo de threads, este problema implementa un caso de lectores-lectores, donde dos tipos de "lectores" pueden cooperar con los de su mismo tipo, pero son excluyentes con los del tipo contrario, en el caso particular tenemos un puente de un solo carril, que permite el paso en los dos sentidos, un tipo de "lector" son los carros que van al Este, estos pueden entrar al puente acompañados de otros carros que vayan en el mismo sentido, pero son excluyentes con los carros que van al Oeste, por lo que debe existir exclusión mutua Este-Oeste y cooperar entre Este-Este y Oeste-Oeste. Este programa fue realizado como practica del curso de Sistemas Operativos 1 de la Carrera de Ingeniería en Ciencias y Sistemas de la Facultad de Ingeniería de la Universidad de San Carlos de Guatemala. Descargar Código Fuente JDeveloper 11g

Sincronizar Procesos con Semáforos en Linux

Este problema fue planteado como practica en el curso de Sistemas Operativos 1 de la carrera de ingeniería en Ciencias y Sistemas de la Universidad de San Carlos de Guatemala, el problema básicamente es coordinar a un grupo de turistas para que puedan cruzar un puente, el cual tiene un limite en el peso soportado, para esto algunos turistas deben esperar en la entrada del puente hasta que el peso libre sea suficiente para soportarlos. la implementacion se realizo con semáforos del sistema y memoria compartida, los elementos básicos de IPC (Comunicación Entre Procesos). se utilizaron las librerías #include <sys/ipc.h> #include <sys/shm.h> #include <sys/sem.h> y las funciones semop ftok shmget shmat semget semctl shmdt shmctl Descargar Código Fuente

Como Sincronizar Threads en Java

Una de las características importantes de Java es la posibilidad de realizar tareas de forma concurrente, usando la abstracción Thread, con la ejecución concurrente surge el problema de acceder a recursos compartidos y causar efectos indeseados debido a dicho acceso concurrente, esto se conoce como el problema de la región critica, tenemos un objeto que debe ser usado de forma secuencial, porque su uso concurrente produce resultados indeseados, en la teoría se estudian los algoritmos de Dekker, los semáforos y algunas otras soluciones incluso a nivel de hardware como test&set. En Java el acceso a un objeto puede ser forzado de forma serial, con el uso de métodos sincronizados  en este ejemplo, se crean varios Threads accediendo todos a una variable interna protegida por un método de acceso sincronizado, lo que garantiza acceso secuencial. Descargar Codigo Fuente  en JDeveloper