Los Sistemas Operativos y su Distribución – Parte II

Tal y como venimos aprendiendo, el ecosistema de Sistemas Operativos no está circunscrito a uno o dos solamente, sino que hay bastantes más, y muchos diseñados específicamente de una u otra manera para representar algún paradigma en particular.

Si quieren pueden pasar por:

Cliente-servidor: un importante paso hacia los sistemas
distribuidos


Las arquitecturas cliente-servidor impusieron un modelo determinado por los servicios.

Este esquema es un modelo de aplicación distribuida, en el que las tareas o actividades se reparten entre un conjunto de procesos proveedores de recursos o servicios llamados servidores, y un conjunto de procesos demandantes de recursos o servicios llamados clientes. Si bien este esquema puede ser aplicado a procesos que se ejecuten en una misma computadora, el mayor potencial se presenta al pensar a los mismos interactuando de manera remota sobre una red de computadoras.

Hoy en día podemos encontrar el modelo cliente/servidor en numerosas situaciones que utilizamos a diario: servicio de Correo Electrónico, acceso a la World Wide Web, aplicaciones en nuestros teléfonos móviles para compra de productos o servicios, servidores de bases de datos, entre muchas mas.

En esta arquitectura la capacidad de proceso esta distribuida entre los procesos clientes y los procesos servidores, lo que brinda una importante ventaja centralizando la gestión de la información y separando las responsabilidades en la organización de las aplicaciones. La separación entre cliente y servidor es lógica. El servidor no necesariamente se ejecuta sobre una sola computadora ni exige la existencia de un único proceso. Esta característica permite mejorar los tiempos de respuesta.



La arquitectura cliente servidor se basa en el modelo de comunicación requerimiento- respuesta (request-reply protocol). Esto es, la comunicación se basa en un mensaje del cliente al servidor (el requerimiento) y un mensaje del servidor al cliente (la respuesta). En este modelo, el cliente esperara desde que envía el mensaje hasta que recibe la respuesta al mismo.



Veamos algunas características de ambos tipos de procesos. Por un lado, los clientes:

  • son los responsables de iniciar las solicitudes por lo que tienen un papel activo en la comunicación;
  • esperan y reciben las respuestas del servidor;
  • pueden conectarse a varios servidores a la vez para cumplir una tarea especifica;
  • normalmente interactuan con los usuarios finales mediante alguna interfaz grafica de usuario o GUI (Graphical User Interface).

En cuanto a los servidores:

  • al iniciarse esperan a que lleguen las solicitudes de los clientes, desempenando en- tonces un papel pasivo en la comunicacion;
  • ante la recepcion de una solicitud, la procesan y luego envian la respuesta al cliente;
  • pueden aceptar las conexiones de un gran numero, aunque limitado, de clientes.

Comúnmente a la arquitectura tradicional cliente/servidor se la conoce como arquitectura de dos capas: una capa cliente y un servidor. En el siguiente gráfico podemos observar diferentes esquemas que se pueden presentar. Una alternativa plantea toda la lógica a cargo del servidor dejando únicamente la presentación de la información en el cliente. En otro caso el servidor solo resulta responsable de los datos y el cliente lo es del resto de las actividades – presentación, gestión, etc., existiendo ademas esquemas alternativos entre los dos extremos mencionados.



Otra posible organización es la conocida como de tres capas:

  • Una capa cliente que interactúa con los usuarios finales.
  • Una capa servidor de aplicación, la cual se encarga de procesar los datos para los clientes.
  • Una capa servidor de base de datos, responsable de almacenar los datos y brindar los mismos a la capa servidor de aplicación.



La utilización de múltiples capas nos presenta la ventaja de obtener un mayor desacople en los pasos requeridos para dar una respuesta a un usuario, mejorando el balance de la carga de cada nodo participante y haciendo la solución mas escalable. Las desventajas que se presentan las encontramos en la mayor carga producida en la red – por el aumento del trafico de información – así como en la dificultad de desarrollar, probar y desplegar aplicaciones respecto a una solución de 2 o 3 capas.

