Conceptos
de Software
La importancia del software supera
frecuentemente a la del hardware.
La imagen que un sistema presenta queda
determinada en gran medida por el software del S. O. y no por el hardware.
Los S. O. no se pueden encasillar
fácilmente, como el hardware, pero se los puede clasificar en dos tipos:
- Débilmente acoplados.
- Fuertemente acoplados.
El software débilmente
acoplado de un sistema distribuido:
- Permite que las máquinas y usuarios sean independientes entre sí
en lo fundamental.
- Facilita que interactúen en cierto grado cuando sea necesario.
- Los equipos individuales se distinguen fácilmente.
Combinando los distintos
tipos de hardware distribuido con software distribuido se logran
distintas soluciones:
- No todas interesan desde el punto de vista funcional del usuario:
- Ej.: un multiprocesador es un multiprocesador:
- No importa si utiliza un bus con cachés
monitores o una red omega.
Sistemas
Operativos de Redes
Una posibilidad es el software débilmente
acoplado en hardware débilmente acoplado:
- Es una solución muy utilizada.
- Ej.: una red de estaciones de trabajo conectadas mediante una LAN.
Cada usuario tiene una estación
de trabajo para su uso exclusivo:
- Tiene su propio S. O.
- La mayoría de los requerimientos se resuelven localmente.
- Es posible que un usuario se conecte de manera remota con otra
estación de trabajo:
- Mediante un comando de “login remoto”.
- Se convierte la propia estación de trabajo
del usuario en una terminal remota enlazada con la máquina remota.
- Los comandos se envían a la máquina remota.
- La salida de la máquina remota se exhibe en la
pantalla local.
- Para alternar con otra máquina remota, primero hay que
desconectarse de la primera:
- En cualquier instante solo se puede utilizar
una máquina.
- Las redes también disponen de un comando de copiado remoto de
archivos de una máquina a otra:
- Requiere que el usuario conozca:
- La posición de todos los archivos.
- El sitio donde se ejecutan todos los comandos.
Una mejor solución
consiste en un sistema de archivos global compartido, accesible desde todas
las estaciones de trabajo:
- Una o varias máquinas soportan al sistema de archivos:
- Son los “servidores de archivos”.
Los “servidores de
archivos”:
- Aceptan solicitudes de los programas de usuarios:
- Los programas se ejecutan en las
máquinas no servidoras, llamadas “clientes”.
- Las solicitudes se examinan, se ejecutan y la
respuesta se envía de regreso.
- Generalmente tienen un sistema jerárquico de archivos.
Las estaciones de trabajo
pueden importar o montar estos sistemas de archivos:
- Se incrementan sus sistemas de archivos locales.
- Se pueden montar los servidores en lugares diferentes de sus
respectivos sistemas de archivos:
- Las rutas de acceso a un determinado archivo
pueden ser diferentes para las distintas estaciones.
- Los distintos clientes tienen un punto de
vista distinto del sistema de archivos.
- El nombre de un archivo depende:
- Del lugar desde el cual se tiene acceso a él.
- De la configuración del sistema de archivos.
El S. O. de este tipo de
ambiente debe:
- Controlar las estaciones de trabajo en lo individual.
- Controlar a los servidores de archivo.
- Encargarse de la comunicación entre los servidores.
Todas las máquinas pueden
ejecutar el mismo S. O., pero esto no es necesario.
Si los clientes y los servidores ejecutan
diversos S. O., como mínimo deben coincidir en el formato y significado de
todos los mensajes que podrían intercambiar.
Esquemas como este se denominan “sistema
operativo de red”:
- Cada máquina tiene un alto grado de autonomía.
- Existen pocos requisitos a lo largo de todo el sistema.
NFS: Network File System
Es uno de los más conocidos y aceptado como sistema
operativo de red.
Fue un desarrollo de Sun Microsystems,
soportado también por distintos fabricantes:
- Surgió para UNIX pero se amplió a otros S. O. (ej.: MS - DOS).
- Soporta sistemas heterogéneos, por ej.: clientes de MS - DOS
que hagan uso de servidores UNIX.
- Los equipos pueden ser también de hardware heterogéneo.
Los aspectos más
interesantes son los relacionados con:
- La arquitectura.
- El protocolo.
- La implantación.
La Arquitectura de NFS
La idea fundamental es permitir que una
colección arbitraria de clientes y servidores compartan un sistema de archivos
común.
Generalmente todos los clientes y servidores
están en la misma LAN, pero esto no
es necesario; por ello se puede ejecutar NFS en una WAN (“red de área
amplia”).
NFS permite que cada máquina sea un
cliente y un servidor al mismo tiempo.
Cada servidor de NFS exporta uno o varios
de sus directorios (y subdirectorios dependientes) para el acceso por parte
de clientes remotos.
Los clientes tienen acceso a los directorios
exportados mediante el montaje:
- Cuando un cliente monta un directorio (remoto), este se convierte
en parte de su jerarquía de directorios.
Un cliente sin disco puede
montar un archivo remoto en su directorio raíz; esto produce un sistema de
archivos soportado en su totalidad en un servidor remoto.
Las estaciones de trabajo que no poseen
discos locales pueden montar directorios remotos en donde lo deseen, en la
parte superior de su jerarquía de directorios local; esto produce un sistema
de archivos que es en parte local y en parte remoto.
Si dos o más clientes montan el mismo
directorio al mismo tiempo:
- Se pueden comunicar al compartir archivos en sus directorios
comunes.
- No hay que hacer nada especial para lograr compartir los archivos.
Los archivos compartidos
figuran en la jerarquía de directorios de varias máquinas y se los puede leer o
escribir de la manera usual.
Protocolos de NFS
Uno de los objetivos de NFS es:
- Soportar un sistema heterogéneo en donde los clientes y
servidores podrían ejecutar distintos S. O. en hardware diverso,
por ello es esencial que la interfaz entre los clientes y los
servidores esté bien definida.
NFS logra este objetivo
definiendo dos “protocolos cliente - servidor”:
- Un “protocolo” es un conjunto de:
- Solicitudes que envían los clientes a los servidores.
- Respuestas que envían los servidores de regreso a los clientes.
Un “protocolo de NFS”
maneja el montaje.
Un cliente puede:
- Enviar el nombre de una ruta de acceso a un servidor.
- Solicitar el permiso para montar ese directorio en alguna parte de
su jerarquía de directorios.
Si el nombre de la ruta de
acceso es válido y el directorio especificado ha sido exportado:
- El servidor regresa un “asa de archivo” (file handle) al
cliente:
- Contiene campos que identifican:
- De manera única el tipo de sistema de
archivos, el disco, el número de nodo-i del directorio.
- La información relativa a la seguridad.
- Es utilizada en llamadas posteriores para la
lectura o escritura de archivos en el directorio montado.
Algunos S. O. soportan la
alternativa del “automontaje”:
- Permite que un conjunto de directorios remotos quede asociado
con un directorio local.
- Ninguno de los directorios remotos se monta durante el arranque del
cliente.
- La primera vez que se abra un archivo remoto, el S. O. envía un
mensaje a los servidores:
- Los servidores responden y se monta su
directorio.
- Las principales ventajas sobre el montaje estático son:
- Se evita el trabajo de contactar servidores y
montar directorios que no son requeridos de inmediato.
- Si el cliente puede utilizar varios servidores
en paralelo, se puede tener:
- Cierta tolerancia a fallas.
- Mejorar el rendimiento.
NFS no da soporte a la duplicación
de archivos o directorios.
Otro “protocolo de NFS” es para el acceso
a los directorios y archivos.
Los clientes pueden:
- Enviar mensajes a los servidores para el manejo de los directorios
y la lectura o escritura de archivos.
- Tener acceso a los atributos de archivo, tales como su modo, tamaño
y fecha de la última modificación.
NFS soporta “servidores
sin estado”:
- No mantienen la información de estado relativa a
los archivos abiertos.
- Si un servidor falla y arranca rápidamente, no se pierde
información acerca de los archivos abiertos y los programas cliente no
fallan.
El “sistema de archivos
remotos” (RFS) del Sistema V de UNIX no funciona así, sino que:
- El servidor lleva un registro del hecho que cierto archivo está
abierto y la posición actual del lector.
- Si un servidor falla y vuelve a arrancar rápidamente:
- Se pierden todas las conexiones abiertas.
- Los programas cliente fallan.
En un “servidor sin
estado”, como NFS:
- Los bloqueos no tienen que asociarse con los archivos abiertos y el
servidor no sabe cuáles archivos están abiertos.
- Se necesita un mecanismo adicional independiente para
controlar el bloqueo.
NFS utiliza el esquema de
protección de UNIX, con los bits “rwx” para el propietario, grupo y
otros.
Se puede utilizar la criptografía de claves
públicas para dar validez al cliente y el servidor en cada solicitud y
respuesta; el cliente malicioso no puede personificar a otro cliente, ya que no
conoce su clave secreta.
Las claves utilizadas para la
autentificación, así como otra información, están contenidas en el NIS:
- “Network Information Service”: Servicio de Información de la Red.
- Almacena parejas (clave, valor).
- Cuando se proporciona una clave, regresa el valor correspondiente.
- Almacena la asociación de:
- Los nombres de los usuarios con las contraseñas
(cifradas).
- Los nombres de las máquinas con las direcciones
en la red y otros elementos.
Implantación de NFS
La implantación del código del
cliente y el servidor es independiente de los protocolos NFS.
Una implementación que suele tomarse como
referencia es la de Sun, que consta de tres capas (ver Figura 7.8).

