Está en la página 1de 21

Sistemas distribuidos

Un sistema distribuido consiste en dos o más computadoras que se comunican


entre sí a través de una red de cualquier tipo. El modelo predominante es el de
cliente-servidor, donde un cliente realiza peticiones y el servidor responde. 

Redes involucradas

Referencias

Revisión del módulo

Descargar en PDF
LECCIÓN 1 de 4

Redes involucradas

Para que los diferentes hosts (computadoras ubicadas en distintos sitios)


puedan comunicarse entre sí, es necesario que exista una red de
comunicaciones que haga posible transportar la información. Estas redes
pueden ser de poco alcance, como las de dos teléfonos inteligentes que
intercambian una foto por bluetooth, o cubrir el mundo entero, como lo hace
Internet. Ante la gran diversidad de aplicaciones, sistemas operativos,
hardware y tipos de redes, la necesidad de estandarización derivó en la
elaboración de un modelo de referencia por capas denominado modelo de
Interconexión de Sistemas Abiertos (OSI). Este modelo especifica siete
niveles. Cada nivel es responsable de ciertas tareas y, a su vez, provee algún
servicio al nivel superior, lo cual permite simplificar el diseño de las redes. 

Sin embargo, dicho modelo de referencia surgió después que el conjunto de


protocolos TCP/IP. Este conjunto de protocolos nació de la práctica y, como
su nombre lo indica, se basa en protocolos que fueron creados y
perfeccionados. En lugar de definir siete niveles, TCP/IP define originalmente
cuatro, algunos de los cuales comparten las funcionalidades de sus niveles
equivalentes en OSI. A continuación, se describen cinco niveles, ya que
muchos autores dividen el nivel originalmente denominado acceso a la red
en dos: nivel físico y acceso a la red, para que compartan características con
el modelo OSI. 

Nivel 1 (capa física): se encarga de definir las señales que se


usarán, distinguir entre 1 y 0 y definir los medios de transmisión
que se utilizarán.

Nivel 2 (enlace datos): se encarga de crear una trama (unidad de


información) e identificar los diferentes dispositivos de una misma
red. Además, realiza un control de errores.

Nivel 3 (capa de red): cuando las redes se unen, la identificación


usada en el nivel 2 carece de sentido. Esta capa permite la
identificación de dispositivos de redes diferentes y el
direccionamiento de los paquetes a través de ellas.

Nivel 4 (capa de transporte): esta capa permite la comunicación


proceso a proceso entre dos computadoras. Se crea una
abstracción del número de procesos generados por el sistema
operativo y, en su lugar, se utilizan números de puerto.

Nivel 5 (capa de aplicación): esta capa da soporte a las múltiples


aplicaciones utilizadas en sistemas distribuidos, como por ejemplo,
correo electrónico, páginas web, transferencia de archivos,
etcétera.
La figura 1 muestra un ejemplo de implementación de TCP/IP. La máquina A
y la máquina B desean intercambiar datos. La máquina A está conectada a la
red 1, por lo que tendrá una dirección IP correspondiente a dicha red y,
además, su dirección Ethernet (de capa 2). En el otro extremo, la máquina B
posee una dirección IP de la red B y también su dirección Ethernet. Entre las
dos redes, se ubica un encaminador o router que permite la interconexión.
Entre ambas máquinas existe comunicación proceso a proceso que utiliza el
protocolo TCP. Esta comunicación es lógica, ya que la información se
encapsula en un paquete IP. Luego, en una trama Ethernet, viaja hasta la
máquina B y atraviesa el encaminador J, para luego ir subiendo de niveles
hasta llegar a la aplicación.

Figura 1: Modelo TCP/IP


Fuente: Stallings, 2005, p. 603.

Modelo cliente-servidor

Es el modelo que revolucionó las comunicaciones y permitió que diferentes


dispositivos interactúen entre sí a través de una red de comunicaciones. Para
permitir la comunicación entre los procesos de dos computadoras, se utiliza
un socket, el cual puede ser orientado a la conexión (se establece un circuito
virtual antes de transferir datos de usuario, por ejemplo, con el protocolo
TCP) o no orientado a la conexión (UDP). El servidor tiene abierto un socket
que escucha en un determinado puerto. De esta manera, la aplicación del
cliente intentará conectarse al servidor usando ese número de puerto.
Cuando un cliente se conecta, la comunicación se hace por otro puerto del
servidor y el primero se libera para una nueva conexión. Múltiples clientes
pueden interactuar con una aplicación de un servidor. 

