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.
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. 



