3.1 PROCESOS Y
PROECESADORES CONCEPTOS BASICOS
Un procesos.
Son todos o todas las actividades o programas compilados que se encuentran guardados en una memoria.
Son todos o todas las actividades o programas compilados que se encuentran guardados en una memoria.
Un procesador.
Es el dispositivo de hardware que se encarga de ejecutar los procesos.
3.2 HILOS Y
MULTIHILOS
Los hilos son mini procesos. Cada hilo se ejecuta en
forma estrictamente secuencial y tiene su propio contador de programa una pila
para llevar un registro de su posición.
Los hilos comparten CPU de la misma forma que lo hacen
los procesos secuencialmente y tiempo compartido.
Solo en un multiprocesador se pueden ejecutar
realmente en paralelo. Los hilos pueden crear hilos hijos, mientras un hilo
esta bloqueado se puede ejecutar otra fila del mismo proceso en los distintos
hilos de un proceso comparten un espacio de direcciones, y los hilos pueden
tener distintos estados (en ejecución, bloqueado, listo y terminación).
Muchos sistemas operativos distribuidos soportan múltiples
hilos de control dentro de un proceso que comparten un único espacio de
direcciones que ejecutan casi paralelamente como si fueran procesos
independientes.
3.3.-
MODELOS DE PROCESADORES
En un sistema distribuido con varios procesadores un aspecto fundamental
en el diseño es como se utiliza a los procesadores que se pueden organizar de
varias formas:
- · De estación de trabajo
- · De pila de procesadores
- · Híbrido
3.3.1 DE
ESTACIÓN DE TRABAJO
Este sistema consta de computadoras dispersas
conectadas entre si mediante una red de área local puede contar o no con disco
duro en cada una de ellas, los usuarios tienen una cantidad fija de poder de
computo y un alto grado de autonomía para asignar sus recursos locales.
La idea consiste en ordenar realmente la ejecución de
procesos en estaciones de trabajo inactivas.
Los usuarios tienen:
•
Una cantidad fija de poder de cómputo exclusiva.
•
Un alto grado de autonomía para asignar los recursos
de su estación de trabajo.
Uso de los discos
en las estaciones de trabajo:
•
Sin disco:
–
Bajo costo, fácil mantenimiento del hardware y del
software, simetría y flexibilidad.
–
Gran uso de la red, los servidores de archivos se
pueden convertir en cuellos de botella.
•
Disco para paginación y
archivos de tipo borrador:
–
Reduce la carga de la red respecto del caso anterior.
–
Alto costo debido al gran número de discos necesarios.
•
Disco para paginación,
archivos de tipo borrador y archivos binarios (ejecutables):
–
Reduce aún más la carga sobre la red.
–
Alto costo y complejidad adicional para actualizar los
binarios.
•
Disco para paginación,
borrador, binarios y ocultamiento de archivos.
–
Reduce aún más la carga de red y de los servidores de
archivos.
–
Alto costo.
–
Problemas de consistencia del caché.
•
Sistema local de archivos
completo:
–
Escasa carga en la red.
–
Elimina la necesidad de los servidores de archivos.
–
Pérdida de transparencia.
3.3.2.- MODELO
DE PILA DE PROCESADORES
Este método consiste en construir una pila de
procesadores, repleta de CPU, en un cuarto de maquinas, los cuales se pueden asignar
de manera dinámica a los usuarios según la demanda.
A cada usuario se le
da una terminal gráfica de alta rendimiento, como las terminales X, incluso se
pueden utilizar terminales ASCII.
Ventajas
·
Precio
·
Elimina la asociación entre el número de
usuarios y el de estaciones de trabajo.
·
Facilita el crecimiento por incrementos
De hecho se convierte
el poder de cómputo en “estaciones de trabajo inactivas”, a las que se puede
tener acceso de manera dinámica. Aquí no existe el concepto de propiedad.
La motivación para la idea de la pila de procesadores
proviene de dar un paso mas adelante en la idea de las estaciones de trabajo
sin disco.
El principal
argumento para la centralización del poder de cómputo como pila de procesadores
proviene de la teoría de colas.
Seleccionar pila de
procesadores o estaciones de trabajo inactivas va a depender del trabajo que se
desarrolle.
Se puede establecer
una mediación al proporcionar a cada usuario una “estación de trabajo” personal
y además tener una pila de procesadores. Aunque esta solución es más cara.
Para procesos interactivos
sería mejor utilizar estaciones de trabajo, con una respuesta garantizada. Sin embargo las estaciones inactivas no se
utilizan, lo cual hace más sencillo al diseño del sistema. Solo se dejan sin
utilizar. En vez de esto todos los interactivos se ejecutan en la pila de procesadores, así como todo el cómputo
pesado en general. Este modelo proporciona una respuesta interactiva más rápida,
un uso eficiente de los recursos y un diseño sencillo.
3.4 ASIGNACIÓN DE PROCESADORES
Por definición, un sistema
distribuido consta de varios procesadores. Estos se pueden organizar como
colección de estaciones de trabajo personales, una pila pública de procesadores
o alguna forma híbrida. En todos los casos, se necesita cierto algoritmo para
decidir cuál proceso hay que ejecutar y en qué máquina. Para el modelo de
estaciones de trabajo, hay que decidir cuándo ejecutar el proceso de manera
local y cuándo buscar una estación inactiva. Para el modelo de la pila reprocesadores, hay que tomar una decisión por cada
nuevo proceso.
Uso de
estaciones de trabajo inactivas
Plantea el problema de
encontrar estaciones de trabajo inactivas en la red que puedan ejecutar procesos. Por lo cual las estaciones de trabajo
deben de anunciar cuando no cuentan con una carga de trabajo asignada,
así todas las demás estaciones toman nota de esto y lo registran.
Modelos de
asignación
Generalmente se utilizan las
siguientes hipótesis:
Todas las máquinas son
idénticas o al menos compatibles en el código, difieren a lo sumo en la
velocidad.
Cada procesador se puede
comunicar con los demás. Las estrategias de asignación de procesadores se
pueden dividir en 2 categorías amplias:
No
migratorias:
Al crearse un proceso, se toma
una decisión de donde colocarlo. Una vez
colocado en la máquina, el proceso permanece ahí hasta que termina. No se puede
mover, no importa lo sobrecargada que esté la máquina.
Migratorias:
Un proceso se puede trasladar
aunque haya iniciado su ejecución. Permiten un mejor balance de la carga pero
son más complejas y tienen un efecto fundamental en el diseño del sistema.
Los algoritmos de asignación
intentan optimizar:
Uso de las
CPU:
Maximizar el número de ciclos
de CPU que se ejecutan para trabajos de los usuarios. Minimizar el tiempo de
inactividad de las CPU.
Tiempo promedio de respuesta
Minimizar no los tiempos individuales
de respuesta sino los tiempos promedio de respuesta.
Tasa de respuesta:
Minimizar la tasa de
respuesta, que es el tiempo necesario para ejecutar un proceso en cierta
máquina dividido por el tiempo que tardaría en cierto procesador de referencia.
3.4.1
ALGORITMOS CON SUS ASPECTOS DE
DISEÑO E IMPLEMENTACIÓN Y ASIGNACIÓN.
Los algoritmos de asignación
intentan optimizar:
Uso de las
CPU:
Maximizar el número de ciclos
de CPU que se ejecutan para trabajos de los usuarios. Minimizar el tiempo de inactividad
de las CPU.
Tiempo promedio de respuesta
Minimizar no los tiempos
individuales de respuesta sino los tiempos promedio de respuesta.
Tasa de
respuesta:
Minimizar la tasa de
respuesta, que es el tiempo necesario para ejecutar un proceso en cierta
máquina dividido por el tiempo que tardaría en cierto procesador de referencia.
Las principales decisiones que
deben tomar los diseñadores se pueden resumir en 5 aspectos:
- Algoritmos deterministas vs. Heurísticos
- Algoritmos centralizados vs. Distribuidos
- Algoritmos óptimos vs. Subóptimos
- Algoritmos locales vs. Globales
- Algoritmos iniciados por el emisor vs. Iniciados por el receptor
1) Algoritmos
deterministas
Son adecuados cuando se
sabe de antemano todo acerca del
comportamiento de los procesos. En pocos, si no es que en ninguno de los
sistemas, se tiene un conocimiento total de antemano, pero a veces se puede
obtener una aproximación razonable. Se pueden definir en términos de una
máquina de estado; un «estado» describe qué está haciendo la máquina en un
instante particular de tiempo. Justo cuando se produce la entrada, la máquina
comienza en su «estado inicial» y, posteriormente, si la máquina es determinista,
comenzará la ejecución de la secuencia de estados predeterminados. Una máquina
puede ser determinista y no tener límite temporal para la ejecución o quedarse en
un bucle de estados cíclicos eternamente. Ejemplos de máquinas abstractas
deterministas son las máquinas de Turing deterministas y los autómatas finitos
deterministas.
Algoritmos
heurísticos
Son
adecuados cuando la carga es impredecible. Un algoritmo heurístico (o simplemente
heurística) puede producir una buena solución (puede que la óptima) pero también puede que no produzca ninguna
solución o dar una solución no muy buena. Normalmente, se basa en un
conocimiento intuitivo del programador sobre un determinado problema.
2) Diseño centralizado vs. Distribuido
2) Diseño centralizado vs. Distribuido
La recolección de toda la información en un lugar permite tomar una mejor decisión, pero menos robusta y coloca una carga pesada en la máquina central. Son preferibles los algoritmos descentralizados, pero se han propuesto algunos algoritmos centralizados por la carencia de alternativas descentralizadas adecuadas. Una desventaja de los centralizados es que la máquina central se puede sobrecargar y se pierde robustez ante su posible falla.
Cuando el poseedor de una estación de trabajo
ejecuta procesos en las máquinas de otras personas, acumula puntos de
penalización, un número fijo por cada segundo, como se muestra en la siguiente
figura:
3) Algoritmos óptimos vs. Sub óptimos:
Se pueden obtener las soluciones óptimas tanto en los sistemas centralizados como en los descentralizados, pero por regla son más caros que los sub óptimos. Hay que recolectar más información y procesarla un poco más. En la práctica la mayoría de los sistemas distribuidos reales buscan soluciones subóptimas, heurísticas y distribuidas, debido a la dificultad para obtener las óptimas.
Se pueden obtener las soluciones óptimas tanto en los sistemas centralizados como en los descentralizados, pero por regla son más caros que los sub óptimos. Hay que recolectar más información y procesarla un poco más. En la práctica la mayoría de los sistemas distribuidos reales buscan soluciones subóptimas, heurísticas y distribuidas, debido a la dificultad para obtener las óptimas.
Aspectos de
la Implantación
Casi todos los algoritmos suponen que las máquinas conocen su propia carga y que pueden informar su estado:
·La medición de la carga no es tan sencilla
Un método consiste en contar el número de procesos (hay que considerarlos procesos latentes no activos).
Otro método consiste en contar solo los procesos en ejecución o listos.
También se puede medir la fracción de tiempo que la cpu está ocupada.
Casi todos los algoritmos suponen que las máquinas conocen su propia carga y que pueden informar su estado:
·La medición de la carga no es tan sencilla
Un método consiste en contar el número de procesos (hay que considerarlos procesos latentes no activos).
Otro método consiste en contar solo los procesos en ejecución o listos.
También se puede medir la fracción de tiempo que la cpu está ocupada.
Otro aspecto importante es el
costo excesivo en consumo de recursos para recolectar medidas y desplazar
procesos, ya que se debería considerar el tiempo de CPU, el uso de memoria y el
ancho de banda de la red utilizada por el algoritmo para asignación de procesadores.
Se debe considerar la
complejidad del software en cuestión y sus implicancias para el desempeño.
Si el uso de un algoritmo
sencillo proporciona casi la misma ganancia que uno más caro y más complejo,
generalmente será mejor utilizar el más sencillo.
Se debe otorgar gran importancia a la estabilidad
del sistema:
·
Las máquinas ejecutan sus algoritmos en forma
asíncrona por lo que el sistema nunca se equilibra.
·
La mayoría de los algoritmos que intercambian
información:
o Son
correctos luego de intercambiar la información y de que todo se ha registrado.
o Son
poco confiables mientras las tablas continúan su actualización, es decir que se
presentan situaciones de no equilibrio.
3.5
COPLANIFICACION
Cada procesador se multiprograma con “n” espacios para
los procesos (multiprogramación de nivel “n”). El algoritmo de Ouster hout
utiliza el concepto de coplanificación:
· Toma
en cuenta los patrones de comunicación entre los procesos durante la
planificación.
· 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.= Y las
columnas son las tablas de procesos de los procesadores.
· Cada
procesador debe utilizar un algoritmo de planificación Round Robin. Donde:
1- Todos los procesadores
ejecutan el proceso en el espacio “0” durante un cierto período fijo.
2- Todos los procesadores
ejecutan el proceso en el espacio “1” durante un cierto período fijo, etc.
3- Se deben mantener
sincronizados los intervalos de tiempo.
4- Todos los miembros de un grupo
se deben colocar en el mismo número de espacio de tiempo pero en procesadores
distintos.
La tolerancia a fallos es un aspecto crítico para
aplicaciones a gran escala, ya que aquellas simulaciones que pueden tardar del
orden de varios días o semanas para ofrecer resultados deben tener la
posibilidad de manejar cierto tipo de fallos del sistema o de alguna tarea de
la aplicación.
Sin la capacidad de detectar fallos y recuperarse de
estos, dichas simulaciones pueden no llegar a completarse. Es más, algunos
tipos de aplicaciones requieren ser ejecutadas en un entorno tolerante a fallos
debido al nivel de seguridad requeridos.
De cualquier forma, en ciertos casos debería haber algún
modo de detectar y responder automáticamente a ciertos fallos del sistema o al
menos ofrecer cierta información al usuario en el caso de producirse un fallo.
En PVM hay un mecanismo de notificación de fallos, de
forma que una tarea puede manejar notificaciones sobre ciertas tareas de las
que espera recibir un mensaje. Por ejemplo, si una tarea muere, otra que
estuviese esperando un mensaje de la primera recibirá una notificación en lugar
del mensaje que esperaba. De esta forma, la notificación le da la oportunidad
de responder al fallo sin tener que fallar forzosamente.
3.7 SISTEMAS DE
TIEMPO REAL
Los sistemas de tiempo real son aquellos que interactuan con el mundo exterior donde el tiempo es un factor importante.
CARACTERÍSTICAS.
Se activan por evento o por tiempo.
Su comportamiento debe ser predecible.
Deben ser tolerantes a fallas.
La comunicación en los sistemas distribuidos de tiempo
real debe de alto desempeño.
CLASIFICACIÓN.
Los sistemas de tiempo real se clasifican en general en
dos tipos dependiendo de lo serio de sus tiempos límite y de las consecuencias de
omitir uno de ellos. Estos son:
·
Sistema
de tiempo real suave.
·
Sistema
de tiempo real duro.
El tiempo real
suave significa que no existe problema si se rebasa un tiempo límite. Un
sistema de tiempo real duro es aquel en el que un tiempo límite no cumplido
puede resultar catastrófico.
Ejemplo de sistema de tiempo real suave.
Conmutador telefónico.
Ejemplo de sistema de tiempo real duro.
Alarma sísmica.
ACTIVACIÓN DE
SISTEMAS DE TIEMPO REAL.
Los sistemas de tiempo real pueden ser activados
por evento o por tiempo. Se dice que un sistema es activado por evento cuando,
al ocurrir un evento externo, este es detectado por algún sensor, lo que
entonces provoca que el CPU conectado tenga una interrupción. Los sistemas
activados por eventos están controlados entonces por las interrupciones. Por
otro lado, en los sistemas de tiempo real activados por el tiempo, se verifican
los sensores cada cierto tiempo, para verificar si está ocurriendo algún evento
externo. La desventaja es que se pierde mucho tiempo de CPU si los eventos
ocurren con poca frecuencia.
No hay comentarios:
Publicar un comentario