martes, 15 de marzo de 2016

procesos e hilos .

PROCESOS E HILOS





Un proceso es una entidad que posee 2 características importantes:

· Recursos: Básicamente: un espacio de direcciones (programas, datos y pila y un PCB), archivos, memoria, etc. El SOP realiza la función de protección para evitar interferencias no deseadas entre procesos en relación con los recursos.



· Planificación/Ejecución: El proceso sigue una ruta de ejecución. Tiene un PC, un Estado de ejecución (Listo, bloqueado, ejecutándose, etc.) y una prioridad.



Estas dos características son independientes y pueden ser tratadas como tales por los sistemas de operación. En algunos sistemas de operación se le denomina a la unidad activa hilo (thread) y a la unidad propietaria de recursos se le suele denominar proceso o tarea.



En un entorno multihilo se le asocia a los procesos:

ü Un espacio de direcciones virtuales que soporta la imagen del proceso.

ü Acceso protegido a procesadores, otros procesos, archivos y recursos de E/S

ü En un entorno multihilo se asocian a cada hilo:

ü Un estado de ejecución.

ü Un PC, un contexto (conjunto de registros) que se almacena cuando no está en ejecución.

ü Una pila.

ü Un espacio de almacenamiento para variables locales.

ü Acceso a la memoria y recursos del proceso.



Para que la comunicación entre procesos sea posible es necesario usar las llamadas al sistema. Los threads comparten el mismo espacio de direcciones. Por lo tanto el cambio de contexto entre un thread y otro que pertenecen al mismo proceso pudiera hacerse de forma totalmente independiente del sistema de operación. Los cambios de contexto de procesos son más costosos. Implican salvar el contexto del proceso, cambio de modo (trap al sistema de operación, etc), otro cambio de modo, restaurar contexto del nuevo proceso.



Implementaciones de hilos:



● Threads a nivel de usuario.

● Threads a nivel de kernel

● Enfoque combinado, procesos Livianos



Usando hilos, se puede permitir el uso de llamadas al sistema bloqueantes sin necesidad de “bloquear” todo el proceso. Esta propiedad vuelve a los hilos particularmente atractivos para su uso dentro de sistemas distribuidos. Concentrémonos en la arquitectura Cliente Servidor.



CLIENTES MULTIHILOS



Sirven para esconder la latencia de comunicación a través de la red.  

 

lunes, 14 de marzo de 2016

CLASIFICACON DE LOS SISTEMAS DISTRIBUIDOS SISD, SIMD, MISD, MIMD



                 SISD, SIMD, MISD, MIMD


En 1972 Michael Flynn, profesor de ingeniería eléctrica en la de la Universidad de Stanford, publicó un documento en donde escogió dos características de las computadoras y probó con las 4 combinaciones posibles. Dos estaban en la mente de todos, y las otras no.

Esta taxonomía es ampliamente conocida y aceptada. Describe las computadoras por como los flujos de instrucciones interactúan con los flujos de información.

Esta clasificación es:

Número de Flujos de Información
Número de Flujos de Instrucciones.
  solo
Uno solo
Múltiples
Uno solo
SISD
SIMD
Múltiples
MISD
MIMD


•SISD:
•En computación, SISD (del inglés Single Instruction, Single Data, en español: "una instrucción, un dato") es un término que se refiere a una arquitectura computacional en la que un único procesador ejecuta un sólo flujo de instrucciones, para operar sobre datos almacenados en una única memoria.
 


MISD:
•En computación, MISD (del inglés Múltiple Instruction, Single Data, en español: "múltiples instrucciones, un dato") es un tipo de arquitectura computacional (particularmente de computación paralela) donde muchas unidades funcionales realizan diferentes operaciones en los mismos datos. Las arquitecturas segmentadas pertenecen a este tipo, aunque en un extremo se podría llegar a decir que los datos son diferentes después de ser procesados por cada etapa en el pipeline, con lo cual no entraría en esta categoría.
•Las máquinas tolerantes a fallos ejecutan la misma instrucción redundantemente para detectar y corregir errores, utilizando task replication, son consideradas de este tipo. No existen muchos ejemplos de esta arquitecura dado que las técnicas más comunes de procesamiento de datos en paralelo suelen ser más apropiadas para MIMD y SIMD. Específicamente, facilitan el escalamiento y el uso de recursos computacionales mejor que MISD. 

SIMD:
•En computación, SIMD (del inglés Single Instruction, Multiple Data, en español: "una instrucción, múltiples datos") es una técnica empleada para conseguir paralelismo a nivel de datos.
•Los repertorios SIMD consisten en instrucciones que aplican una misma operación sobre un conjunto más o menos grande de datos. Es una organización en donde una única unidad de control común despacha las instrucciones a diferentes unidades de procesamiento. Todas éstas reciben la misma instrucción, pero operan sobre diferentes conjuntos de datos. Es decir, la misma instrucción es ejecutada de manera sincronizada por todas las unidades de procesamiento.

MIMD:

En computación, MIMD (del inglés Multiple Instruction, Multiple Data, en español "múltiples instrucciones, múltiples datos") es una técnica empleada para lograr paralelismo. Las máquinas que usan MIMD tienen un número de procesadores que funcionan de manera asíncrona e independiente. En cualquier momento, cualquier procesador puede ejecutar diferentes instrucciones sobre distintos datos. La arquitectura MIMD pueden utilizarse en una amplia gama de aplicaciones como el diseño asistido, simulación, modelado y en interruptores.

Las computadoras MIMD pueden categorizarse por tener memoria compartida o distribuida, clasificación que se basa en cómo el procesador MIMD accede a la memoria. La memoria compartida de las máquinas puede estar basada en buses, extensiones, o de tipo jerárquico. Las máquinas con memoria distribuida pueden tener esquemas de interconexión en hipercubo o malla.