Utilizamos Cookies de terceros para generar estadísticas de audiencia y mostrar publicidad personalizada analizando tu navegación. Si sigues navegando estarás aceptando su uso. Más información X
PortadaForo AyudaTutoriales
InicioForosForo Virus

Sistemas Operativos -> Uso de semaforos

ingsteban
2010-12-12 19:46 - Respuestas: 1 - Tema nº: 2742066


Sistemas Operativos

Resuelva el siguiente problema por medio de semáforos:
En el país de Sangala en África hay un cañón muy profundo con una simple cuerda para cruzarlo.
Los sangalos necesitan cruzar ese cañón constantemente en ambas direcciones y pueden hacerlo poniendo una mano delante de otra de forma sucesiva. Como los sangalos son muy agresivos, si dos de ellos se encuentran en cualquier punto de la cuerda yendo en direcciones opuestas, estos se pelearán y terminarán cayendo por el cañón y muriendo. Por otro lado, la cuerda no es muy resistente y aguanta a un máximo de cinco sangalos simultáneamente. Si en cualquier instante hay más de cinco sangalos en la cuerda, ésta se romperá y los sangalos caerán también al vacío.
Asumiendo que podemos enseñar a los sangalos a usar semáforos, queremos diseñar un sistema de sincronización que:
1. No permita más de cinco sangalos en la cuerda.
2. Asegura que, una vez que un sangalo ha tomado la cuerda, ningún otro sangalo comenzará a recorrer la cuerda en la dirección opuesta.
3. No es necesario prevenir la inanición, es decir, una fila interminable de sangalos en una dirección puede provocar inanición sobre los sangalos que pretenden recorrer la cuerda en la otra dirección. Se supone que nunca existirá una fila interminable de sangalos. Existe una solución que previenen la inanición pero es muy ineficaz en el uso del recurso.
Para ello es necesario diseñar un solución (con el método gráfico o algorítmico de su elección) que lance aleatoriamente en el tiempo procesos sangalo_va() y sangalo_viene(). También es necesario que los procesos sangalo_va() y sangalo_viene() dispongan de la sincronización anteriormente indicada. Asumir la existencia de las funciones: cruzar_cuerda() y nuevo_sangalo(). La última de estas funciones espera un tiempo determinado y devuelve 1 o 0 dependiendo de la dirección de cruce del siguiente sangalo que va a aparecer.
Para la sincronización de los procesos, utiliza variables compartidas y semáforos. De igual forma, se utilizarán las funciones wait(s) y signal(s) para manipular los semáforos.


Posibles soluciones:
Sistemas operativos -> uso de semaforosSistemas operativos -> uso de semaforos
Sistemas operativosSistemas operativos
Sistemas operativos.Sistemas operativos.
Los sistemas operativosLos sistemas operativos
Sistemas operativosSistemas operativos
Godmol

Re: Sistemas Operativos -> Uso de semaforos - 2010-12-12 21:24 - Respuesta 2

Lamentablemente no estamos aquí para resolver tareas escolares. Si tienes que resolver ese problema es porque quien te lo ha propuesto piensa que debes saber resolverlo.



Espero que comprendas que debemos cerrar tu consulta y rogarte que no realices más preguntas de este tipo en el futuro

Salu2
Página:1

Respuestas relacionadas:

Dos sistemas operativosDos sistemas operativosForo
Dos sistemas operativosDos sistemas operativosForo
Dos sistemas operativosDos sistemas operativosForo
Dos sistemas operativosDos sistemas operativosForo
Dos sistemas operativosDos sistemas operativosForo
Dos sistemas operativosDos sistemas operativosForo
¿dos sistemas operativos?¿dos sistemas operativos?Foro
10 sistemas operativos de red10 sistemas operativos de redForo
Dos sistemas operativosDos sistemas operativosForo
Dos sistemas operativosDos sistemas operativosForo
InicioSecciones
^ SubirAviso legal
Política Privacidad
Configurarequipos20 Noviembre 2024