De acuerdo con (Bochenski 1994), son diez las características que definen un ambiente cliente/servidor. La existencia de las cinco primeras es de carácter obligatorio, mientras que las otras cinco es de cumplimiento opcional:

  1. Una arquitectura cliente/servidor consiste de un proceso cliente y un proceso servi- dor que pueden ser distinguidos uno del otro y que pueden interactuar de manera independiente.
  2. Las partes cliente y servidor pueden operar, aunque no necesariamente, en plata- formas computacionales diferentes.
  3. Tanto la parte cliente como la del servidor pueden ser actualizadas individualmente sin que la otra deba serlo tambien.
  4. El servidor es capaz de dar servicio a multiples clientes en forma concurrente. En algunos sistemas pueden acceder multiples servidores.
  5. Un sistema cliente/servidor incluye algun tipo de capacidad de red.
  6. Una porcion significativa (a veces la totalidad) de la logica de la aplicacion reside en el cliente.
  7. El procesamiento es iniciado usualmente en el lado del cliente, no del servidor. Sin embargo, los servidores de bases de datos pueden iniciar acciones basadas en “disparos automaticos”, “reglas del negocio” o procedimientos almacenados.
  8. Una interfaz grafica de usuario amigable generalmente reside en el lado del cliente.
  9. La capacidad de un lenguaje estructurado de consultas es una caracteristica de la mayoria de los sistemas cliente/servidor.
  10. El servidor de base de datos deberia proporcionar seguridad y proteccion a los datos.

Por su parte (Orfali 1994) resume así las características de los sistemas cliente/servidor:

  • Servicio: El ambiente cliente/servidor conforma una relacion entre procesos. El pro- ceso servidor ofrece servicios, mientras que los clientes los solicitan.
  • Recursos compartidos: Los servidores regulan el acceso a los recursos comunes por parte de los clientes.
  • Protocolos asimétricos: Los clientes pueden pertenecer a una amplia variedad de tecnologías, y son los responsables por iniciar las solicitudes de servicios. Un servidor es un ente pasivo que se encuentra en espera permanente por dichas solicitudes.
  • Transparencia de localización: Aun cuando un proceso servidor puede residir en el mismo equipo que los procesos clientes, es indispensable que los sistemas clien­te/servidor oculten a estos la localización física de los servidores, redireccionando apropiadamente las llamadas a los servicios requeridos.
  • Apertura: El software cliente/servidor debe ser lo mas independiente posible de las plataformas de hardware y sistemas operativos involucrados.
  • Intercambios basados en mensajes: Los servidores y los clientes participan de sistemas débilmente acoplados, cuya relación se implementa con mecanismos de paso de mensajes (Message-Passing).
  • Encapsulación de servicios: Los procesos servidores deben poder ser actualiza- dos sin que esto provoque cambios en los clientes. Para lograr lo anterior, únicamente es necesario mantener sin alterar la interfaz de comunicación entre ambos componentes.
  • Escalabilidad: El escalamiento de los sistemas cliente/servidor puede ser horizontal (adición o eliminación de clientes sin afectar significativamente el rendimiento global de un sistema) o vertical (crecimiento hacia configuraciones mas grandes y eficientes).
  • Integridad: Los servicios y datos de un servidor se ubican en un lugar centralizado, lo que simplifica su mantenimiento y protección.

