sábado, 25 de octubre de 2014

MEMORIA EN DISCO

DATOS DINAMICOS






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.