El socket contiene tres valores: el protocolo que se utiliza (UDP o TCP), la


dirección IP y el puerto. Cuando el socket emplea TCP, se denomina socket
stream. Si es para UDP, se denomina socket datagrama y es utilizado como
API (interfaz de programación de aplicaciones) que necesitan usar los
protocolos de la capa de transporte UDP o TCP. 

Son ejemplos de aplicaciones que utilizan el modelo cliente-servidor el correo


electrónico, con sus protocolos POP, SMTP o IMAP, el servicio para
transferencia de archivos FTP o el servicio de shell segura (SSH), utilizado
para conectarse remotamente a una consola. Todos estos protocolos
mencionados corresponden a la capa de aplicación del modelo TCP/IP y
requieren de los servicios que ofrece la capa inmediata inferior (transporte y
sus protocolos UDP y TCP) para poder funcionar. En la figura 2 se observa un
esquema de la arquitectura cliente-servidor.

En la computadora del cliente, un servicio de presentación le ofrece una


interfaz amigable para su aplicación. Por debajo se encuentra la lógica de
dicha aplicación. Aquí se realiza la interacción al nivel de la aplicación, pero
recordemos que en realidad este es el nivel superior del modelo TCP/IP.
Realmente esa interacción debe utilizar todas las capas del modelo para
poder llegar a destino y ser procesada por el servidor. Los protocolos
permiten que sistemas operativos y hardware diferentes puedan interactuar
entre sí, ya que en esencia un protocolo es un lenguaje común que debe
implementarse.

Figura 2: Arquitectura cliente-servidor

Fuente: Stallings, 2005, p. 622.

Implementaciones

Existen diversas implementaciones para la arquitectura cliente servidor


según cómo se realice el procesamiento. En general, esta arquitectura puede
implementarse como se presenta a continuación.
Procesamiento basado en host: el dispositivo cliente es una
terminal boba, ya que todo se realiza en el servidor, inclusive la
interfaz de usuario. La terminal solo se usa para acceder al
dispositivo remoto y realizar todo allí.

Procesamiento basado en servidor: el procesamiento se realiza en


el servidor y para el cliente solo está disponible la interfaz para que
acceda el usuario.

Procesamiento cooperativo: permite una mayor productividad, ya


que utiliza recursos tanto del cliente como del servidor para realizar
las operaciones necesarias. Sin embargo, es más compleja que el
resto de las implementaciones.

Procesamiento basado en el cliente: la mayoría (aunque no todas)


las operaciones se realizan en el cliente, lo que libera el uso de los
recursos del servidor y lo habilita para permitir más clientes
conectados.

El modelo cliente-servidor clásico también puede estar compuesto por tres


capas. Entre el cliente y el servidor clásico se adiciona una capa central, que
es otro servidor que puede ser utilizado para convertir protocolos o procesar
datos obtenidos del servidor clásico, lo que libera a este de dichas tareas
para que especialice y mejore el rendimiento de otras. 
Paso de mensajes entre dispositivos 

Como los procesos que se comunican en un modelo cliente-servidor


comparten el uso de la memoria, pero en realidad los dispositivos no
funcionan como uno, sino que cada sistema operativo gestiona la memoria
de su propio dispositivo, existen dos técnicas para el envío de mensajes. La
primera técnica consiste en el envío y la recepción simple de mensajes, los
cuales se implementan básicamente con las funciones send para enviar y
receive para recibir. Lo que la función receive hace es indicar de quién se
recibirá el mensaje y definir espacio en un buffer donde llegarán los datos
recibidos.

Send especifica un destino y los datos que se van a transmitir. Luego de


construirse una unidad de datos mediante la función send, el conjunto de
protocolos TCP/IP hará posible enviarla a destino a través de una o más
redes. Cuando llegue a destino, el mismo conjunto de protocolos TCP/IP
recorrerá el camino inverso a través de sus capas para entregar la unidad de
datos, la cual es analizada para determinar cuál es el proceso que debe
utilizarla para luego pasarla a su respectivo buffer.

Este tipo de pase de mensajes puede ser fiable cuando el protocolo de la