Las principales ventajas que brinda la arquitectura cliente/servidor son:

  • Mantenibilidad: la descomposición de sistemas rígidos y monolíticos hacia partes discretas intercomunicadas facilita el mantenimiento y reduce los costos. Como su- cede con la mayoría de productos de la ingeniería, es mas fácil dar servicio, reemplazar y arreglar componentes con interfaces bien definidas, que hacer el equivalen- te en unidades monolíticas.
  • Modularidad: la arquitectura cliente/servidor esta construida sobre la base de módulos conectables. Tanto el cliente como el servidor son módulos del sistema independientes uno del otro y pueden ser reemplazados sin afectarse mutuamente. Se agregan nuevas funciones al sistema ya sea creando nuevos módulos o mejorando los existentes.
  • Adaptabilidad: el desacoplamiento del cliente y del servidor permite una rápida solución ante cambios del entorno del cliente, con modificaciones mínimas o nulas.
  • Escalabilidad: las soluciones cliente/servidor pueden ser orientadas a satisfacer las necesidades cambiantes de la empresa.
  • Portabilidad: actualmente el poder de procesamiento se puede encontrar en varios tamaños: super servidores, servidores, desktop, notebooks, maquinas portátiles. Las soluciones cliente/servidor basadas en estándares permiten a las aplicaciones estar localizadas donde resulte mas ventajoso u oportuno.
  • Sistemas abiertos: los sistemas cliente/servidor pueden desarrollarse bajo la pre- misa de sistemas basados en estándares de la industria.
  • Autonomía: las maquinas cliente pueden presentar diversas configuraciones, tamaños, marcas y arquitecturas. Con una configuración adecuada, cada cliente puede trabajar en forma independiente o como parte de la red distribuida de la empresa.

Si bien vimos que esta arquitectura proporciona numerosas ventajas, no conforman la solución perfecta para las necesidades de administración de la información en una empresa, debido a que imponen también ciertas restricciones, entre las que encontramos (Price 1995):

  • Si una parte importante de la lógica de las aplicaciones es trasladada al servidor, este puede convertirse en un cuello de botella del sistema global. En este caso, los recursos limitados del servidor tienen una alta demanda por un numero cada vez mas creciente de usuarios.
  • Las aplicaciones distribuidas, en especial aquellas basadas en un modelo cooperativo, son mas complejas que las no distribuidas, e imponen cargas adicionales de comunicación y por ende de transferencia de información (datos del usuario y over­head del sistema).
  • Se requiere de un alto grado de compatibilidad y de sujeción a estándares de parte de los dispositivos (hardware y software) que conforman un sistema cliente/servidor, para que este pueda funcionar de una manera efectiva y transparente para el usuario.
  • La mayoría de las herramientas cliente/servidor obligan a los usuarios a aprender esquemas de desarrollo de aplicaciones totalmente nuevos para muchos.
  • La complejidad y el esfuerzo requerido para administrar y soportar un ambiente cliente/servidor grande basado en sistemas abiertos es un punto a considerar. Hay pocas herramientas bien reconocidas que soportan manejo de configuraciones, monitoreo del rendimiento y distribución de versiones de software.

Pero ¿qué pasa con los sistemas operativos en el caso que el cliente y el servidor funcionen en computadoras diferentes?

El sistema operativo de la maquina donde se ejecuta el cliente, posiblemente este orientado a un uso pensado en el ámbito del consumidor de servicios, por ejemplo, un puesto de trabajo donde el usuario accede a servidores de correo, o a servidores de paginas web, o que usa aplicaciones cliente especificas de una aplicación determinada.

No obstante, hay sistemas operativos que permiten alojar un pequeño servidor web con algunas limitaciones.

Los sistemas operativos de las maquinas que ejecutan procesos servidores están orientadas a optimizar el servicio que se ofrece a los clientes. Estas computadoras habitualmente están siempre encendidas y tendrán características físicas orientadas a su servicio. Si es un servidor de archivos, por ejemplo, tendrá que tener capacidad de almacenamiento adecuada. Si es un servidor de una aplicación que se espera sea muy accedida, debe estar configurado y preparado para atender múltiples demandas concurrentes.

Si fuera accedido por el resto de las computadoras en una red, en este servidor se alojarían los servicios de dominio, de DNS, de DHCP, entre otros.

Lo que se viene en la próxima es la nube y la grid…

… esta grid no …

3 pensamientos en “Los Sistemas Operativos y su Distribución – Parte II”

Responder a dreamjiliclub Cancelar respuesta