1. 3.1. CONCEPTOS BÁSICOS DE PROCESOS Y PROCESADORES
* Un proceso es un concepto manejado por el sistema operativo que consiste en el
conjunto formado por: Las instrucciones de un programa destinadas a ser ejecutadas
por el microprocesador. Su estado de ejecución en un momento dado, esto es, los
valores de los registros de la CPU para dicho programa. Su memoria de trabajo, es
decir, la memoria que ha reservado y sus contenidos.
* Un microprocesador es un circuito electrónico integrado que actúa como unidad
central de proceso de un ordenador, proporcionando el control de las operaciones de
cálculo. Están formados por componentes extremadamente pequeños formados en
una única pieza plana de poco espesor. Su componente principal son los
semiconductores, principalmente silicio y germanio. Pueden llegar a tener varias
decenas de millones transistores, además de otros componentes electrónicos como
diodos, resistencias, condensadores todo ello en varios milímetros cuadrados.
3.2. MÉTODOS DE DISTRIBUCIÓN DE CARGA (HILOS, TAREAS,
PROCESOS).
3.3. MODELOS DE PROCESADORES: DE ESTACIÓN DE TRABAJO,
DE PILA DE PROCESADORES, HIBRIDO
En un sistema distribuido, con varios procesadores, un aspecto fundamental del diseño
es cómo se utiliza.
Los procesadores distribuidos se pueden organizar de varias formas
Modelo de estación de trabajo. El sistema consta de estaciones de trabajo (PC)
dispersas conectadas entre sí mediante una red de área local (LAN).
Pueden contar o no con disco rígido en cada una de ellas.
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
2. 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.
Modelo de la pila de procesadores. Se dispone de un conjunto de cpu que se
pueden asignar dinámicamente a los usuarios según la demanda.
-Los usuarios no disponen de estaciones de trabajo sino de terminales gráficas
de alto rendimiento.
-No existe el concepto de propiedad de los procesadores, los que pertenecen a
todos y se utilizan compartidamente.
-El principal argumento para la centralización del poder de cómputo como una
pila de procesadores proviene de la teoría de colas:
-Llamamos “l” a la tasa de entradas totales de solicitudes por segundo de todos
3. los usuarios combinados.
-Llamamos “m” a la tasa de procesamiento de solicitudes por parte del servidor.
Para una operación estable debe darse que “m > l”:
-Se pueden permitir pequeños lapsos de tiempo en los que la tasa de entrada
exceda a la de servicio.
-Llamamos “T” al promedio de tiempo entre la emisión de una solicitud y la
obtención de una respuesta completa:
T = 1 / ( m - l ).
Cuando “ l ” tiende a “0”, “T” no tiende a “0”.
Supongamos que tenemos “n” multiprocesadores personales, cada uno con
cierto número de cpu y con su propio sistema de colas con tasas “ l ” y “ m ” y
tiempo “T”:
Si reunimos todas las cpu y formamos una sola pila de procesadores tendremos
un solo sistema de colas en vez de “n” colas ejecutándose en paralelo.
La tasa de entrada será “n l”, la tasa de servicio será “n m” y el tiempo
promedio de respuesta será:
T1 = 1 / (n m - n l) = 1 / n ( m - l) = T / n.
Modelo híbrido. Consta de estaciones de trabajo y una pila de procesadores. El
sistema operativo permtemas de un hilo por proceso. El soporte de lenguaje de
programacion utiliza un hilo del nucleo para implementar un grupo de hilos de
usuario. Proporciona flexibilidad y un maximo rendimiento potencial al
programador de la aplicacion.
3.4. ASIGNACIÓN DE PROCESADORES: MODELO Y ALGORITMOS
CON SUS ASPECTOS DE DISEÑO E IMPLANTACIÓN
Aspectos del Diseño de Algoritmos de Asignación de Procesadores
Los principales aspectos son los siguientes:
4. 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.
Los algoritmos deterministas son adecuados cuando se sabe anticipadamente todo
acerca del comportamiento de los procesos, pero esto generalmente no se da, aunque
puede haber en ciertos casos aproximaciones estadísticas. Los algoritmos heurísticos
son adecuados cuando la carga es impredecible.
Los diseños centralizados permiten reunir toda la información en un lugar y tomar una
mejor decisión; la desventaja es que la máquina central se puede sobrecargar y se
pierde robustez ante su posible falla.
Generalmente los algoritmos óptimos consumen más recursos que los subóptimos,
además, en la mayoría de los sistemas reales se buscan soluciones subóptimas,
heurísticas y distribuidas.
Cuando se va a crear un proceso se debe decidir si se ejecutará en la máquina que lo
genera o en otra (política de transferencia): La decisión se puede tomar “solo con
información local” o “con información global”.
Los algoritmos locales son sencillos pero no óptimos.
Los algoritmos globales son mejores pero consumen muchos recursos.
Cuando una máquina se deshace de un proceso la política de localización debe decidir
dónde enviarlo:
Necesita información de la carga en todas partes, obteniéndola de: Un emisor
sobrecargado que busca una máquina inactiva.
Un receptor desocupado que busca trabajo.
5. ‘’‘Aspectos de la Implantación de Algoritmos de Asignación de Procesadores’‘’
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 considerar los 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, la correcta y la robustez del sistema.
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:
Son correctos luego de intercambiar la información y de que todo se ha registrado.
Son poco confiables mientras las tablas continúan su actualización, es decir que se
presentan situaciones de no equilibrio.
Modelos de Asignación
Generalmente se utilizan las siguientes hipótesis:
6. 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 dividen en:
No migratorias:
Una vez colocado un proceso en una máquina permanece ahí hasta que
termina.
Migratorias:
Un proceso se puede trasladar aunque haya iniciado su ejecución.
Permiten un mejor balance de la carga pero son más complejas.
Los algoritmos de asignación intentan optimizar algo:
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.
7. 3.5. COPLANIFICACIÓN
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.
Las columnas son las tablas de procesos de los procesadores.
Cada procesador debe utilizar un algoritmo de planificación round robín:
Todos los procesadores ejecutan el proceso en el espacio “0” durante un cierto
periodo fijo.
Todos los procesadores ejecutan el proceso en el espacio “1” durante un cierto
periodo fijo, etc.
Se deben mantener sincronizados los intervalos de tiempo.
Todos los miembros de un grupo se deben colocar en el mismo número de
espacio de tiempo pero en procesadores distintos.
3.6. TOLERANCIA A FALLOS: NIVEL PROCESO, NIVEL
ALMACENAMIENTO
Tolerancias a fallos en informática (en inglés failover, suele confundírse con el
término concurrencia) se determina a la capacidad de un sistema de almacenamiento de
8. acceder a información aún en caso de producirse algún fallo. Esta falla puede deberse a daños
físicos (mal funcionamiento) en uno o más componentes de hardware lo que produce la pérdida
de información almacenada. La tolerancia a fallos requiere para su implementación que el
sistema de almacenamiento guarde la misma información en más de un componente de
hardware o en una máquina o dispositivo externos a modo de respaldo. De esta forma, si se
produce alguna falla con una consecuente pérdida de datos, el sistema debe ser capaz de
acceder a toda la información recuperando los datos faltantes desde algún respaldo disponible.
Por lo general, el término tolerancia a fallos está asociado al almacenamiento
en RAID (RedundantArray of Independent Disks). Los RAID (a excepción de RAID 0) utilizan la
técnica Mirroring (en espejo) que permite la escritura simultánea de los datos en más de un
disco del array.
Los sistemas de almacenamiento con tolerancia a fallos son vitales en ambientes donde se
trabaje con información crítica, como el caso de los bancos, entidades gubernamentales,
algunas empresas, etc. El nivel de tolerancia a fallos dependerá de la técnica de
almacenamiento utilizada y de la cantidad de veces que la información está duplicada, sin
embargo, la tolerancia nunca es del 100% puesto que si fallan todos los "mirrors" disponibles,
incluyendo el origen, los datos quedan incompletos por lo tanto la información se leerá
corrupta.
3.7. ESQUEMAS DE SEGURIDAD EN SISTEMAS DISTRIBUIDOS
Es la capacidad del sistema para proteger datos, servicios y recursos de usuarios no
autorizados. El fin de la seguridad es garantizar la protección o estar libre de todo
peligro y/o daño, y que en cierta manera es infalible. Como esta característica,
particularizando para el caso de sistemas operativos o redes de computadores, es muy
difícil de conseguir (según la mayoría de expertos, imposible), se suaviza la definición
de seguridad y se pasa a hablar de fiabilidad (probabilidad de que un sistema se
comporte tal y como se espera de el) más que de seguridad; por tanto, se habla de
sistemas fiables en lugar de hacerlo de sistemas seguros. A grandes rasgos se entiende
que mantener un sistema seguro (confiable) consiste básicamente en garantizar tres
aspectos: confidencialidad, integridad y disponibilidad. Algunos estudios integran la
seguridad dentro de una propiedad más general de los sistemas, la confiabilidad,
entendida como el nivel de calidad del servicio ofrecido. Consideran la disponibilidad
como un aspecto al mismo nivel que la seguridad y no como parte de ella, por lo que
9. dividen esta última en sólo las dos facetas restantes, confidencialidad e integridad. En
este trabajo no seguiremos esa corriente por considerarla minoritaria.
La confidencialidad:Nos dice que los objetos de un sistema han de ser
accedidos únicamente por elementos autorizados a ello, y que esos elementos
autorizados no van a convertir esa información en disponible para otras
entidades.
La integridad:Significa que los objetos sólo pueden ser modificados por
elementos autorizados, y de una manera controlada.
La disponibilidad:Indica que los objetos del sistema tienen que permanecer
accesibles a elementos autorizados; es el contrario de la negación de servicio.
3.8. SISTEMAS OPERATIVOS DISTRIBUIDOS EN TIEMPO REAL
3.9. BALANCEO DE CARGA EN SISTEMAS DISTRIBUIDOS
SISTEMAS DISTRIBUIDOS
1. Equilibrio o balanceo de cargas y compartición de recursos en Sistemas Distribuidos
Un sistema distribuido se define como una colección de computadores autónomos
conectados por una red, el cual consta de un software distribuido adecuado para que
el sistema sea visto por los usuarios como una única entidad. Además de realizar la
importante función de la comunicación, los sistemas distribuidos, se encuentra la
forma en que los procesos cooperan y se sincronizan entre sí.
Equilibrio de cargas
Un proceso es un programa en ejecución, es decir, es la actividad que resulta de la
ejecución de un algoritmo, con sus datos, sobre un procesador. En una computadora,
los procesos no se suelen ejecutar de forma aislada, sino que acostumbran a
ejecutarse con otros de forma solapada en el tiempo, ya que compartiendo
adecuadamente los recursos físicos se puede obtener una aceleración global de la
velocidad de cálculo del sistema. De esta manera, puede decirse que dos procesos
son concurrentes si su ejecución se solapa en el tiempo. Como resultado en la
ejecución concurrente de procesos, es necesario realizar el “Equilibrio de cargas”.
10. El equilibrio o balanceo de cargas es el esquema aplicado al procesamiento distribuido
y/o al sistema de comunicación con el fin de que un dispositivo no se sature. Es
especialmente importante en redes donde es muy difícil predecir el número de
peticiones que se van a cursar a un servidor. Por ejemplo, los sitiosweb muy
demandados suelen emplear dos o más servidores bajo un esquema de balanceo de
carga. Los sistemas distribuidos proveen este tipo de equilibrio a través de varios
mecanismos tales como el agrupamiento y la migración de procesos. El agrupamiento
combina muchas computadoras para mejorar el tiempo de respuesta global, entre las
cuáles se distribuyen los procesos. Si un servidor comienza a saturarse las peticiones
son redireccionadas a otro(s). El agrupamiento generalmente emplea compartición de
carga y migración de procesos. Existen varios algoritmos para llevar a cabo el proceso
de equilibrio de cargas:
• Balanceo centralizado: un nodo ejecuta el algoritmo y mantiene el estado global del
sistema. Este método no es extensible a problemas más grandes ya que el nodo
encargado del balanceo se convierte en un cuello de botella.
• Balanceo completamente distribuido: cada procesador mantiene su propia visión del
sistema intercambiando información con sus vecinos y así hacer cambios locales.
• Balanceo semi-distribuido: divide los procesadores en regiones, cada una con un
algoritmo centralizado local. Otro algoritmo balancea la carga entre las regiones.
Compartición de recursos
Los recursos abarcan el abanico de entidades que pueden compartirse en un sistema
distribuido. El cual puede ir desde componentes de hardware como discos e
impresoras hasta elementos de software como archivos, ventanas, bases de datos y
otros objetos de datos.
Los recursos en un sistema distribuido están físicamente encapsulados en una de las
computadoras y sólo pueden ser accedidos por otras computadoras mediante las
comunicaciones (la red). Para que la compartición de recursos sea efectiva, ésta debe
ser manejada por un programa que ofrezca un interfaz de comunicación permitiendo
que el recurso sea accedido, manipulado y actualizado de una manera fiable y
consistente. Surge el término genérico de gestor de recursos.
Un gestor de recursos es un modulo de software que maneja un conjunto de recursos
de un tipo en particular. Cada tipo de recurso requiere algunas políticas y métodos
específicos junto con requisitos comunes para todos ellos. Éstos incluyen la provisión
de un esquema de nombres para cada clase de recurso, permitir que los recursos
individuales sean accedidos desde cualquier localización; la traslación de nombre de
recurso a direcciones de comunicación y la coordinación de los accesos concurrentes
que cambian el estado de los recursos compartidos para mantener la consistencia.
11. Un sistema distribuido puede verse como un conjunto de gestores de recursos y un
conjunto de programas que usan los recursos. Los usuarios de los recursos se
comunican con los gestores de los recursos para acceder a los recursos compartidos
del sistema. Dos ejemplos de sistemas distribuidos serían el modelo cliente-servidor y
el modelo basado en objetos.
2. Crecimiento integral dentro de las organizaciones orientado en un ambiente
distribuido
El uso de los sistemas distribuidos dentro de las organizaciones, ha experimentado un
crecimiento acelerado en los últimos años, como resultado del desarrollo tecnológico.
La misma dinámica actual ha obligado a las organizaciones a contar con sistemas
cada vez más rápidos y eficientes que las ubiquen en posiciones competitivas.
Más recientemente, la disponibilidad de computadoras personales de alta capacidad,
estaciones de trabajo y servidores, ha resultado en un mayor desplazamiento hacia los
sistemas distribuidos dejando de lado cada vez más, los sistemas centralizados
multiusuario. Esta tendencia se ha acelerado por el desarrollo de software para
sistemas distribuidos, diseñado para soportar el desarrollo de aplicaciones distribuidas.
Este software permite a las computadoras coordinar sus actividades y compartir los
recursos del sistema - hardware, software y datos.
Los sistemas distribuidos son implementados en diversas plataformas hardware,
desde unas pocas estaciones de trabajo conectadas por una red de área local, hasta
Internet, una colección de redes de área local y de área extensa interconectadas, que
enlazan millones de computadoras.
Por otra parte, las aplicaciones de los sistemas distribuidos varían desde la provisión
de capacidad de computo a grupos de usuarios, hasta sistemas bancarios,
comunicaciones multimedia y abarcan prácticamente todas las aplicaciones
comerciales y técnicas de las computadoras. Los requisitos de dichas aplicaciones
incluyen un alto nivel de fiabilidad, seguridad contra interferencias externas y
privacidad de la información que el sistema mantiene.
Se deben proveer accesos concurrentes a bases de datos por parte de muchos
usuarios, garantizar tiempos de respuesta, proveer puntos de acceso al servicio que
están distribuidos geográficamente, potencial para el crecimiento del sistema para
acomodar la expansión del negocio y un marco para la integración de sistema usados
por diferentes compañías y organizaciones de usuarios
3. Servidor DNS
Un servidor DNS (DomainNameSystem) es un sistema de nombres que permite
traducir de nombre de dominio a dirección IP y vice-versa. Se utiliza para proveer a las
computadoras de los usuarios (clientes) un nombre equivalente a las direcciones IP. El
12. uso de este servidor es transparente para los usuarios cuando éste está bien
configurado.
El sistema de nombres de dominios en Internet es un sistema distribuido, jerárquico,
replicado y tolerante a fallas. El punto central se basa en un árbol que define la
jerarquía entre los dominios y los sub-dominios. En un nombre de dominio, la jerarquía
se lee de derecha a izquierda. Por ejemplo, en dcc.uchile.cl, el dominio más alto es cl.
Para que exista una raíz del árbol, se puede ver como si existiera un punto al final del
nombre: dcc.uchile.cl., y todos los dominios están bajo esa raíz (también llamada
``punto").
Cada componente del dominio (y también la raíz) tiene un servidor primario y varios
servidores secundarios. Todos estos servidores tienen la misma autoridad para
responder por ese dominio, pero el primario es el único con derecho para hacer
modificaciones en él. Por ello, el primario tiene la copia maestra y los secundarios
copian la información desde él.
Tipos de servidores DNS
• Primarios: Guardan los datos de un espacio de nombres en sus archivos
• Secundarios: Obtienen los datos de los servidores primarios a través de una
transferencia de zona.
• Locales o Caché: Funcionan con el mismo software, pero no contienen la base de
datos para la resolución de nombres. Cuando se les realiza una consulta, estos a su
vez consultan a los servidores secundarios, almacenando la respuesta en su base de
datos para agilizar la repetición de estas peticiones en el futuro.
4. Active DirectoryService
Es conocido como uno de los programas informáticos desarrollado por Microsoft,
Active Directory (también conocido como NT DirectoryService) ofrece varios servicios
de autenticación, DNS y servicios de directorio que son importantes para la gestión de
datos y seguridad de datos. Este software se introdujo en 1999 y se inició con el
programa Windows 2000 Server. El programa es una agrupación lógica de los
sistemas informáticos y los usuarios de computadoras dentro de un único dominio, que
es controlada por los controladores de dominio.
La estructura de este servicio de directorio tiene tres categorías:, los usuarios,
servicios y recursos. Los objetos en el directorio se clasifican en estos niveles. Los
objetos tienen distintos conjuntos de atributos que fueron identificados por el directorio.
Los atributos son importantes para el adecuado almacenamiento de los objetos.
Niveles
Active Directory tiene tres niveles, el bosque, los árboles y los dominios. El bosque es
el más alto nivel, que representa a las reglas y los atributos de cada objeto en el
13. directorio. A continuación el bosque es el árbol, que se compone de varios dominios
que están conectados en una jerarquía de confianza transitiva. Al lado del árbol son
los dominios, que se clasifican en las estructuras de nombre.
En los dominios son los objetos que se clasifican en varios contenedores conocidos
como unidades organizativas. Estas unidades son muy importantes para los
administradores a utilizar el software de computadora fácilmente. Para ayudar a los
administradores en el mantenimiento de redes informáticas, el directorio también
cuenta con sitios, que son muy útiles en el control de tráfico de red.
Para evitar los problemas relativos a la seguridad de datos, la información almacenada
en Active Directory se asegura en varios controladores de dominio. Este programa de
computadora se integra con los servidores diferentes, como TCP / IP y DNS.