lunes, 29 de octubre de 2012

Unidad 3 PROCESOS Y PROCESADORES EN SISTEMAS DISTRIBUIDOS


3.1 PROCESOS Y PROCESADORES EN SISTEMAS DISTRIBUIDOS
Un hilo de ejecución, en sistemas operativos, es una característica que permite a una aplicación realizar varias tareas concurrentemente. Los distintos hilos de ejecución comparten una serie de recursos tales como el espacio de memoria, los archivos abiertos, situación de autenticación, etc. Esta técnica permite simplificar el diseño de una aplicación que debe llevar a cabo distintas funciones simultáneamente. 

Los hilos de ejecución que comparten los mismos recursos, sumados a estos recursos, son en conjunto conocidos como un proceso. El hecho de que los hilos de ejecución de un mismo proceso compartan los recursos hace que cualquiera de estos hilos pueda modificar éstos.



Cuando un hilo modifica un dato en la memoria, los otros hilos acceden e ese dato modificado
inmediatamente.
Un ejemplo de la utilización de hilos es tener un hilo atento a la interfaz gráfica (iconos, botones, ventanas), mientras otro hilo hace una larga operación internamente. De esta manera el programa responde de manera más ágil a la interacción con el usuario. También pueden ser utilizados por una aplicación servidora para dar servicio a múltiples clientes.



3.2 METODO DE DISTRIBUCION DE CARGA (HILOS, TAREAS, PROCESOS)
Sincronización de hilos
Todos los hilos comparten el mismo espacio de direcciones y otros recursos como pueden ser archivos abiertos. Cualquier modificación de un recurso desde un hilo afecta al entorno del resto de los hilos del mismo proceso. Por lo tanto, es necesario sincronizar la actividad de los distintos hilos para que no interfieran unos con otros o corrompan estructuras de datos.

Formas de multihilos
Los sistemas operativos generalmente implementan hilos de dos maneras:
Multihilo apropiativo: permite al sistema operativo determinar cuándo debe haber un cambio de contexto. La desventaja de esto es que el sistema puede hacer un cambio de contexto en un momento inadecuado, causando un fenómeno conocido como inversión de prioridades y otros problemas.

Multihilo cooperativo: depende del mismo hilo abandonar el control cuando llega a un punto de detención, lo cual puede traer problemas cuando el hilo espera la disponibilidad de un recurso.

Procesamiento asíncrono
Los elementos asíncronos de un programa se pueden implementar como hilos. Un ejemplo es como los softwares de procesamiento de texto guardan archivos temporales cuando se está trabajando en dicho programa. Se crea un hilo que tiene como función guardar una copia de respaldo mientras se continúa con la operación de escritura por el usuario sin interferir en la misma.

Aceleración de la ejecución
Se pueden ejecutar, por ejemplo, un lote mientras otro hilo lee el lote siguiente de un dispositivo.
Implementaciones
Hay dos grandes categorías en la implementación de hilos:
Hilos a nivel de usuario
Hilos a nivel de Kernel 
 
 


3.3 MODELOS DE PROCESADORES
8086 y 8088 (de 1978 a 1982)
*Son los primeros procesadores utilizados en PC.
Carecían de instrucciones de coma flotante, pero para implementar estas se podían complementar con el coprocesador matemático 8087, que era el más utilizado, aunque no el único.
i386SX –  Procesador de 32bits, pero externamente se comunicaba a 16bits, lo que hacía que fuera a la mitad de la velocidad de un 80386 normal.

i386SX Now
- Versión del 80386SX,  compatible pin a pin con los procesadores 80286, desarrollado por Intel para poder actualizar los 80286 sin necesidad de cambiar de placa base.

Pentium (de 1993 a 1997)
Los primeros Pentium tenían una frecuencia de entre 60Mhz, 66Mhz, 75Mhz y 133Mhz, y a pesar de las mejoras en su estructura, entre las que destaca su arquitectura escalable, no llegaban a superar a los i486 de Intel que en ese momento había en el mercado, y mucho menos a los Cyrix y Am486 DX4.

Pentium Pro (de 1995 hasta 1998)
El Pentium PRO no fue diseñado como sustituto de ningún procesador, sino como un procesador para ordenadores de altas prestaciones destinados a estaciones de trabajo y servidores.
 
 

3.4 ASIGNACION DE PROCESOS
Hay 3 cuestiones:
Un proceso puede pasar de información a otro
Hacer que 2 o mas procesos no se interpongan entre si
Obtener la secuencia apropiada cuando hay dependencias presentes

Exclucion mutua
Es una forma de asegurar que si un proceso esta usando una variable o archivo compartido se excluiran de hacer lo mismo.

REGION O SECCION CRITICA
Un proceso esta ocupado realizando cálculos internos y otras cosas que no producen condiciones de carrera; algunas veces un proceso tiene que acceder a la memoria compartida o a archivos compartidos, o hacer otras cosas criticas que pueden producir carreras. Es la parte del programa en el que se accede a la memoria compartida

