de tucuman
a. Las aplicaciones: en el lenguaje mismo. Por ejemplo Java y C# ofrecen mecanismos para el acceso coordinado a los recursos compartidos. En cambio C yC++ no soportan la sincronización ni la concurrencia.
b. Biblioteca de tiempo de ejecución del lenguaje o en las funciones de API, es decir las aplicaciones pueden llamar a funciones en nivel de usuario para ayudarse en la coordinación. Estas funciones podrán implementar ahí mismo la solución.
c. Sistema operativo: mediante funciones de biblioteca, se podrá hacer llamadas al sistema para que elkernel proteja o coordine en bajo nivel las actividades de los procesos/hilos.
d. Hardware: Los programadores le llaman “hardware” a las instrucciones especiales que la CPU (en el nivel ISA) puede ofrecer para ayudar a la sincronización (por ejemplo: Deshabilitar interrupciones, hacer lectura/modificación/escritura en una sola instrucción: Test&Set, Switch, etc)
2. Las principales dificultadespara aprovechar eficientemente la concurrencia en las aplicaciones son:
a. Las tecnologías de software no han avanzado en ningún conjunto de paradigmas aplicables a la programación general para los programas concurrentes. Cada solución para programación concurrente necesita de un nuevo enfoque y diseño.
b. La sincronización se localiza en el corazón de cualquier implementación de programaciónconcurrente. Los sistemas operativos proporcionan sólo el mecanismo mínimo para soportar la sincronización y la concurrencia.
3. Problemas que plantea la concurrencia:
a. Condiciones de carrera: surge cuando varios procesos acceden de forma concurrente y sin coordinación a recursos compartidos. Donde dos o más procesos están leyendo o escribiendo algunos datos compartidos y el resultado final dependede quién se ejecuta y exactamente cuando lo hace. Para evitar que se produzcan condiciones de carrera, las instrucciones que operan sobre recursos de uso exclusivo deben ejecutarse en exclusión mutua o de forma atómica, es decir de forma completa e indivisible.
b. Condiciones de sincronización: a veces la solución de problemas impone un “orden de ejecución”, que debe cumplirse (esto ocurre conprocesos cooperativos)
c. El cuidado de ambas condiciones (carrera y sincronización) puede ocasionar 2 problemas:
i. Inanición: se denomina al efecto negativo que se ocasiona a un proceso, esto ocurre cuando un proceso no puede acceder a un RECURSO necesario para el PROGRESO del proceso. Se dice también que la ausencia de recurso genera el bloqueo del proceso.
ii. Interbloqueos (Dead Lock):supone un bloqueo permanente de un conjunto de procesos encadenados (en el sentido P1RiP2Rj……P1
4. Modelo de acceso a una sección crítica: Dijkstra, estudió el problema de la Exclusión Mutua y lo enfocó o enmarcó de la siguiente manera: “cada proceso tiene un segmento de código llamado sección crítica, en el que modifica variables comunes, actualiza una tabla, escriben un archivo, etc”. Esdecir toma un recurso de uso exclusivo. La característica importante es que cuando un proceso está ejecutando su sección crítica, ningún otro proceso puede ejecutar su correspondiente sección crítica. Para resolver el problema asociado a una sección crítica es necesario utilizar algún mecanismo de sincronización que permita a los procesos cooperar entre ellos sin problemas. El mecanismo que debenseguir los procesos que deseen ingresar a la sección crítica de código, deberán cumplir:
a. Cada proceso debe solicitar permiso para entrar en la sección crítica. Estas instrucciones son llamadas la entrada en la sección crítica. Si algún proceso se está ejecutando ya dentro de la sección crítica, este código de entrada para que el proceso que desea entrar espere.
b. Cuando un proceso sale de la...
Regístrate para leer el documento completo.