capa de transporte garantiza la entrega. La aplicación puede dar por hecho
que una vez que envía un dato, este llegará a destino o, en caso contrario,
será informado el error. En el caso de que no se utilice el protocolo TCP y se
utilice UDP, no se garantiza la entrega de datos, por lo cual el pase de
mensajes pasa a ser no fiable y la aplicación debe realizar un control. 

El pase de mensajes puede, además, ser bloqueante o no bloqueante. Un


send bloqueante no devuelve el control al proceso emisor hasta que el
mensaje haya sido transmitido (servicio no fiable) o hasta que el mensaje
haya sido enviado y se haya recibido el acuse de recibo (servicio fiable). Un
receive bloqueante no devuelve el control hasta que el mensaje haya sido
situado en su correspondiente buffer (Stallings, 2005).

La segunda técnica consiste en llamadas a procedimientos remotos o


remote procedure call (RPC). Los programas dentro de una misma máquina
utilizan este esquema. Entonces, por su gran aceptación y conocimiento,
resulta conveniente llevarlo a un sistema distribuido. En la figura 3 se
observa un esquema con RPC. A la izquierda se encuentra el cliente, el cual
realiza, por un lado, una llamada realmente local y, por otro, una llamada que
parece local, pero que en realidad luego es enviada al servidor mediante
TCP/IP. El servidor trata a este RPC como local y la respuesta es nuevamente
enviada a través de la red al cliente, el cual recibe una respuesta como si
fuera local.

Figura 3: Técnica con RPC


Fuente: Stallings, 2005, p. 634.

Seguridad y Protección

La seguridad de los datos de un sistema operativo debe contemplar


múltiples facetas:

Protección ante posibles daños físicos de los datos (ruptura de


discos u otro tipo de daño).

Acceso indebido a los mismos (fallas de seguridad).

La protección consiste en evitar que se haga un uso indebido de


los recursos cuando se está dentro del ámbito del sistema
operativo.

Deben existir mecanismos y políticas que aseguren que los