CONDICIONES:
No puede haber 2 procesos de manera simultanea dentro de sus regiones criticas
1) No puede haber dos procesos de manera simultanea dentro del sus regiones criticas
2) No puede hacerse suposiciones acerca de las velocidades o el numero de cpu`s
3)Ningùn procesos que se ejecute fuera de su región critica puede bloquear otros procesos
4)Nungun proceso tiene que esperar para siempre para entrara a su región critica


3.5 COPLANIFICACION 

TOMA EN CUENTA LOS PATRONES DE COMUNICACION ENTRE LOS PROCESOS DURANTE LA PLANIFICACION.
DEBE GARANTIZAR QUE TODOS LOS MIEMBROS DEL GRUPO SE EJECUTEN AL MISMO TIEMPO.

SE EMPLEA UNA MATRIZ CONCEPTUAL DONDE:
LAS FILAS SON ESPACIOS DE TIEMPO.
LAS COLUMNAS SON LAS TABLAS DE PROCESOS DE LOS PROCESADORES.

CADA PROCESADOR DEBE UTILIZAR UN ALGORITMO DE PLANIFICACION.

3.6 Tolerancia de Fallos
Los sistemas de computo pueden fallar debido a una falla en algún componente, como procesador, la memoria, un dispositivo de E/S un cable o el software.
Una falla es un desperfecto, causado tal vez por un error de diseño, un error de fabricación, un error de programación, un daño físico, el deterioro con el curso del tiempo, condiciones ambientales adversas, entradas inesperadas, un error del operador, roedores comiendo parte de sistema, etc.

 
3.8 SISTEMAS DISTRIBUIDOS EN TIEMPO REAL

Los sistemas operativos en tiempo real o RTOS (Real-Time Operating System), son sistemas los cuales manejan sucesos o eventos de gran importancia, por lo que deben cumplir con sus tareas bajo ciertas restricciones.
El Objetivo principal de estos sistemas es proporcionar minimizar los tiempos de respuesta de cada petición o tarea por medio de algoritmos de  planificación, los cuales definen que tareas deben ejecutarse en cada momento.

No utiliza mucha memoria
Cualquier evento en el soporte físico puede hacer que se ejecute una tarea
Multi-arquitectura (código portado a cualquier tipo de CPU)
Muchos tienen enfermedades predecibles para eventos electrónicos

Compuesta por un conjunto de nodos conectados por redes de comunicación.
Cada nodo puede ser un multiprocesador conectado por buses.
Sólo consideraremos sistemas débilmente acoplados.
Es frecuente que estos sistemas tengan gran complejidad.
Se suelen estructurar jerárquicamente, para tratar con:

Plazos de respuesta de diversas escalas.
Tipo de información.
Requisitos de procesador
Este tipo de sistemas operativos no es necesariamente eficiente en el sentido de tener una capacidad de procesamiento alta. El algoritmo de programación especializado, y a veces una tasa de interrupción del reloj alta pueden interferir en la capacidad de procesamiento.




domingo, 21 de octubre de 2012

USTREAM
Video en vivo, bastante sencillo y novedoso. Click para ver de que se trata.


http://www.ustream.tv/broadcaster/new/12367305
En esta arquitectura la capacidad de proceso está repartida entre los clientes y los servidores, aunque son más importantes las ventajas de tipo organizativo debidas a la centralización de la gestión de la información y la separación de responsabilidades, lo que facilita y clarifica el diseño del sistema. La separación entre cliente y servidor es una separación de tipo lógico, donde el servidor no se ejecuta necesariamente sobre una sola máquina ni es necesariamente un sólo programa. Los tipos específicos de servidores incluyen los servidores web, los servidores de archivo, los servidores del correo, etc. Mientras que sus propósitos varían de unos servicios a otros, la arquitectura básica seguirá siendo la misma. Una disposición muy común son los sistemas multicapa en los que el servidor se descompone en diferentes programas que pueden ser ejecutados por diferentes computadoras aumentando así el grado de distribución del sistema. La arquitectura cliente-servidor sustituye a la arquitectura monolítica en la que no hay distribución, tanto a nivel físico como a nivel lógico. La red cliente-servidor es aquella red de comunicaciones en la que todos los clientes están conectados a un servidor, en el que se centralizan los diversos recursos y aplicaciones con que se cuenta; y que los pone a disposición de los clientes cada vez que estos son solicitados. Esto significa que todas las gestiones que se realizan se concentran en el servidor, de manera que en él se disponen los requerimientos provenientes de los clientes que tienen prioridad, los archivos que son de uso público y los que son de uso restringido, los archivos que son de sólo lectura y los que, por el contrario, pueden ser modificados, etc. Este tipo de red puede utilizarse conjuntamente en caso de que se este utilizando en una red mixta.

martes, 9 de octubre de 2012

Segundo video de Sistemas Operativos II, habla sobre el modelo cliente servidor. La arquitectura cliente-servidor es un modelo de aplicación distribuida en el que las tareas se reparten entre los proveedores de recursos o servicios, llamados servidores, y los demandantes, llamados clientes. Un cliente realiza peticiones a otro programa, el servidor, que le da respuesta. Esta idea también se puede aplicar a programas que se ejecutan sobre una sola computadora, aunque es más ventajosa en un sistema operativo multiusuario distribuido a través de una red de computadoras. Dar click para verlo!