La capa superior es la de llamadas
al sistema:
- Maneja las llamadas del tipo open, read y close.
- Analiza la llamada y verifica los parámetros.
- Llama a la segunda capa: capa del sistema virtual de
archivos: virtual file system: VFS.
La capa VFS mantiene
una tabla con una entrada por cada archivo abierto que es análoga a la
tabla de nodos-i para los archivos abiertos en UNIX.
La capa VFS tiene una entrada por cada
archivo abierto:
- Se la llama nodo-v (nodo-i virtual).
- Los nodos-v se utilizan para indicar si el archivo es local o
remoto.
- Para los archivos remotos, poseen la información suficiente como
para tener acceso a ellos.
Para montar un sistema
remoto de archivos, el administrador del sistema llama al programa mount
:
- Utiliza la información del directorio remoto, el directorio local
donde será montado y otros datos adicionales.
- Con el nombre del directorio remoto por montar se descubre el
nombre de la máquina donde se localiza dicho directorio.
- Se verifica si el directorio existe y si está disponible para su
montaje remoto.
El núcleo:
- Construye un nodo-v para el directorio remoto.
- Pide el código del cliente NFS para crear un nodo-r (nodo-i
remoto) en sus tablas internas.
El nodo-v apunta al
nodo-r.
Cada nodo-v de la capa VFS contendrá
en última instancia un apuntador a un nodo-i en el S. O. local.
Es posible ver desde el nodo-v si un
archivo o directorio es local o remoto y, si es remoto, encontrar su asa de
archivo.
Todo archivo o directorio abierto tiene un nodo-v
que apunta a un nodo-r o a un nodo-i.
Por razones de eficiencia las transferencias
entre cliente y servidor se hacen en bloques grandes, generalmente de 8k:
- Luego de haber recibido la capa VFS del cliente el bloque
necesario, emite la solicitud del siguiente bloque; esto se denomina lectura
adelantada (read ahead).
Un criterio similar se sigue
con la escritura:
- Antes de ser enviados al servidor los datos se acumulan en forma
local:
- Hasta completar cierta cantidad de bytes, o
- Hasta que se cierra el archivo.
Otra técnica utilizada para mejorar
el rendimiento es el ocultamiento o caching:
- Los servidores ocultan los datos para evitar el acceso al
disco.
- Esto es invisible para los clientes.
Los clientes
mantienen dos cachés:
- Uno para los atributos de archivo (nodos-i).
- Otro para los datos del archivo.
Cuando se necesita un nodo-i
o un bloque del archivo:
- Primero se verifica si la solicitud se puede satisfacer mediante el
caché del cliente, con esto se evita el tráfico en la red.
Un problema importante
del caching es que el caché no es coherente; ej.:
- Dos clientes ocultan el mismo bloque del archivo.
- Uno de ellos lo modifica.
- Cuando el otro lee el bloque, obtiene el valor antiguo.
- Para mitigar este problema, la implantación de NFS:
- Asocia a cada bloque caché un temporizador
(timer).
- Cuando el timer expira, la entrada se descarta.
- Generalmente los tiempos son de:
- 3 segundos para bloques de datos.
- 30 segundos para bloques de directorio.
- Al abrir un archivo con caché se envía un mensaje al servidor para
revisar la hora de la última modificación.
- Se determina si la copia del caché es válida o debe descartarse,
utilizando una nueva copia del servidor.
- El temporizador del caché expira cada 30 segundos y todos los
bloques modificados en el caché se envían al servidor.
Resumiendo:
- NFS solo trata el sistema de archivos.
- NFS no hace referencia a otros aspectos, como la ejecución de un
proceso.
- NFS se ha difundido ampliamente, a pesar de todo.
Sistemas
Realmente Distribuidos
NFS es un ejemplo de software débilmente
acoplado en hardware débilmente acoplado::
- Cada computadora puede ejecutar su propio S. O.
- Solo se dispone de un sistema compartido de archivos.
- El tráfico cliente - servidor debe obedecer los protocolos NFS.
Las multicomputadoras son
un ejemplo de software fuertemente acoplado en hardware débilmente acoplado:
- Crean la ilusión de que toda la red de computadoras es un
solo sistema de tiempo compartido, en vez de una colección de máquinas
diversas.
Un sistema distribuido es
aquel que se ejecuta en una colección de máquinas sin memoria compartida, pero
que aparece ante sus usuarios como una sola computadora:
- A esta propiedad se la conoce como la imagen de un único
sistema.
También se define un
sistema distribuido como aquel que se ejecuta en una colección de máquinas
enlazadas mediante una red pero que actúan como un uniprocesador virtual.
Algunas de las características de los
sistemas distribuidos son las siguientes:
- Debe existir un mecanismo de comunicación global entre los
procesos:
- Cualquier proceso debe poder comunicarse
(intercambiar información) con cualquier otro.
- No tiene que haber:
- Distintos mecanismos en distintas máquinas.
- Distintos mecanismos para la comunicación local
o la comunicación remota.
- Debe existir un esquema global de protección.
- La administración de procesos debe ser la misma en todas
parte.
- Se debe tener una misma interfaz de llamadas al sistema en
todas partes:
- Es normal que se ejecuten núcleos idénticos en
todas las cpu del sistema.
- Es necesario un sistema global de archivos.
Sistemas
de Multiprocesador con Tiempo Compartido
Corresponde a software fuertemente
acoplado en hardware fuertemente acoplado.
Los ejemplos más comunes de propósito
general son los multiprocesadores:
- Operan como un sistema de tiempo compartido, pero con varias
CPU’s en vez de una sola.
- Externamente un multiprocesador con 32 CPU de 3 mips actúa de
manera muy parecida a una sola CPU de 96 mips; 1 mips: 1.000.000 de
instrucciones por segundo.
- Se corresponde con la imagen de un único sistema.
La característica clave
es la existencia de una sola cola para ejecución (Ver Figura 7.9:
- Una lista de todos los procesos en el sistema que no están
bloqueados en forma lógica y listos para su ejecución.
- La cola de ejecución es una estructura de datos contenida en
la memoria compartida.

Los programas de los procesos están en la memoria
compartida, también el S.O.
El planificador (de procesos) del S.
O. se ejecuta como una “región crítica”, con ello se evita que dos CPU
elijan el mismo proceso para su ejecución inmediata.
Cuando un proceso se asigna a un
procesador:
- Encuentra que el caché del procesador está ocupado por palabras de
memoria que pertenecen a aquella parte de la memoria compartida que
contiene al programa del proceso anterior.
- Luego de un breve lapso se habrán reemplazado por el código y los
datos del programa del proceso asignado a ese procesador.
Ninguna CPU tiene memoria
local, es decir que todos los
programas se almacenan en la memoria global compartida.
Si todas las CPU están inactivas en espera
de e / s y un proceso está listo para su ejecución:
- Es conveniente asignarlo a la CPU que se utilizó por última vez
(para ese proceso):
- La hipótesis es que ningún otro proceso utilizó
esa CPU desde entonces (hipótesis de Vaswani y Zahorjan).
Si un proceso se bloquea en
espera de e / s en un multiprocesador, el S. O. puede:
- Suspenderlo.
- Dejarlo en “espera ocupada”:
- Es aplicable cuando la mayoría de la e / s se
realiza en menos tiempo del que tarda un cambio entre los
procesos.
- El proceso conserva su procesador por algunos
milisegundos en espera de que la e / s finalice:
- Si se agota el tiempo de espera y no ha
finalizado la e / s, se realiza una conmutación de procesos.
Generalmente se dispondrá de
un sistema de archivos tradicional, con un único caché:
- Globalmente considerado es similar al sistema de archivos de un
único procesador.