usuarios solo acceden a sus propios recursos (archivos, zonas
de memoria, etc.). (Calderón et al., s. f., https://bit.ly/3a6f4Go)

Para poder garantizar estos aspectos deben tenerse en cuenta 3 aspectos


de diseño:

evitar la pérdida de datos por medio de copias de seguridad, por


ejemplo;

controlar la privacidad de los datos mediante un cifrado, encriptado,


etc.;

controlar el acceso a los datos y recursos por medio de la


identificación (contraseñas, etc.). (Calderón et al., s. f.)

Problemas de seguridad

Uso indebido o malicioso de programas (troyanos, backdoors, etc.).

Usuarios inexpertos o descuidados.

Usuarios no autorizados (errores de autenticación).


Gusanos: programas destructivos que se autopropagan.

Rompedores de sistemas de protección (analizadores de


contraseñas).

Ataques por denegación de servicios. (Calderón et al., s. f.)

Políticas de seguridad

Cada organización tiene requisitos de seguridad distintos.

Las políticas de seguridad dictan las normas a seguir para


proporcionar protección y seguridad a los sistemas.

No implica mecanismos, solo políticas.

Existen leyes que se deben cumplir cuando se utiliza


información confidencial.

Las políticas de seguridad deben dar confianza. (Calderón et al.,


s. f., https://bit.ly/3a6f4Go)

Política militar

Se basa en la clasificación de todos los recursos con requisitos de


seguridad en alguno de los siguientes niveles:

desclasificado;
restringido;

confidencial;

secreto;

alto secreto.

Los usuarios que tienen acceso a recursos del nivel I también lo tienen a
los de nivel i+1.

Regla de lo que se necesita saber: solo se permite el acceso a datos


sensibles a quien los necesita para hacer su trabajo. (Calderón et al., s. f.,
https://bit.ly/3a6f4Go)

Política comercial

Se basan en la política militar, pero debilitan los requisitos.

La muralla china clasifica a recursos y usuarios en 3 niveles de


abstracción:

objetos;

grupos;

clases de conflictos.

Cada objeto pertenece a un único grupo y cada grupo a una única clase
de conflicto.

Una clase de conflicto, sin embargo, puede incluir a varios grupos.


Política de control de acceso: una persona puede acceder a la
información siempre que antes no haya accedido a otro grupo de la clase
de conflicto a la que pertenece la información a la que quiere acceder.
(Calderón et al., s. f., https://bit.ly/3a6f4Go)

Modelos de seguridad

“Un modelo es un mecanismo que permite hacer explícita una política de seguridad.

Modelos de seguridad multinivel: rangos de seguridad y separación rigurosa entre usuarios


y objetos a los que no tienen acceso” (Calderón et al., s. f., https://bit.ly/3a6f4Go). Suelen
ser modelos muy abstractos y costosos de implementar.

“Modelos de seguridad limitada: responden formalmente a las propiedades que un


sistema seguro debe satisfacer” (Calderón et al., s. f., https://bit.ly/3a6f4Go). Se basan en
dos principios:

Usan la teoría general de sistemas para definir un sistema formal de reglas de


protección.

Usan una matriz de control de acceso en cuyas filas están los usuarios y en las
columnas los objetos.

Los derechos de acceso del usuario i sobre el objeto j son los contenidos del elemento de
la matriz (i, j). (Calderón et al., s. f., https://bit.ly/3a6f4Go)

Principios de seguridad de un sistema operativo


Diseño abierto.

Exigir permisos.
Privilegios mínimos.

Mecanismos económicos.

Compartición mínima.

Fáciles de usar y adaptar.

Separación de privilegios.” (Calderón et al., s. f., https://bit.ly/3a6f4Go)

Tareas de seguridad

Autenticación de recursos.

Asignación de recursos.

Control de acceso a los recursos.

Control de compartición y comunicación entre procesos.

Protección de datos.” (Calderón et al., s. f., https://bit.ly/3a6f4Go)

Figura 4: Tareas de seguridad y componentes del sistema operativo


Fuente: Calderón et al., s. f., https://bit.ly/3a6f4Go

C O NT I NU A R
LECCIÓN 2 de 4

Referencias

Calderón, A.; Carretero Pérez, J.; Casares, M.; García Blas, F.; García
Sánchez, J.; y Pérez Lobato, J. (s. f.). Lección 14: introducción a la seguridad.
Sistemas operativos. Recuperado de http://ocw.uc3m.es/ingenieria-
informatica/sistemas-operativos/material-de-clase-
1/MT_T6_L1.pdf.zip/at_download/file

Stallings, W. (2005). Sistemas operativos (quinta edición). Madrid, España:


Pearson Education.
LECCIÓN 3 de 4

Revisión del módulo

Hasta acá aprendimos

Sistema de archivos

Los archivos son fundamentales para la mayoría de las aplicaciones. Por un
lado, porque las aplicaciones obtienen la información que requiere ser
procesada desde un archivo. Por otra parte, una vez procesada la
información, las aplicaciones deben almacenarla en el almacenamiento
secundario para evitar perder datos ante la falta de energía. Para evitar que
cada aplicación deba disponer de un código para interactuar con los archivos,
se crea una abstracción que permite, por ejemplo, crear archivos, guardar
información, copiarlos o eliminarlos.

Almacenamiento secundario

Un archivo que se almacena en la memoria secundaria (en el disco
magnético, por ejemplo) está formado por un conjunto de bloques, los cuales
pueden ser llevados a la memoria principal mediante una petición de
lectura/escritura. Cuando, por ejemplo, se crea un archivo, el sistema
operativo o de gestión de archivos se encargan de suministrar la cantidad
necesaria de bloques para que el archivo sea exitosamente almacenado.
Para poder realizar esta tarea, es necesario conocer la cantidad de espacio
libre que existe.

Niveles de redundancia

Actualmente, el almacenamiento secundario está liderado por discos
magnéticos. Si se utiliza un solo disco como memoria secundaria, el
rendimiento será muy pobre y la probabilidad de perder información vital,
muy alta. Para evitar esto, existen diferentes configuraciones que agrupan los
discos y mejoran el rendimiento, la probabilidad de pérdida de información o
ambas cosas.

Sistemas distribuidos

Un sistema distribuido consiste en dos o más computadoras que se
comunican entre sí a través de una red de cualquier tipo. El modelo
predominante es el de cliente-servidor, donde un cliente realiza peticiones y el
servidor responde.
LECCIÓN 4 de 4

Descargar en PDF

Módulo 4 - Lectura 4.pdf


341.2 KB

También podría gustarte