lunes, 1 de diciembre de 2014
sábado, 25 de octubre de 2014
BLOQUEO MUTUO
En sistemas operativos,
el bloqueo mutuo (también
conocido como interbloqueo, traba mortal, deadlock,
abrazo mortal) es el bloqueo permanente de un conjunto de procesos o hilos de ejecución en
un sistema concurrente que compiten por recursos del sistema
o bien se comunican entre ellos. A diferencia de otros problemas de
concurrencia de procesos, no existe una solución general para los
interbloqueos.
Todos los
interbloqueos surgen de necesidades que no pueden ser satisfechas, por parte de
dos o más procesos. En la vida real, un ejemplo puede ser el de dos niños que
intentan jugar al arco y flecha, uno toma el arco, el otro la flecha. Ninguno
puede jugar hasta que alguno libere lo que tomó.
En el siguiente
ejemplo, dos procesos compiten por dos recursos que necesitan para funcionar,
que sólo pueden ser utilizados por un proceso a la vez. El primer proceso
obtiene el permiso de utilizar uno de los recursos (adquiere el lock sobre ese recurso). El segundo proceso
toma el lock del otro recurso, y luego intenta utilizar el recurso ya utilizado
por el primer proceso, por lo tanto queda en espera. Cuando el primer proceso a
su vez intenta utilizar el otro recurso, se produce un interbloqueo, donde los
dos procesos esperan la liberación del recurso que utiliza el otro proceso.
CONDICIONES
·
Condición de exclusión mutua: existencia de al
menos de un recurso compartido por los procesos, al cual sólo puede acceder uno
simultáneamente.
·
Condición de retención y espera: al menos un
proceso Pi ha adquirido un recurso Ri, y lo retiene
mientras espera al menos un recurso Rj que ya ha sido
asignado a otro proceso.
·
Condición de no expropiación: los recursos no
pueden ser expropiados por los procesos, es decir, los recursos sólo podrán ser
liberados voluntariamente por sus propietarios.
·
Condición de espera circular: dado el conjunto
de procesos P0...Pm(subconjunto del
total de procesos original),P0 está esperando un
recurso adquirido por P1, que está
esperando un recurso adquirido por P2,... ,que está
esperando un recurso adquirido por Pm, que está
esperando un recurso adquirido por P0. Esta condición
implica la condición de retención y espera.
PREVENCION
Los bloqueos mutuos
pueden prevenirse asegurando que no suceda alguna de las condiciones necesarias
vistas anteriormente.
·
Eliminando la exclusión mutua: ningún proceso puede tener acceso
exclusivo a un recurso. Esto es imposible para procesos que no pueden ser
encolados (puestos en un spool), e incluso con colas también pueden ocurrir
interbloqueos.
·
La condición de posesión y espera puede ser eliminada haciendo que los
procesos pidan todos los recursos que van a necesitar antes de empezar. Este
conocimiento por adelantado muchas veces es imposible nuevamente. Otra forma es
requerir a los procesos liberar todos sus recursos antes de pedir todos los
recursos que necesitan. Esto también es poco práctico en general.
·
La condición de no expropiación puede ser también imposible de eliminar
dado que un proceso debe poder tener un recurso por un cierto tiempo o el
procesamiento puede quedar inconsistente.
·
La condición de espera circular es la más fácil de atacar. Se le permite
a un proceso poseer sólo un recurso en un determinado momento, o una jerarquía
puede ser impuesta de modo tal que los ciclos de espera no sean posibles.
EL BANQUERO
El Algoritmo
del banquero, en sistemas operativos es una forma de evitar el interbloqueo, propuesta por primera vez por Edsger Dijkstra. Es un acercamiento teórico
para evitar los interbloqueos en la planificación de recursos. Requiere conocer
con anticipación los recursos que serán utilizados por todos los procesos. Esto
último generalmente no puede ser satisfecho en la práctica.
Este algoritmo usualmente es explicado usando la
analogía con el funcionamiento de un banco. Los clientes representan a los
procesos, que tienen un crédito límite, y el dinero representa a los recursos.
El banquero es el sistema operativo.
El banco confía en que no tendrá
que permitir a todos sus clientes la utilización de todo su crédito a la vez.
El banco también asume que si un cliente maximiza su crédito será capaz de
terminar sus negocios y devolver el dinero a la entidad, permitiendo servir a
otros clientes.
El algoritmo mantiene al sistema
en un estado seguro. Un sistema se encuentra en un estado seguro si
existe un orden en que pueden concederse las peticiones de recursos a todos los
procesos, previniendo el interbloqueo. El algoritmo del banquero funciona
encontrando estados de este tipo.
Los procesos piden recursos, y
son complacidos siempre y cuando el sistema se mantenga en un estado seguro
después de la concesión. De lo contrario, el proceso es suspendido hasta que
otro proceso libere recursos suficientes.
En términos más formales, un sistema se encuentra
en un estado seguro si existe una secuencia segura. Una secuencia segura es una
sucesión de procesos, <P1,..., Pn>, donde para un proceso Pi, el pedido de recursos puede ser
satisfecho con los recursos disponibles sumados los recursos que están siendo
utilizados por Pj, donde j < i. Si no hay suficientes recursos
para el proceso Pi, debe esperar hasta que algún proceso Pj termine su ejecución y libere sus
recursos. Recién entonces podrá Pi tomar los recursos necesarios,
utilizarlos y terminar su ejecución. Al suceder esto, el proceso Pi+1 puede tomar los recursos que
necesite, y así sucesivamente. Si una secuencia de este tipo no existe, el
sistema se dice que está en un estado inseguro, aunque esto no implica que esté
bloqueado.
Así, el uso de este tipo de
algoritmo permite impedir el interbloqueo, pero supone una serie de
restricciones:
·
Se debe
conocer la máxima demanda de recursos por anticipado.
·
Los
procesos deben ser independientes, es decir que puedan ser ejecutados en
cualquier orden. Por lo tanto su ejecución no debe estar forzada por
condiciones de sincronización.
·
Debe
haber un número fijo de recursos a utilizar y un número fijo de procesos.
·
Los
procesos no pueden finalizar mientras retengan recursos.
COOPERACIÓN DE PROCESOS
La concurrencia de
procesos se refiere a las situaciones en las que dos o más procesos puedan
coincidir en el acceso a un recurso compartido o, dicho de otra forma, que
requieran coordinarse en su ejecución. Para evitar dicha coincidencia, el
sistema operativo ofrece mecanismos de arbitraje que permiten coordinar la
ejecución de los procesos.
Un ejemplo de un problema
de concurrencia sería el siguiente: Dados dos procesos A y B, suponiendo que
ambos se ejecutan indefinidamente en el tiempo, el proceso A debe recibir
tiempo de ejecución antes que B, tras esto, el proceso B debe recibir su
oportunidad de ejecución, dando paso de nuevo al proceso A y así sucesivamente
Hay dos formas básicas de interacción entre los procesos:
§ Relaciones
de competencia: Dados
dos procesos A y B, ambos procesos tienen objetivos diferentes y compiten por
los recursos para conseguirlos. Por ejemplo, dos procesos desean modificar el
contenido de un mismo fichero, pero no deben hacerlo de manera simultánea o
quedará en un estado incoherente.
§ Relaciones
de cooperación: Dados
dos procesos A y B, ambos con un mismo objetivo, se ponen de acuerdo a
la hora de emplear los recursos existentes para alcanzarlos. Por ejemplo, si el
proceso A produce un objeto que es consumido por el proceso B, hasta que el
proceso A no produzca, el proceso B no debe consumir y viceversa.
Los
mecanismos de arbitraje que ofrece el sistema operativo son básicamente dos:
§ Mecanismos de sincronización: el sistema operativo
ofrece mecanismos que permiten a los procesos coordinar su ejecución para
conseguir el objetivo sin que sucedan situaciones no deseadas, como por ejemplo
que dos o más procesos coincidan simultáneamente en el acceso a un cierto
recurso que no se puede compartir.
§ Mecanismos de mensajería: el sistema operativo
ofrece mecanismos de comunicación entre procesos mediante mensajes. El
intercambio de mensajes entre procesos permite coordinarlos.
Los mecanismos de sincronización los podemos catalogar en dos
categorías:
§ Optimistas:
Este mecanismo considera que la frecuencia de acceso a un cierto recurso
compartido es baja. Este tipo tiene mas consumo de memoria, ya que
tiene que copiar el recurso compartido y en caso de interferencia en el hilo
tiene que volver a ejecutarlo y consume mas recursos.
§ Pesimistas:
Este mecanismo permite coordinar la ejecución de dos o más procesos que acceden
al recurso compartido con una frecuencia alta.
Dependerá del criterio del
programador el tipo de mecanismo que utilice ya que puede que no elija el tipo
correcto. Por ejemplo, puede que la frecuencia de acceso a un cierto recurso
sea alta y el programador le asigna un mecanismo optimista, esto provocaría no
obtener el resultado esperado.
PARALELISMO
El paralelismo se basa en la informática, es una función que realiza el procesador para ejecutar varias tareas al mismo tiempo. Es decir, puede realizar varios cálculos simultáneamente, basado en el principio de dividir los problemas grandes para obtener varios problemas pequeños, que son posteriormente solucionados en el paralelo.
Aplicaciones
El empleo de la computación paralela se convierte cada día en mas grandes y rápida, muchos problemas considerados anteriormente muy largos y costosos se han podido solucionar. El paralelismo se ha utilizado para muchas temáticas diferentes, desde bioinformática para hacer plegamientos de proteínas, hasta economía para hacer simulaciones en matemáticas financieras.
Aplicaciones comerciales. Las aplicaciones para sistemas en paralelo se están expandiendo al ganar impulso el mercado de aplicaciones comerciales estratégicas y entrar en sus fases iníciales el mercado de servidores video.
- Proceso de rendimiento global. Tanto los usuarios técnicos como los comerciales están evaluando los sistemas en paralelo como motores de rendimiento global o throughput.
- Escalamiento para gestión de capacidad. En el mercado comercial, los usuarios están explorando el paralelismo como una forma de ofrecer una gestión de la capacidad optimizada y de bajo riesgo.
- Impulso del software. Los vendedores de software están comenzando a mostrar un mayor interés en desarrollar aplicaciones paralelas como consecuencia de que cierto número de vendedores de hardware importantes están suministrando productos de proceso en paralelo o han anunciado estrategias para penetrar en este mercado.
Tipos de paralelismo Informática
1. Nivel bit
Se basa en el tamaño de la palabra que es capaz de manejar el procesador:
8 bits
16 bits
32 bits
64 bits
Mientras más grande el tamaño de la palabra menos instrucciones ejecuta el procesador para realizar una operación determinada.
2. Nivel instrucción
Mecanismos de la arquitectura son utilizados entonces para ejecutar este tipo de paralelismo:
Pipelining
Superscalar
Ejecución desordenada
Ejecución especulativa
Renombramiento de registros
Predicción de precedencia de memoria
Predicción de ramificaciones del flujo
3. Nivel de Datos
Este tipo de paralelismo se enfoca en la distribución de los datos entre varios procesadores.
Se conoce también como paralelismo a nivel de lazos (loop-level paralelism).
4. Nivel tarea
En este caso un programa paralelo que ejecuta cálculos distintos sobre el mismo conjunto de datos o sobre datos diferentes.
El paralelismo funcional generalmente no escala con el tamaño del problema.
El paralelismo o procesamiento paralelo ha sido empleado durante muchos años, sobre todo para la computación de alto rendimiento. Teniendo en cuenta las generaciones de procesadores y sus características.
Obtener distintos resultados a partir de un mismo conjunto de datos, por ejemplo:
Para un matriz hallar
El determinante
La traspuesta
La inversa
Desventajas
Requieren de un gran número de ciclos de procesamiento o acceso a una gran cantidad de datos.
Encontrar un hardware y un software que permitan brindar estas utilidades comúnmente proporciona inconvenientes de costos, seguridad y disponibilidad.
Ventajas
Brinda a las empresas, instituciones y usuarios en general el beneficio de la velocidad.
Ventajas competitiva, parvee una mejora de los tiempos para la producción de nuevos productos.
Colaboración y flexibilidad operacional.
Aplicaciones
El empleo de la computación paralela se convierte cada día en mas grandes y rápida, muchos problemas considerados anteriormente muy largos y costosos se han podido solucionar. El paralelismo se ha utilizado para muchas temáticas diferentes, desde bioinformática para hacer plegamientos de proteínas, hasta economía para hacer simulaciones en matemáticas financieras.
Aplicaciones comerciales. Las aplicaciones para sistemas en paralelo se están expandiendo al ganar impulso el mercado de aplicaciones comerciales estratégicas y entrar en sus fases iníciales el mercado de servidores video.
- Proceso de rendimiento global. Tanto los usuarios técnicos como los comerciales están evaluando los sistemas en paralelo como motores de rendimiento global o throughput.
- Escalamiento para gestión de capacidad. En el mercado comercial, los usuarios están explorando el paralelismo como una forma de ofrecer una gestión de la capacidad optimizada y de bajo riesgo.
- Impulso del software. Los vendedores de software están comenzando a mostrar un mayor interés en desarrollar aplicaciones paralelas como consecuencia de que cierto número de vendedores de hardware importantes están suministrando productos de proceso en paralelo o han anunciado estrategias para penetrar en este mercado.
Tipos de paralelismo Informática
1. Nivel bit
Se basa en el tamaño de la palabra que es capaz de manejar el procesador:
8 bits
16 bits
32 bits
64 bits
Mientras más grande el tamaño de la palabra menos instrucciones ejecuta el procesador para realizar una operación determinada.
2. Nivel instrucción
Mecanismos de la arquitectura son utilizados entonces para ejecutar este tipo de paralelismo:
Pipelining
Superscalar
Ejecución desordenada
Ejecución especulativa
Renombramiento de registros
Predicción de precedencia de memoria
Predicción de ramificaciones del flujo
3. Nivel de Datos
Este tipo de paralelismo se enfoca en la distribución de los datos entre varios procesadores.
Se conoce también como paralelismo a nivel de lazos (loop-level paralelism).
4. Nivel tarea
En este caso un programa paralelo que ejecuta cálculos distintos sobre el mismo conjunto de datos o sobre datos diferentes.
El paralelismo funcional generalmente no escala con el tamaño del problema.
El paralelismo o procesamiento paralelo ha sido empleado durante muchos años, sobre todo para la computación de alto rendimiento. Teniendo en cuenta las generaciones de procesadores y sus características.
Obtener distintos resultados a partir de un mismo conjunto de datos, por ejemplo:
Para un matriz hallar
El determinante
La traspuesta
La inversa
Desventajas
Requieren de un gran número de ciclos de procesamiento o acceso a una gran cantidad de datos.
Encontrar un hardware y un software que permitan brindar estas utilidades comúnmente proporciona inconvenientes de costos, seguridad y disponibilidad.
Ventajas
Brinda a las empresas, instituciones y usuarios en general el beneficio de la velocidad.
Ventajas competitiva, parvee una mejora de los tiempos para la producción de nuevos productos.
Colaboración y flexibilidad operacional.
Suscribirse a:
Entradas (Atom)