SISTEMA OPERATIVO
UNIX
Introducción:
El sistema operativo
UNIX
surgió en los laboratorios de AT&T Bell como un
proyecto de
algunos programadores de SO personal.
AT&T ofreció el código fuente a universidades
para su investigación y su uso se extendió
en ese ambiente y en
el empresario.
Aunque nunca se haya usado UNIX, casi todos
los SO actuales tienen muchos conceptos tomados de el, incluyendo
al DOS, OS/2, NT, etc. Claro que en UNIX estos
conceptos están en su estado mas
puro e ideal. En DOS se puede manejar un port de comunicaciones
abriéndolo como un archivo pero no
funciona. En UNIX es la
única manera y funciona. UNIX es algo
así como el latín de los sistemas
operativos.
La palabra UNIX es marca registrada
y actualmente esta en poder de
Novell. Aun
así, muchas empresas
diseñaron sistemas UNIX
compatibles (el desarrollo a
través del código fuente así lo
permitía), o sea que que se puede tomar un programa escrito
en C para una plataforma, compilarlo y usarlo en otra, lo que
significa que si uno instala UNIX en su modesta PC, tiene un
ambiente muy
similar al de "workstations" profesionales.
Actualmente los SO así orientados
son SCO UNIX, BSD UNIX, AIX de IBM, Unixware de Novelll (de uso
publico).
UNIX tiene variada aplicación,
pero especialmente se destaca en redes, lo que implica
Internet.
(primariamente fue la plataforma elegida como todo proceso de
investigación, por eso su relación
conceptual, protocolar, en servicios,
etc. En cualquier versión UNIX se encontraran herramientas
para usar internet, aunque mas de tipo
científicas que las populares Windows u
OS/2.).
Aun siendo autosuficiente, ayuda a su
popularización la aparición del Linux, un
clon de UNIX Freeware (distribución gratuita) tan potente como los
mejores SO aplicables en PC.
El desarrollo del
Linux
UNIX fue tradicionalmente un SO caro,
pero eso dejo de ser un problema ya que un grupo de
programadores distribuidos a lo largo de internet y encabezados por
un estudiante finlandés llamado Linus Torvalds tomo la
iniciativa de generar un UNIX totalmente
gratuito.
La característica de Linux hace que no
tenga nada que envidiarle a los sistemas
comerciales. Tiene algunas desventajas. No hay soporte. Solo los
foros de discusión en internet y en sistemas como MP
Online! (foros/sist/unix), aunque esto suele ser suficiente la
mayoría de los casos. Tampoco hay manuales
impresos, pero esto no es demasiado problema porque existen
libros y mucha
documentación en archivos.
También esta el problema de que Linux es
solamente el kernel (el núcleo del sistema
operativo). Cada comando aparte, cada función, es un
proyecto
independiente y son paquetes que se instalan por separado.
También sucede que hay distintas versiones de lo mismo
pero este problema también encontró su
solución. Diferentes personas en el mundo se han encargado
de armar en instalar un sistema Unix mas
o menos coherente, a esos sistemas ya
armados y configurados se los llama "distribuciones". La mas
conocida actualmente es la distribución
Slackware.
La interfaz gráfica que se usa en
el ambiente UNIX
se llama Xwindows (también gratuito: Xfree
para Linux en las
distribuciones), y es muy flexible y poderosa. Esta
diseñada para trabajar en cualquier SO, red y computadora.
Para correr Linux no es
necesario una gran maquina. Basta con una 386 con 4MB (8MB para
Xwindows, mas una buena placa de video), y su
instalación demanda
alrededor de 100MB. Soporta bus ISA, PCI y local
bus (no Micro
Channel). Respecto al hard, el soporte es muy completo, soporta
casi todas las placas de sonido, todos los
CD ROM, placas
SCSI, de red, etc. X
permite ser configurado para una gran variedad de placas de
video.
Además linux fue portado
a otras plataformas, o sea que también su puede usar sobre
Alpha, MIPS, Sparc, 68000 y PowerPC.
Características
básicas
Multitarea: Permite la
ejecución de varias tareas a la vez, con muy buen
rendimiento.
32 bits: Aprovecha el procesador 386 y
superiores por completo.
Estable: se caen las aplicaciones
pero no el sistema. Cada
aplicación corre completamente aislada de las demás
(evita la proliferación de virus, de hecho
no existen por ahora).
Memoria virtual: Permite que las
aplicaciones trabajen sobre un espacio de memoria
virtual que es mayor que la memoria
disponible. Logra esto intercambiando paginas de 4 KB entre
la memoria y
el disco.
Librerías dinámicas:
Varias aplicaciones pueden compartir código, ahorrando
memoria y
espacio en disco.
Multiusuario: permite que varias
personas usen la computadora
a la vez, manteniendo para esto un sitema de seguridad.
Funcionamiento
Linux le pregunta al usuario un nombre y
una clave. Esto es así porque UNIX esta pensado
multiusuario. Se puede lograr compartir la misma computadora
entre muchisimas personas que entran por una red o por módem.
Existe un nombre de usuario especial que es el que tiene derecho
sobre todo el sistema, su
nombre: Root.
La forma de moverse dentro de UNIX es
parecida a DOS:
Comandos:
pwd…..para averiguar cual es el
directorio actual
ls………pedir un listado del
directorio actual
cd……..cambia un
directorio
mkdir…crea un
directorio
cat…….para ver un
archivo
echo….imprime una cadena de
caracteres
cp……..copia un
archivo
mv…….mueve o renombra un
archivo.
Ejemplo:
newton:/test# echo Hola
> "Esto es un archivo"
newton:/test# ls
-l
total 1
-rw-r-r- 1 root root 5 Jan 13 12:01
Esto es un archivo
newton:/test# mkdir
direc
newton:/test# cd
direc
newton:/test/direc# ls
-l
total 0
newton:/test/direc# mv "…/Esto es un
archivo"
.
newton:/test/direc# ls
-l
total 1
-rw-r-r- 1 root root 5 Jan 13 12:01
Esto es un archivo
newton:/test/direc#
En el prompt podemos ver el nombre de
la computadora
(newton)
seguido del directorio actual.
Al pedir un listado de archivos con
ls (-l pide mas información), el sistema muestra quien es
el dueño del archivo, en este
caso root.
A la izquierda muestra quienes
pueden usarlo.
Los significados de las letras:
r=lectura,
w=escritura,
x=ejecutable.
Hay permisos para el dueño, el
grupo al que
pertenece y el resto. O sea que un archivo ejecutable legible
para el dueño y para el grupo pero no
para los demás informaría: rwxrwx–
.
UNIX en el
mundo
A medida que los servidores
departamentales se abren paso hacia el centro de datos, los
servidores
Unix se han ido incorporando con mayor presteza, ya que son mas
escalables que los servidores PC
bajo NT Windows. Los
sistemas Cray
Origin2000 de Silicon grafics pueden funcionar con hasta 128
procesadores
conectados mediante redes de malla CrayLink
Interconnect (NT soporta hasta 28).
Los sistemas UNIX tienen un rendimiento
mayor que sus colegas de arquitectura PC.
Así lo afirma el Transaction Processing Council (TCP)
-California, EEUU- quien asegura que los sistemas Unix ocupan los
10 primeros lugares en el ranking de performance. Con una
versión de DBMS Oracle
corriendo sobre un sistema Alpha de
Digital Equipment, se completan 102.541 transacciones por
minuto.
Entre las grandes organizaciones,
el International Technology Group descubrió que la mayor
parte de los presupuestos
de Informática y Telecomunicaciones se gasta en servidores Unix
(43%). El gasto de los servidores PC
ocupa el segundo puesto (32,1%), mientras que los mainframe son
los que generan el menor gasto (24,4%).
Características
Generales:
Es un sistema operativo
de tiempo
compartido, controla los recursos de una
computadora y
los asigna entre los usuarios. Permite a los usuarios correr sus
programas.
Controla los dispositivos de periféricos conectados a la
máquina.
Posee las siguientes características:
– Es un sistema operativo
multiusuario, con capacidad de simular multiprocesamiento y
procesamiento no interactivo.
– Está escrito en un lenguaje de
alto nivel : C.
– Dispone de un lenguaje de
control
programable llamado SHELL.
– Ofrece facilidades para la
creación de programas y
sistemas y el ambiente
adecuado para las tareas de diseños de software.
– Emplea manejo dinámico de
memoria por
intercambio o paginación.
– Tiene capacidad de
interconexión de procesos.
– Permite comunicación entre procesos.
– Emplea un sistema jerárquico
de archivos, con
facilidades de protección de archivos,
cuentas y
procesos.
– Tiene facilidad para
redireccionamiento de Entradas/Salidas.
– Garantiza un alto grado de
portabilidad.
El sistema se basa en un Núcleo
llamado Kernel, que reside permanentemente en la memoria, y
que atiende a todas las llamadas del sistema, administra el
acceso a los archivos y el
inicio o la suspención de las tareas de los
usuarios.
La comunación con el sistema UNIX
se da mediante un programa de
control llamado
SHELL. Este es un lenguaje de
control, un
intérprete, y un lenguaje de
programación, cuyas características lo hacen sumamente flexible
para las tareas de un centro de cómputo. Como lenguaje de
programación abarca los siguientes
aspectos:
– Ofrece las estructuras de
control normales:
secuenciación, iteración condicional,
selección y otras.
– Paso de
parámetros.
– Sustitución textual de
variables y
Cadenas.
– Comunicación bidireccional entre
órdenes de shell.
El shell permite modificar en forma
dinámica las características con que se ejecutan los
programas en
UNIX:
Las entradas y salidas pueden ser
redireccionadas o redirigidas hacia archivos, procesos y
dispositivos. Es posible interconectar procesos entre
sí.
Diferentes usuarios pueden "ver"
versiones distintas del sistema operativo
debido a la capacidad del shell para configurar diversos
ambientes de ejecución. Por ejemplo, se puede hacer que un
usuario entre directamente a su sección, ejecute un
programa en
particular y salga automáticamente del sistema al terminar
de usarlo.
El núcleo del Sistema
Operativo
El núcleo del sistema operativo
Unix (llamado Kernel) es un programa escrito
casi en su totalidad en lenguaje C,
con excepción de una parte del manejo de interrupciones,
expresada en el lenguaje
ensamblador del procesador en el
que opera.
Las funciones del
núcleo son permitir la existencia de un ambiente en el
que sea posible atender a varios usuarios y múltiples
tareas en forma concurrente, repartiendo al procesador entre
todos ellos, e intentando mantener en grado óptimo la
atención individual.
El Kernel opera como asignador de
recursos para
cualquier proceso que
necesite hacer uso de las facilidades de cómputo. Es el
componente central de Unix y tiene las siguientes funciones:
– Creación de procesos,
asignación de tiempos de atención y
sincronización.
– Asignación de la
atención del procesador a los
procesos que lo requieren.
– Administración de espacio en el sistema de
archivos, que incluye: acceso, protección y administración de usuarios; comunicación entre usuarios v entre
procesos, y manipulación de E/S y administración de periféricos.
– Supervisión de la transmisión de
datos entre
la memoria
principal y los dispositivos periféricos.
El Kernel reside siempre en
la memoria
central y tiene el control sobre
la
computadora, por lo que ningún otro proceso puede
interrumpirlo; sólo pueden llamarlo para que proporcione
algún servicio de
los ya mencionados. Un proceso llama
al Kernel mediante módulos especiales conocidos como
llamadas al sistema.
El Kernel consta de dos artes
principales: la sección de control de procesos y la de
control de dispositivos. La primera asigna recursos,
programas,
procesos y atiende sus requerimientos de servicio; la
segunda, supervisa la transferencia de datos entre la
memoria
principal y los dispositivos periféricos. En términos generales,
cada vez que algún usuario oprime una tecla de una
terminal, o que se debe leer o escribir información del disco magnético, se
interrumpe al procesador
central y el núcleo se encarga de efectuar la
operación de transferencia.
Cuando se inicia la operación de
la
computadora, debe cargarse en la memoria una copia
del núcleo, que reside en e] disco magnético
(operación denominada bootstrap). Para ello, se
deben inicializar algunas interfaces básicas de hardware; entre ellas, el
reloj que proporciona interrupciones periódicas. El
Kernel también prepara algunas estructuras de
datos que
abarcan una sección de almacenamiento
temporal para transferencia de información entre terminales y procesos,
una sección para almacenamiento de
descriptores de archivos y una variable que indica la cantidad de
memoria
principal.
A continuación, el Kernel
inicializa un proceso
especial, llamado proceso 0. En general, los procesos se
crean mediante una llamada a una rutina del sistema
(fork), que funciona por un mecanismo de
duplicación de procesos. Sin embargo, esto no es
suficiente para crear el primero de ellos, por lo que el Kernel
asigna una estructura de
datos y establece apuntadores a una sección especial
de la memoria, llamada tabla de procesos, que contendrá
los descriptores de cada uno de los procesos existentes en el
sistema.
Después de haber creado el proceso
0, se hace una copia del mismo, con lo que se crea el
proceso 1; éste muy pronto se encargará de
"dar vida" al sistema completo, mediante la activación de
otros procesos que también forman parte del núcleo.
Es decir, se inicia una cadena de activaciones de procesos, entre
los cuales destaca el conocido como despachador, o scheduler, que
es el responsable de decidir cuál proceso se
ejecutará y cuáles van a entrar o salir de la
memoria central. A partir de ese momento se conoce el
número 1 como proceso de inicialización del
sistema, init.
El proceso init es el responsable
de establecer la estructura de
procesos en Unix. Normalmente, es capaz de crear al menos dos
estructuras
distintas de procesos: el modo monousuario y el multiusuario.
Comienza activando el intérprete del lenguaje de
control (Shell) en la terminal principal, o consola, del sistema
y proporcionándole privilegios de "superusuario". En la
modalidad de un solo usuario la consola permite iniciar una
primera sesión, con privilegios especiales, e impide que
las otras líneas de comunicación acepten iniciar sesiones
nuevas. Esta modalidad se usa con frecuencia para revisar y
reparar sistemas de archivos, realizar pruebas de
funciones
básicas del sistema y para otras actividades que requieren
uso exclusivo de la
computadora.
Init crea otro proceso, que espera
pacientemente a que alguien entre en sesión en alguna
línea de comunicación. Cuando esto sucede, realiza
ajustes en el protocolo de la
línea y ejecuta el programa login,
que se encarga de atender inicialmente a los nuevos usuarios. Si
la clave del usuario, y la contraseña proporcionadas son
las correctas, entonces entra en operación el programa
Shell, que en lo sucesivo se encargará de la
atención normal del usuario que se dio de alta en esa
terminal.
A partir de ese momento el responsable de
atender al usuario en esa terminal es el intérprete
Shell.
Cuando se desea terminar la sesión
hay que desconectarse de Shell (y, por lo tanto, de Unix),
mediante una secuencia especial de teclas (usualmente. <
CTL > – D). A partir de ese momento la terminal queda
disponible para atender a un nuevo usuario.
Administración de Archivos y
Directorios
El sistema de archivos de Unix; esta
basado en un modelo
arborescente y recursivo, en el cual los nodos pueden ser tanto
archivos como directorios, y estos últimos pueden contener
a su vez directorios o subdirectorios. Debido a esta
filosofía, se maneja al sistema con muy pocas
órdenes, que permiten una gran gama de posibilidades. Todo
archivo de Unix está controlado por múltiples
niveles de protección, que especifican los permisos de
acceso al mismo. La diferencia que existe entre un archivo de
datos, un
programa, un manejador de entrada/salida o una instrucción
ejecutable se refleja en estos parámetros, de modo que el
sistema operativo adquiere características de coherencia y elegancia
que lo distinguen.
La raíz del sistema de archivos
(conocida como root ) se denota con el símbolo "/",
y de ahí se desprende un conjunto de directorios que
contienen todos los archivos del sistema de cómputo. Cada
directorio, a su vez, funciona como la subraíz de un nuevo
árbol que depende de él y que también puede
estar formado por directorios o subdirectorios y archivos. Un
archivo siempre ocupará el nivel más bajo dentro
del árbol, porque de un archivo no pueden depender otros;
si así fuera, sería un directorio. Es decir, los
archivos son como las hojas del árbol.
Se define en forma unívoca el
nombre de todo archivo (o directorio) mediante lo que se conoce
como su trayectoria (path name): es decir, el conjunto completo
de directorios, a partir de root (/), por los que hay que
pasar para poder llegar
al directorio o archivo deseado. Cada nombre se separa de los
otros con el símbolo /, aunque tan sólo el
primero de ellos se refiere a la raíz.
Por ejemplo, el
archivo
u/gerencia/abril94l/carta2
tiene toda esta trayectoria como nombre
absoluto, pero se llama gerencia/abril94l/carta2, sin 1ra
diagonal inicial, si se observa desde el directorio /u.
Para los usuarios que están normalmente en el directorio
/u/gerencia, el archivo se llama abril94l/carta2.
Así, también puede existir otro archivo llamado
carta2, pero dentro de algún otro directorio y en
caso de ser necesario se emplearía el nombre de la
trayectoria (completa o en partes, de derecha a izquierda) para
distinguirlos. Unix ofece medios muy
sencillos para colocarse en diferentes puntos del árbol
que forma el sistema de archivos, que para el ejemplo anterior
podría ser el siguiente:
Como se dijo antes, desde el punto de
vista del directorio abril94, que a su vez pertenece al
directorio gerencia del
directorio /u, basta con el nombre carta2 para
apuntar al archivo en cuestión.
En esta forma se maneja el sistema
completo de archivos y se dispone de un conjunto de
órdenes de Shell (además de múltiples
variantes) para hacer diversas manipulaciones, como crear
directorios, moverse dentro del sistema de archivos, copiarlos,
etcétera.
Unix incluye, además,
múltiples esquemas para crear, editar y procesar documentos.
Existen varios tipos de editores, formadores de textos,
macroprocesadores para textos, formadores de tablas,
preprocesadores de expresiones matemáticas y un gran número de
ayudas y utilerías diversas, que se mencionan más
adelante.
A continuación se describe el modo
de funcionamiento de Unix, con base en un modelo de
estudio de sistemas
operativos que lo divide en "capas" jerárquicas para
su mejor comprensión.
Manejo de archivos y de información
Como ya se describió, la estructura
básica del sistema de archivos es jerárquica, lo
que significa que los archivos están almacenados en varios
niveles. Se puede tener acceso a cualquier archivo mediante su
trayectoria, que especifica su posición absoluta en la
jerarquía, y los usuarios pueden cambiar su directorio
actual a la posición deseada. Existe también un
mecanismo de protección para evitar accesos no
autorizados. Los directorios contienen información para cada archivo, que consiste
en su nombre y en un número que el Kernel utiliza para
manejar la estructura
interna del sistema de archivos, conocido como el nodo-i. Hay un
nodo-i para cada archivo, que contiene información de su
directorio en el disco, su longitud, los modos y las fechas de
acceso, el autor, etc. Existe, además, una tabla de
descriptores de archivo, que es una estructura de
datos residente en el disco magnético, a la que se
tiene acceso mediante el sistema mencionado de E/S por
bloques.
El control del espacio libre en el disco
se mantiene mediante una lista ligada de bloques disponibles.
Cada bloque contiene la dirección en disco del siguiente bloque en
la cadena. El espacio restante contiene las direcciones de
grupos de
bloques del disco que se encuentren libres. De esta forma, con
una operación de E/S, el sistema obtiene un conjunto de
bloques libres y un apuntador para conseguir
más.
Las operaciones de
E/S en archivos se llevan a cabo con la ayuda de la
correspondiente entrada del nodo-i en la tabla de archivos del
sistema. El usuario normalmente desconoce los nodos-i porque las
referencias se hacen por el nombre simbólico de la
trayectoria. Los procesos emplean internamente funciones
primitivas (llamadas al sistema) para tener acceso a los
archivos; las más comunes son open, creat, read, write,
seek, close y unlink, aunque sólo son empleadas por los
programadores, no por los usuarios finales del
sistema.
Toda esta estructura
física se
maneja "desde afuera" mediante la filosofía
jerárquica de archivos y directorios ya mencionada, y en
forma totalmente transparente para el usuario. Además,
desde el punto de vista del sistema operativo, un archivo es muy
parecido a un dispositivo.
Las ventajas de tratar a los dispositivos
de E/S en forma similar a los archivos normales son
múltiples: un archivo y un dispositivo de E/S se tornan
muy parecidos; los nombres de los archivos y de los dispositivos
tienen la misma sintaxis y significado, así que a un
programa que espera un nombre de archivo como parámetro
puede dársele un nombre de dispositivo (con esto se logra
interacción rápida y fácil entre procesos de
alto nivel).
El sistema Unix ofrece varios niveles de
protección para el sistema de archivos, que consisten en
asignar a cada archivo el número único de
identificación de su dueño, junto con nueve bits de
protección, que especifican permisos de lectura,
escritura y
ejecución para el propietario, para otros miembros de su
grupo
(definido por el administrador del
sistema) y para el resto de los usuarios. Antes de cualquier
acceso se verifica su validez consultando estos bits, que residen
en el nodo-i de todo archivo. Además, existen otros tres
bits que se emplean para manejos especiales, relacionados con la
clave del superusuario.
Otra característica de Unix es que
no requiere que el conjunto de sistemas de archivos resida en un
mismo dispositivo.
Es posible definir uno o varios sistemas
"desmontables", que residen físicamente en diversas
unidades de disco. Existe una orden (mkfs) que permite
crear un sistema de archivos adicional, y una llamada al sistema
(mount) con la que se añade (y otra con la que se
desmonta) uno de ellos al sistema de archivos
global.
EI control de las impresoras de
una computadora
que funciona con el sistema operativo Unix consiste en un
subsistema (SPOOL) que se encarga de coordinar los pedidos
de impresión de múltiples usuarios. Existe un
proceso de Kernel que en forma periódica revise las colas
de servicio de
las impresoras
para detectar la existencia de pedidos e iniciar entonces las
tareas de impresión. Este tipo de procesos, que son
activados en forma periódica por el núcleo del
sistema operativo, reciben en Unix el nombre de daemons
(duendes), tal vez porque se despiertan y aparecen sin previo
aviso. Otros se encargan de activar procesos en tiempos
previamente determinados por el usuario, o de escribir
periódicamente los contenidos de los buffers de memoria en
el disco magnético.
Procesos. Manejo del
Procesador
En Unix se ejecutan programas en un
medio llamado "proceso de usuario". Cuando se requiere una
función del Kernel, el proceso de usuario hace una llamada
especial al sistema y entonces el control pasa temporalmente al
núcleo. Para esto se requiere de un conjunto de elementos
de uso interno, que se mencionan a
continuación.
Se conoce como imagen a una
especie de fotografía
del ambiente de ejecución de un proceso, que incluye una
descripción de la memoria, valores de
registros
generales, status de archivos abiertos, el directorio actual,
etcétera. Una imagen es
el estado
actual de una computadora
virtual, dedicada a un proceso en particular.
Un proceso se define como la
ejecución de una imagen. Mientras
el procesador ejecuta un proceso, la imagen debe
residir en la memoria principal; durante la ejecución de
otros procesos permanece primera en la memoria principal a menos
que la aparición de un proceso activo de mayor prioridad
la obligue a ser copiada al disco, como ya se
dijo.
Un proceso puede encontrarse en uno de
varios estados: en ejecución; listo para ejecutar, o en
espera.
Cuando se invoca una función del
sistema, el proceso de usuario llama al Kernel como subrutina.
Hay un cambio de
ambientes y, como resultado, se tiene un proceso del sistema.
Estos dos procesos son dos fases del mismo original, que nunca se
ejecutan en forma simultánea.
Existe una tabla de procesos que contiene
una entrada por cada uno de ellos con los datos que requiere el
sistema: identificación, direcciones de los segmentos que
emplea en la memoria, información que necesita el
scheduler y otros. La entrada de la tabla de procesos se asigna
cuando se crea el proceso y se libera cuando éste
termina.
Para crear un proceso se requiere la
inicialización de una entrada en la tabla, así como
la creación de segmentos de texto y de
datos. Además, es necesario modificar la tabla cuando
cambia el estado del
proceso o cuando recibe un mensaje de otro (para
sincronización, por ejemplo). Cuando un proceso termina,
su entrada en la tabla se libera y queda otro disponible para que
otro nuevo la utilice.
En el sistema operativo Unix los procesos
pueden comunicarse internamente entre sí, mediante el
envío de mensajes o señales. El mecanismo conocido
como interconexión (pipe) crea un canal entre dos procesos
mediante una llamada a una rutina del Kernel, y se emplea tanto
para pasar datos unidireccionalmente entre las imágenes
de ambos, como para sincronizarlos, ya que si un proceso intenta
escribir en un pipe ocupado, debe esperar a que el receptor lea
los datos pendientes. Lo mismo ocurre en el caso de una lectura de
datos inexistentes: el proceso que intenta leer debe esperar a
que el proceso productor deposite los datos en el canal de
intercomunicación.
Entre las diferentes llamadas al sistema
para el manejo de procesos que existen en Unix están las
siguientes, algunas de las cuales ya han sido mencionadas: fork
(sacar una copia a un proceso); exec (cambiar la identidad de
un proceso); kill (enviar una señal a un proceso); signal
(especificar la acción por ejecutar cuando se recibe una
señal de otro proceso), y exit (terminar un
proceso).
Dentro de las tareas del manejo del
procesador destaca la asignación dinámica (scheduling), que en Unix resuelve
el scheduler mediante un mecanismo de prioridades. Cada proceso
tiene asignada una prioridad; las prioridades de los procesos de
usuario son menores que la más pequeña de un
proceso del sistema.
El "motor" que
mantiene en movimiento un
esquema de multiprogramación es, por un lado, el conjunto
de interrupciones que genera el desempeño de los procesos
y, por otro, los constantes recordatorios que hace el reloj del
procesador para indicar que se terminó la fracción
de tiempo
dedicada a cada proceso.
En el sistema Unix, las interrupciones
son causadas por lo que se conoce como eventos, entre
los cuales se consideran: la ejecución de una tarea de
entrada/salida; la terminación de los procesos
dependientes de otro; la terminación de la fracción
de tiempo
asignada a un proceso, y la recepción de una señal
desde otro proceso.
En un sistema de tiempo compartido
se divide el tiempo en un
determinado número de intervalos o fracciones y se asigna
cada una de ellas a un proceso. Además Unix toma en
consideración que hay procesos en espera de una
operación de E/S y que ya no pueden aprovechar su
fracción. Para asegurar una distribución adecuada del procesador entre
los procesos se calculan dinámicamente las prioridades de
estos últimos, con el fin de determinar cuál
será el proceso que se ejecutará cuando se suspenda
el proceso activo actual.
Manejo De
Memoria
Dependiendo de la computadora en la que
se ejecute, Unix utiliza dos técnicas de manejo de
memoria: swapping y memoria
virtual.
Lo estándar en Unix es un sistema
de intercambio de segmentos de un proceso entre memoria principal
y memoria secundaria, llamado swapping lo que significa que se
debe mover la imagen de un
proceso al disco si éste excede la capacidad de la memoria
principal, y copiar el proceso completo a memoria secundaria. Es
decir, durante su ejecución, los procesos son cambiados de
y hacia memoria secundaria conforme se
requiera.
Si un proceso necesita crecer, pide
más memoria al sistema operativo y se le da una nueva
sección, lo suficientemente grande para acomodarlo.
Entonces, se copia el contenido de la sección usada al
área nueva, se libera la sección antigua y se
actualizan las tablas de descriptores de procesos. Si no hay
suficiente memoria en el momento de la expansión, el
proceso se bloquea temporalmente y se le asigna espacio en
memoria secundaria. Se copia a disco y, posteriormente, cuando se
tiene el espacio adecuado – lo cual sucede normalmente en algunos
segundos – se devuelve a memoria principal.
Está claro que el proceso que se
encarga de los intercambios entre memoria y disco (llamado
swapper) debe ser especial y jamás podrá
perder su posición privilegiada en la memoria central. El
Kernel se encarga de que nadie intente siquiera interrumpir este
proceso, del cual dependen todos los demás. Este es el
proceso 0 mencionado antes. Cuando se decide traer a la memoria
principal un proceso en estado de
"listo para ejecutar", se le asigna memoria y se copian
allí sus segmentos. Entonces, el proceso cargado compite
por el procesador con todos los demás procesos cargados.
Si no hay suficiente memoria, el proceso de intercambio examine
la tabla de procesos para determinar cuál puede ser
interrumpido y llevado al disco.
Hay una pregunta que surge entonces es
¿cuál de los posibles procesos que están
cargados será desactivado y cambiado a memoria secundaria?
Los procesos que se eligen primero son aquellos que están
esperando operaciones
lentas (E/S), o que llevan cierto tiempo sin haberse movido al
disco. La idea es tratar de repartir en forma equitativa las
oportunidades de ejecución entre todos los procesos,
tomando en cuenta sus historias recientes y sus patrones de
ejecución.
Otra pregunta es ¿cuál de
todos los procesos que están en el disco será
traído a memoria principal?. La decisión se toma
con base en el tiempo de residencia en memoria secundaria. El
proceso más antiguo es el que se llama primero, con una
pequeña penalización para los
grandes.
Cuando Unix opera en máquinas
más grandes, suele disponer de manejo de memoria de
paginación por demanda. En
algunos sistemas el tamaño de la página en Unix es
de 512 bytes; en otros, de 1024. Para reemplazo se usa un
algoritmo que
mantiene en memoria las páginas empleadas más
recientemente.
Un sistema de paginación por
demanda ofrece
muchas ventajas en cuanto a flexibilidad y agilidad en la
atención concurrente de múltiples procesos y
proporciona, además, memoria
virtual, es decir, la capacidad de trabajar con procesos
mayores que el de la memoria central. Estos esquemas son bastante
complejos y requieren del apoyo de hardware
especializado.
Manejo de entradas y
salidas
El sistema de entrada/salida se divide en
dos sistemas complementarios: el estructurado por bloques y el
estructurado por caracteres. El primero se usa para manejar
cintas y discos magnéticos, y emplea bloques de
tamaño fijo (512 o 1024 bytes) para leer o escribir. El
segundo se utiliza para
atender a las terminales, líneas
de comunicación e impresoras, y
funciona byte por byte.
En general, el sistema Unix emplea
programas especiales (escritos en C) conocidos como manejadores
(drivers) para atender a cada familia de
dispositivos de E/S. Los procesos se comunican con los
dispositivos mediante llamadas a su manejador. Además,
desde el punto de vista de los procesos, los manejadores aparecen
como si fueran archivos en los que se lee o escribe; con esto se
logra gran homogeneidad y elegancia en el diseño.
Cada dispositivo se estructura
internamente mediante descriptores llamados número mayor,
número menor y clase (de bloque o de caracteres). Para
cada clase hay un conjunto de entradas, en una tabla, que aporta
a los manejadores de los dispositivos. El número mayor se
usa para asignar manejador, correspondiente a una familia de
dispositivos; el menor pasa al manejador como un argumento, y
éste lo emplea para tener acceso a uno de varios
dispositivos físicos semejantes.
Las rutinas que el sistema emplea para
ejecutar operaciones de
E/S están diseñadas para eliminar las diferencias
entre los dispositivos y los tipos de acceso. No existe
distinción entre acceso aleatorio y secuencial, ni hay un
tamaño de registro
lógico impuesto por el
sistema. El tamaño de un archivo ordinario está
determinado por el número de bytes escritos en él;
no es necesario predeterminar el tamaño de un
archivo.
El sistema mantiene una lista de
áreas de almacenamiento
temporal (buffers), asignadas a los dispositivos de bloques. El
Kernel usa estos buffers con el objeto de reducir el
tráfico de E/S. Cuando un programa solicita una
transferencia, se busca primero en los buffers internos para ver
si el bloque que se requiere ya se encuentra en la memoria
principal (como resultado de una operación de lectura
anterior). Si es así, entonces no será necesario
realizar la operación física de entrada o
salida.
Existe todo un mecanismo de
manipulación interna de buffers (y otro de manejo de
listas de bytes), necesario para controlar el flujo de datos
entre los dispositivos de bloques (y de caracteres) y los
programas que los requieren.
Por último, y debido a que los
manejadores de los dispositivos son programas escritos en
lenguaje C, es
relativamente fácil reconfigurar el sistema para ampliar o
eliminar dispositivos de E/S en la computadora, así como
para incluir tipos nuevos.
Lenguaje de control del sistema
operativo
Entre los rasgos distintivos de Unix
está el lenguaje de
control que emplea, llamado Shell. Es importante analizar dos
funciones
más de Shell, llamadas redireccionamiento e
Interconexión.
Asociado con cada proceso hay un conjunto
de descriptores de archivo numerados 0, I y 2, que se
utilizan para todas las transacciones entre los procesos y el
sistema operativo. El descriptor de archivo 0 se conoce
como la entrada estándar; el descriptor de archivo
1, como la salida estándar, y el descriptor
2, como el error estándar. En general, todos
están asociados con la terminal de vídeo, pero,
debido a que inicialmente son establecidos por Shell, es posible
reasignarlos.
Una parte de la orden que comience con el
símbolo ? se considera como el nombre del archivo
que será abierto por Shell y que se asociará con la
entrada estándar; en su ausencia, la entrada
estándar se asigna a la terminal. En forma similar, un
archivo cuyo nombre está precedido por el símbolo
> recibe la salida estándar de las operaciones.
Cuando Shell interpreta la
orden
califica < examen >
resulta
llama a ejecución al programa
califica (que ya debe estar compilado y listo para ejecutar) y
detecta la existencia de un archivo que toma el lugar de la
entrada estándar y de otro que reemplaza a la salida
estándar. Después, pasa como datos de lectura los
contenidos del archivo examen recién abierto (que debe
existir previamente) al programa ejecutable. Conforme el programa
produce datos como salida, éstos se guardan en el archivo
resulta que Shell crea en ese momento.
En la teoría
de lenguajes formales desempeñan un importante papel las
gramáticas llamadas de tipo 3 (también conocidas
como regulares), que tienen múltiples aplicaciones en el
manejo de lenguajes. Existen unas construcciones gramaticales
conocidas como expresiones regulares, con las que se puede hacer
referencia a un conjunto ilimitado de nombres con estructura
lexicográfica similar; esto lo aprovecha Shell para dar al
usuario facilidades expresivas adicionales en el manejo de los
nombres de los archivos. Así, por ejemplo, el nombre
carta * se refiere a todos los archivos que comiencen con
el prefijo carta* y que sean seguidos por cualquier
subcadena, incluyendo la cadena vacía; por ello, si se
incluye el nombre carta* en alguna orden, Shell la
aplicará a los archivos carta, carta1,
carta2 y cualquier otro que cumpla con esa especificación
abreviada. En general, en lugares donde se emplea un nombre o una
trayectoria, Shell permite utilizar una expresión regular
que sirve como abreviatura para toda una familia de ellos,
y automáticamente repite el pedido de atención para
los componentes. Existen además otros caracteres
especiales que Shell reconoce y emplea para el manejo de
expresiones regulares, lo que proporciona al lenguaje de
control de Unix mayor potencia y
capacidad expresiva.
En Unix existe también la
posibilidad de ejecutar programas sin tener que atenderlos en
forma interactiva, sino simulando paralelismo (es decir, atender
de manera concurrente varios procesos de un mismo usuario). Esto
se logra agregando el símbolo & al final de la
línea en la que se escribe la orden de ejecución.
Como resultado, Shell no espera que el proceso "hijo'' termine de
ejecutar (como haría normalmente), sino que regresa a
atender al usuario inmediatamente después de haber creado
el proceso asincrónico, simulando en esta forma el
procesamiento por lotes ( batch ) Para cada uno de estos procesos
Shell proporciona, además, el número de
identificación, por lo que si fuera necesario el usuario
podría cancelarlo posteriormente, o averiguar el avance de
la ejecución.
La comunicación interna entre
procesos (es decir, el envío de mensajes con los que los
diversos procesos se sincronizan y coordinan) ocurre mediante el
mecanismo de interconexiones (pipes) ya mencionado, que
conecta la salida estándar de un programa a la entrada
estándar de otro, como si fuera un conducto con dos
extremos, cada uno de los cuales está conectado a su vez a
un proceso distinto. Desde Shell puede emplearse este mecanismo
con el símbolo | en la línea donde se escribe la
orden de ejecución.
Así en el
ejemplo:
(califica < tarea | sorte >
lista) &
se emplean las características de
interconexión, redireccionamiento y asincronía de
procesos para lograr resultados difíciles de obtener en
otros sistemas
operativos. Aquí se pide que, en forma
asincrónica (es decir, dejando que la terminal siga
disponible para atender otras tareas del mismo usuario), se
ejecute el programa califica para que lea los datos que requiere
del archivo tareas; al terminar, se conectará con el
proceso sort (es decir, pasará los resultados intermedios)
para que continúe el procesamiento y se arreglen los
resultados en orden alfabético; al final de todo esto, los
resultados quedarán en el archivo lista.
Con esta otra orden, por ejemplo, se
busca obtener todos los renglones que contengan las palabras
"contrato" o
"empleado" en los archivos en disco cuyos nombres comiencen con
la letra "E" (lo cual se denota mediante una expresión
regular). Para lograrlo, se hace uso de una función
llamada egrep, especial para el manejo de patrones y
combinaciones de expresiones regulares dentro de los
archivos:
egrep-n 'contrato'
'empleado' E *
Los resultados aparecen
así:
Emple1: 5: en caso de que un empleado
decide hacer uso de la facilidad,
Emple1:7: y el contrato
así lo considere las obligaciones
de la
Emple2:9: Cláusula II: El
contrato
colectivo de trabajo
Emple2:15: Fracción llI: El
empleado tendrá derecho, de acuerdo con
lo
El tercer renglón, por ejemplo,
muestra el
noveno renglón del archivo Emple2, que contiene una de las
palabras buscadas.
Como Unix fue diseñado para servir
de entorno en las labores de diseño
y producción de programas, ofrece –
además de su filosofía misma – un rico conjunto de
herramientas
para la creación de sistemas complejos, entre las que
destaca el subsistema make. Este último ofrece una especie
de lenguaje muy sencillo, con el cual el programador describe las
relaciones estructurales entre los módulos que configuran
un sistema completo, para que de ahí en adelante make se
encargue de mantener el sistema siempre al día. Es decir,
si se modifica algún módulo, se reemplaza o se
añade otro, las compilaciones individuales, así
como las cargas y ligas a que haya lugar, serán realizadas
en forma automática, por esta herramienta. Con una sola
orden, entonces, es posible efectuar decenas de compilaciones y
ligas predefinidas entre módulos, y asegurarse de que en
todo momento se tiene la última versión de un
sistema, ya que también se lleva cuenta automática
de las fechas de creación, modificación y
compilación de los diversos módulos. De esta
manera, se convierte en una herramienta casi indispensable al
desarrollar aplicaciones que requieren decenas de programas que
interactúan entre sí o que mantienen relaciones
jerárquicas.
Otras herramientas
interesantes son ar, diseñado para crear y mantener
bibliotecas de
programas (que serán luego utilizadas por otros programas
para efectuar las funciones ya definidas sin tener que duplicar
el código); awk, un lenguaje para reconocimiento de
patrones y expresiones regulares (es decir, generadas por una
gramática regular o de tipo 3), útil
para extraer información de archivos en forma selectiva;
lex, un generador de analizadores lexicográfico, y
yacc, un compilador de compiladores.
Estos dos últimos se emplean como herramientas
en la creación de compiladores y
procesadores de
lenguajes.
La lista completa de funciones,
órdenes de subsistemas que forman parte de las
utilerías del sistema operativo Unix es realmente grande,
e incluye más de un centenar, que se pueden agrupar en los
siguientes rubros:
- Compiladores de
compiladores. - Ejecución de
programas. - Facilidades de
comunicaciones. - Funciones para
control de status. - Funciones para
control de usuarios. - Funciones para
impresión. - Herramientas de
desarrollo
de programación. - Lenguaje C,
funciones y bibliotecas
asociados. - Macroprocesamiento.
- Manejo de
directorios y archivos. - Manejo de
gráficas. - Manejo de
información. - Manejo de
terminales. - Mantenimiento y
respaldos. - Otros lenguajes
algorítmicos integrados. - Preparación
de documentos.
INTERNETWORKING
Introducción
Uno de los factores más
importantes que ha producido que la tecnología de
redes se
incorpore definitivamente al tronco principal de procesamiento,
es la habilidad de conectar sistemas LAN y no
LAN entre
sí.
Esta habilidad deriva de la
aceptación de estándares de comunicación que
aceleró la conexión de estaciones de trabajo a la
red. La
interconectividad creó un nuevo paradigma en
el cual el poder de
cómputo pasa de ser centralizado a ser
distribuido.
Los equipos de interconexión,
(bridge, router,
gateway, switchs, entre otros), han facilitado este proceso al
conectar equipos, sistemas y/o redes no sólo de un
único proveedor, sino de múltiples proveedores
entre sí.
Este texto trata de
introducir en los fundamentos operativos de dichos
equipos.
Objetivos de la tecnología de
INTERNETWORKING
- Unión de redes entre
sí. - Superar limitaciones
físicas. - Para efectuar un cambio de
medio de transmisión. - Cuando se requiere un cambio de
topologia
física o
lógica. - Cuando se requiere aislar
tráfico. - Para integrar plataformas de
comunicación disímiles.
El modelo OSI como
referencia
Este modelo fue
desarrollado por la ISO,(International Standards Organization), en
1977 para elaborar estándares de comunicación para
la interoperabilidad multi proveedor.
OSI, (Open Systems Interconection),
define como los fabricantes pueden crear productos que
funcionen con los productos de
terceros sin la necesidad de controladores especiales o
equipamiento opcional.
El único problema para implantar
el modelo OSI fue
que muchas compañías ya habían desarrollado
métodos
para interconectar su hardware y software con otros sistemas.
Aunque los vendedores pidieron un soporte futuro para los
estándares OSI, sus propios
métodos
estaban a menudo tan atrincherados que el acercamiento hacia
OSI era lento o
inexistente.
Varias compañías de redes
expandieron sus propios estándares para ofrecer soporte a
otros sistemas, y relegaron los sistemas abiertos a un segundo
plano.
Sin embargo, los estándares
OSI ofrecen un
modo útil para comparar la interconexión de redes y
la interoperabilidad entre varios fabricantes.
En el modelo OSI, hay
varios niveles de protocolos en una
jerarquía de protocolos,
trabajando cada uno en diferentes niveles del hardware y el software.
En la siguiente tabla vemos un breve
resumen de este modelo:
Capa | Función de | REPET | BRDG | ROUT | GTWA | |
7 | Aplicación | Funciones y tópicos |
|
|
|
|
6 | Presentación | Transforma los datos en un formato |
|
|
|
|
5 | Sesión | Facilita las comunicaciones entre los solicitantes y Asiste a las capas superiores a |
|
|
|
|
4 | Transporte | Evita que las dificultades de la Organiza los mensajes en segmentos |
|
|
|
|
3 | Red | Transportan los datos a ubicaciones |
|
|
|
|
2 | Enlace de | Organizan los bits en frames, |
|
|
|
|
1 | Física | Coordinan la transmisión de |
|
|
|
|
Un protocolo es el
conjunto de reglas y estándares requeridos para que las
entidades se comuniquen o entiendan entre
sí.
La tabla anterior especifica la
coordinación de señales y la estructura de los
datos comunicados.
Los niveles más bajos de la
jerarquía de protocolos
definen las reglas que los vendedores pueden seguir para hacer
que sus equipos puedan interconectarse con los de otros
fabricantes. Los niveles más altos definen como interopera
el software.
Cuanto más subimos dentro de la
jerarquía, las comunicaciones
entre el software ejecutado en
diferentes sistemas se vuelven más
sofisticadas.
Cada nivel de la jerarquía de
protocolos
OSI, tiene una
función específica y definen un nivel de comunicaciones
entre sistemas.
Cuando se define un proceso de red, como
la petición de un archivo por un servidor, se
empieza en el punto desde el que el servidor hizo la
petición. Entonces, la petición va bajando a
través de la jerarquía y es convertida en cada
nivel para poder ser
enviada por la red. Cada nivel añade a los paquetes su
propia información de seguimiento.
Los niveles definen simplemente las
reglas que son las aplicaciones, los controladores de red y el
hardware de red
para comunicarse.
Del mismo modo, una jerarquía de
protocolos define reglas que los programadores usan para crear
aplicaciones conscientes de la red. En el fondo son reglas
básicas que definen las comunicaciones entre
tipos.
Descripción de dispositivos
utilizados en la interconexión
Hub
Un hub es un
dispositivo utilizado para concentrar y organizar el cableado en
una red de área local, existen de dos tipos:
Activos, y Pasivos.
Un hub pasivo es
aquel que simplemente permite la interconexión del
cableado en una forma ordenada. No requiere alimentación y no
procesa o regenera el tráfico que en el
ingresa.
Los más comúnmente
utilizados son los hub's activos, los
cuales requieren de alimentación y
contienen un circuito electrónico que puede filtrar,
amplificar y controlar el tráfico. Poseen también
funcionalidades adicionales, tales como el bridging , que
actúa separando el tráfico local del hub del
backbone,(tronco principal), de la red.
Estos dispositivos pueden ser
administrados y monitoreados en forma remota.
Los hub's son
utilizados en el diseño
e implementación de una red alambrica coherente y
fácilmente administrable.
En un diseño
típico los hub's son instalados en rack's o armarios
especiales a los que llega todo el cableado de un piso del
edificio de la empresa,
encontrándose uno, (o más), de estos armarios por
cada piso a interconectar. Estos cables se conectan a cada puerto
del hub; el cual a su vez lo hace al backbone de la red, que
corre de piso en piso interconectando cada
armario.
Esto divide a la red en agrupamientos
lógicos y físicos, lo que simplifica la
resolución de problemas y el
facilita el futuro crecimiento.
Repeater
A medida que las señales
eléctricas se transmiten por un cable, tienden a
degenerarse proporcionalmente a la longitud del cable. Este
fenómeno se conoce como
atenuación.
Un repeater, (repetidor), es un
dispositivo sencillo que se instala para amplificar la
señal del cable, de forma que se pueda extender la
longitud de la red.
El repetidor normalmente no modifica la
señal, excepto en que la amplifica para poder
retransmitirla por el segmento de cable extendido. Algunos
repetidores también filtran el ruido.
Características
- Regenera las señales de la red
para qué llegan más lejos. - Se utilizan sobre todo en los sistemas
de cableado lineales como Ethernet. - Los repetidores funcionan sobre el
nivel más bajo de la jerarquía de protocolos, el
físico. No utilizan los protocolos de niveles
superiores. - Los segmentos conectados deben
utilizar el mismo método
de acceso al medio de transmisión. - Repetidores se utilizan normalmente
dentro de un mismo edificio. - Los segmentos conectados con un
repetidor forman parte de la misma red, y tendrán la
misma dirección de red. - Cada nodo de un segmento de red tiene
su propia dirección. Los nodos de segmentos
extendidos no pueden tener las mismas direcciones que los nodos
de los segmentos existentes, debido a que se convierten en
partes del mismo segmento de red.
Bridge
Un bridge, (puente), añade un
nivel de inteligencia a
una conexión entre redes. Conecta dos segmentos de redes
iguales o distintos. Podemos ver un puente como un clasificador
de correo que mira las direcciones de los paquetes y los coloca
en la red adecuada.
Se puede crear un puente para dividir una
red amplia en dos o más pequeñas. Esto mejora el
rendimiento al reducir el tráfico, ya que los paquetes
para estaciones concretas no tienen que viajar por toda la
red.
También se usan para conectar
distintos tipos de
redes, como Ethernet y Token
Ring.
Los puentes trabajan en el nivel de
enlace de datos.
Con un puente podemos conectar
dispositivos que utilicen protocolos diferentes, pero el nivel de
enlace de datos no sabe nada sobre el mejor camino hacia un
cierto destino; no existe ninguna forma de enviar paquetes a un
segmento de red de modo que alcancen su destino de la forma
más rápida o eficiente, (Esa es la función
de un router), no
obstante los puentes ofrecen filtrado; éste evita que los
paquetes de un segmento de red local pasen por el puente y
lleguen a segmentos de red donde no sirven para
nada.
Esto ayuda a reducir el tráfico
entre redes e incrementar el rendimiento, sin filtrado los
paquetes son enviados a todos los puntos de la
red.
Un puente se instala por la siguientes
razones:
- Para extender una red existente cuando
se ha alcanzado su máxima
extensión. - Para eliminar los cuellos de botella
que se generan cuando hay demasiadas estaciones de trabajo
conectadas a un único segmento de la
red. - Para conectar entre sí
distintos tipos de
redes, como Token Ring y Ethernet.
Tipos de puentes
Puentes con
aprendizaje
Los puentes con aprendizaje, o
adaptativos, se "aprenden" las direcciones de las otras
estaciones de la red, por lo que no será necesario que el
instalador del puente o el responsable cree una tabla con estas
direcciones en el puente. Las estaciones de trabajo difunden
continuamente sus señales de identificación, y los
puentes pueden construir sus tablas a partir de estas
direcciones. En la actualidad, la mayor parte de los puentes del
mercado poseen
aprendizaje.
Puentes en
tándem
Cuando una conexión con un puente
es crítica, puede ser necesario crear puentes redundantes
tolerantes a fallos. Si una falla, el otro puede continuar con el
tráfico. Sin embargo cuando hay dos enlaces existe la
posibilidad de que el tráfico pase por uno y vuelva por el
otro de nuevo creándose un esquema circular del movimiento de
paquetes que continuaría sin fin.
Los puentes en tándem detectan y
rompen los bucles anulando ciertas conexiones.
Puentes con distribución de carga
El puente con distribución de carga es la forma
más eficiente de puente. Utiliza un algoritmo de
emparejamiento, pero también una conexión doble
para transferir los paquetes, mejorando de esta forma el
rendimiento global de la red.
Ventajas de los
bridges
- Simple instalación y
configuración. - Capacidad de auto aprendizaje.
- Maneja todos los
protocolos. - Utiliza optimización de
sendero. - Menores costos
totales.
Switch
Los switchs son otro tipo de dispositivo
utilizados para enlazar LAN's
separadas y proveer un filtrado de paquetes entre
ellas.
Un LAN switch es un
dispositivo con múltiples puertos, cada uno de los cuales
puede soportar una simple estación de trabajo o bien toda
una red Ethernet o Token
Ring.
Con una LAN diferente
conectada a cada uno de los puertos del switch, este
puede conmutar los paquetes entre ellas, como sea
necesario.
En efecto, actúa como un bridge
multi-puerto, los paquetes son filtrados por el switch
basándose en su dirección de destino.
Los switchs son utilizados para aumentar
la performance en las redes de las organizaciones,
segmentando redes grandes en varias más pequeñas.
Lo cuál disminuye la congestión a la vez que
continúa proveyendo la interconectividad
necesaria.
Los switchs aumentan la performance de
las redes ya que cada puerto posee un ancho de banda dedicado,
sin requerir de los usuarios el cambio alguno
de equipamiento, tales como NIC's, (Network
interface Card), Hubs, cableado o cualquier router o
bridge ya instalado.
Estos dispositivos pueden soportar
numerosas comunicaciones simultáneas.
Router
Los routers, (enrutadores), son
críticos para las redes de gran alcance que utilizan
enlaces de comunicaciones remotas. Mantienen el tráfico
fluyendo eficientemente sobre caminos predefinidos en una
interconexión de redes compleja.
Si se utilizan líneas alquiladas
de baja de velocidad, es
importante filtrar los paquetes que no deban entrar en la
línea. Además, las grandes redes que se extienden
por todo el mundo pueden contener muchas conexiones remotas
redundantes. En ese caso, resulta importante encontrar el mejor
camino entre el origen y el destino. Este es el objeto de los
routers.
Pueden inspeccionar la información
en el nivel de red para determinar la información de la
mejor ruta. Muchos productos de
encaminamiento, (routing), ofrecen soporte para varios métodos de
comunicaciones, como T1 y X.25.
Las siguientes son algunas razones para
utilizar routers en lugar de bridges:
- Ofrecen con filtrado de paquetes
avanzado. - Son necesarios cuando hay diversos
protocolos en una interconexión de redes, y los paquetes
de ciertos protocolos tienen que confinarse en una cierta
área. - Ofrecen un encaminamiento inteligente,
el cuál mejora el rendimiento. Un router
inteligente conoce la estructura de la red y puede encontrar
con facilidad el mejor camino para un
paquete.
Funcionamiento de los
routers
Un router examina
la información de encaminamiento de los paquetes y los
dirige al segmento de red adecuado. Un router procesa los
paquetes que van dirigidos a el, lo que incluye los paquetes
enviados a otros routers con los que esté
conectado.
Los enrutadores envian los paquetes por
la mejor ruta hacia su destino, mantienen tablas de redes locales
y routers adyacentes en la red.
Cuando uno de estos dispositivos recibe
un paquete, consulta estas tablas para ver si puede enviar
directamente el paquete a su destino. Si no es así,
determina la posición de otro enrutador que lo pueda
hacer.
Estos dispositivos pueden ser
específicos para un protocolo o bien
manejar diversos protocolos.
Los routers permiten dividir una red en
redes lógicas, siendo estas más sencillas de
manejar. Cada segmento de la red tiene su propio número de
red local, y cada estación de dicho segmento tiene su
propia dirección. Esta es la información
contenida en el nivel de red al que acceden los routers. La
segmentación de las redes permite evitar las "tormentas de
difusión". Estas ocurren cuando los nodos no se conectan
de forma adecuada y la red se satura con la difusión de
mensajes intentando localizar los destinos.
Los métodos de
filtrado y selección del mejor camino utilizados al
segmentar ayudan a reducir este efecto.
Protocolos | Redes |
IPX/SPX | SNA |
TCP/IP | X.25 |
SLIP | IS-IS |
PPP | SNAP |
Algunos protocolos como NetBios,
no permiten el encaminamiento; ya que no incluyen
información sobre la dirección de red en sus
paquetes. Sin embargo, los paquetes NetBios pueden ser
encapsulados en paquetes IPX o TCP/IP para su
transferencia en grandes redes.
Del mismo modo, los paquetes IPX pueden
encapsularse en paquetes TCP/IP para su
transferencia en segmentos de red TCP/IP.
La determinación de la mejor ruta
para un paquete se realiza en base a información
disponible en la tabla de ruteo, la topología de la red y
algoritmos de
ruteo.
De estos últimos podemos nombrar
los siguientes:
DISTANCE VECTOR,
(DVA).
Cada router le comunica a sus vecinos
informes del
resto de la red, a intervalos regulares.
LINK STATE,
(LSA).
Cada router le comunica al resto de la
red conexiones, sólo cuando hay cambios en las
mismas.
Conceptos
AppleTalk
Definiciones de
términos
Antes de empezar a configurar el software
de AppleTalk para NetWare debería conocer los siguientes
términos:
- AppleTalk es el conjunto de
protocolos Apple* Computer que permite al hardware y al
software interactuar en una interred AppleTalk e intercambiar
datos. - Una red AppleTalk es un
conjunto de computadores, impresoras y
otros dispositivos conectados y controlados de manera
individual con el hardware y el software AppleTalk utilizados
para enlazarlos. Todos los dispositivos de una red tienen
direcciones dentro del rango asignado para la
red. - Una interred AppleTalk es un
grupo de
redes AppleTalk conectadas mediante uno o más routers
AppleTalk. Los usuarios de una interred pueden compartir
información y dispositivos de red. - Un nodo AppleTalk es una
entidad direccionable de una red. Este término hace a
veces referencia a un dispositivo. Algunos ejemplos de nodos
podrían ser computadores Macintosh, impresoras y
servidores de archivos. - Un paquete AppleTalk es un
grupo de bits transmitidos como una unidad de
información. Estos bits incluyen datos y elementos de
control. Los elementos de control incluyen las direcciones del
origen y el destino del paquete y, en ocasiones, la
información del control de errores. - El stack AppleTalk es el
conjunto de protocolos AppleTalk utilizado para proporcionar
soporte a aplicaciones AppleTalk tales como los servidores de
impresión y de archivos. - Un router AppleTalk conecta
las redes AppleTalk de una interred para que todos los nodos de
cada red puedan acceder a los servicios y
a los nodos de cualquier red conectada. Recibe y reenvía
los paquetes AppleTalk de las redes a las que está
conectado directamente. - Una zona AppleTalk es un
grupo lógico de servicios,
tales como las colas de impresión, los servidores de
archivos y sistemas de calendario. Al asociar una zona con
determinados dispositivos, se habilita a los usuarios de
Macintosh para localizar más fácilmente los
servicios que necesitan. Por ejemplo, un usuario Macintosh que
necesite ubicar una impresora
utilizada para fines administrativos deberá mirar en la
zona de Administración. - AppleTalk Fase 2 es la
última versión de los protocolos AppleTalk. En
1989, Apple introdujo AppleTalk Fase 2 para proporcionar
soporte a las redes AppleTalk con miles de nodos, a varias
zonas AppleTalk de una red y a token ring. Aplica
técnicas de encaminamiento más eficaces que
mejoran el funcionamiento y utilizan una banda ancha
más pequeña. - Una red extendida AppleTalk
es una red AppleTalk que da soporte a extensiones de la Fase 2
como, por ejemplo, listas de zonas y rangos de red. (Esta
guía a menudo denomina una red AppleTalk extendida como
una "red extendida"). - Una red AppleTalk no
extendida es una red AppleTalk que no da soporte a
extensiones de la Fase 2, como listas de zonas y rangos de red.
(Esta guía a menudo denomina las redes AppleTalk no
extendidas como "redes no extendidas").
Protocolos
Los protocolos AppleTalk proporcionan la
conectividad y el encaminamiento a redes de NetWare. Dichos
protocolos funcionan de manera conjunta con el NetWare para
Macintosh para proporcionar las funciones del servicio de
archivos e impresión del servidor NetWare,
así como la
comunicación entre los nodos de la
red.
La siguiente figura representa los
protocolos AppleTalk estándares y las respectivas capas
ISO, tal y
como se describen en Inside AppleTalk, second edition
.
La siguiente tabla lista los protocolos
AppleTalk utilizados por AppleTalk para NetWare. También
describe la función de cada uno de los protocolos. Para
obtener información más detallada acerca de estos
protocolos, consulte Inside AppleTalk, segunda
edición .
Protocolo | Descripción |
AARP | Protocolo de resolución de |
ADSP | Protocolo de flujo de datos |
AEP | Protocolo de eco AppleTalk. AEP es |
AFP | Protocolo de control de archivos |
ASP | Protocolo de sesión |
ATP | Protocolo de transacción |
AURP | Protocolo de encaminamiento basado |
DDP | Protocolo de entrega de datagramas. |
LAP | Protocolo de acceso al enlace. LAP |
NBP | Protocolo de enlace de nombre. NBP proporciona a |
PAP | Protocolo de acceso a la impresora. PAP permite a los usuarios de |
RTMP | Protocolo de mantenimiento de la tabla de rutas. Los |
ZIP | Protocolo de información de zonas. ZIP |
Direccionamiento
Las direcciones identifican las
ubicaciones exactas de redes, nodos y servicios. En AppleTalk,
las direcciones de nodo consisten en una parte del número
de red y una parte del número del nodo (en el formato de
red#.) nodo#, donde un número de red es un
valor de dos
bytes (dieciséis bits) y un número de red, un
valor de un
byte (ocho bits) .
Cada nodo adquiere de manera dinámica un número de nodo de 8 bits
al conectarse a la red. Intentará utilizar de nuevo la
dirección y el número del nodo la próxima
vez que se conecte a la red. Si el nodo ve que su número
anterior ya se utiliza, seguirá intentando hasta encontrar
una dirección de nodo exclusiva.
La parte de la red de una
dirección AppleTalk puede ser una de las dos siguientes:
Fase 1 ó Fase 2.
El direccionamiento Fase 1 es el formato
de dirección utilizado por las redes AppleTalk originales,
es decir, por las redes no extendidas. AppleTalk Fase 2 introdujo
rangos en la programación de direcciones de redes,
incrementando significativamente el número de dispositivos
que podrían existir en una red. Las redes que proporcionan
soporte al direccionamiento Fase 2 se denominan redes
extendidas.
Encontrará más
información sobre direccionamientos en las siguientes
secciones:
- "Direccionamiento
para redes extendidas" - "Direccionamiento
para redes no extendidas" - "Protocolo de
enlace de nombre"
Direccionamiento para redes
extendidas
Una red que puede dar soporte a
direccionamientos de red de Fase 2 se considerará como una
red extendida. Las redes AppleTalk que dan soporte a
direccionamientos de red de Fase 2 incluyen EtherTalk* 2.0 y
TokenTalk*.
En una red de Fase 2 extendida como
EtherTalk 2.0, puede asignar a cada segmento de la red un rango
consecutivo de números de redes de 16 bits exclusivos,
como, por ejemplo, el rango 1 -10. Asimismo, puede asignar hasta
255 nombres a cada red extendida. Cada número de red puede
proporcionar soporte a hasta 253 nodos (los números de
nodo 0, 254 y 255 se reservan para AppleTalk). Cada nodo de una
red extendida utiliza una combinación completa de 24 bits
de número de red y de nodo como única
identificación. Esta programación aumenta el límite
teórico del número de nodos por red hasta un
número superior a 16 millones.
En redes extendidas, cada nodo adquiere
un número de inicio seleccionando en primer lugar un
número de red de un "rango de inicio" reservado (65.280 de
65.534) y luego encontrando un número de nodo no utilizado
en la red. Con estos números de inicio el nodo puede
comunicarse con el router y puede adquirir un número de
red válido de un rango configurado para la red. Igual que
en las redes no extendidas, el nodo utiliza la misma
dirección al volverse a conectar a la red después
de haberse desactivado, a menos que otro nodo ya tenga dicha
dirección.
Las redes extendidas requieren un
rango de red y una lista de zonas. A
continuación le ofrecemos información detallada
sobre rangos de red y listas de zonas:
Un rango de red es un rango consecutivo
de números de red válidos. El tamaño del
rango de la red que se asigna determinará el
número máximo de dispositivos AppleTalk de esa
red; por ejemplo, una red extendida con rango 1-10
podría dar soporte a hasta 10 x 253 ó 2.530
nodos. No existe ningún límite codificado por el
hardware para el tamaño de un rango de redes, no
obstante, para un funcionamiento óptimo, debería
especificar un rango que se adapte a sus necesidades. Un rango
ancho utiliza números de red. Si existen routers de Fase
1 en la interred se requiere un rango de uno (como
10-10).
NOTA: Una red no
extendida puede comunicarse con una red extendida a través
de un router AppleTalk. Para obtener más
información, consulte "Direccionamiento para redes no
extendidas".
Todos los routers AppleTalk conectados
a una red utilizan el mismo rango para esa red, y ninguna otra
red podrá utilizar ese rango o cualquier número
incluido en él.
- Una lista de zonas contiene hasta 255
nombres de zona; se configura una zona como la zona por
defecto. Todos los routers AppleTalk de una red deben
tener la misma lista de zonas.
Direccionamiento para redes no
extendidas
Algunas de las redes AppleTalk no dan
soporte ni tampoco pueden utilizar el direccionamiento de redes
de Fase 2. Estas redes incluyen LocalTalk, ARCNET* y EtherTalk
1.0.
En redes no extendidas, puede asignar a
cada red sólo un número de red de 16 bits (un
entero entre 1 y l 65.279) y sólo un nombre de zona. Se
identifica cada nodo AppleTalk mediante un número del nodo
de 8 bits. Esto limita el número total de nodos por red a
254. (El número máximo que puede representarse en
ocho bits es 255 y los números de nodo 0 y 255 se reservan
para AppleTalk.)
Un nodo en una red no extendida puede
comunicarse con un nodo de una red extendida siempre que las dos
redes estén conectadas por un router.
Protocolo de enlace de
nombre
Los nodos y las aplicaciones utilizan el
NBP para encontrar las direcciones de nodos y de servicios tales
como servidores de archivos e impresora. El
NBP asigna nombres de entidades de red a direcciones AppleTalk.
Como por lo general los usuarios consideran más sencillo
recordar nombres que direcciones numéricas, éste
les permite especificar nombres descriptivos o simbólicos
para las entidades a las que hacen referencia las aplicaciones
mediante direcciones numéricas.
La aplicación Selector constituye
un ejemplo de cómo AppleTalk utiliza el NBP. Los usuarios
o las aplicaciones crean una consulta NBP seleccionando una zona
y el tipo de dispositivo o servicio en el que están
interesados. Estos dos bloques de información constituyen
una consulta NBP que equivale a lo siguiente:
"Deseo que todos los dispositivos del
tipo seleccionado (por ejemplo, un servidor de
archivos, un servidor de correo o una impresora) en
la zona seleccionada (ubicación del servicio) me respondan
(ubicación del usuario) con sus respectivos
direccionamientos de red.
A continuación se enviará
la consulta a la zona adecuada. Todos los servicios o
dispositivos del tipo seleccionado de la zona seleccionada
contestarán con una respuesta NBP. Una respuesta NBP,
según el contenido de la consulta, incluye el nombre, tipo
y dirección de la red (dirección AppleTalk) del
servicio proporcionado por un nodo.De este modo, las aplicaciones
podrán comunicarse con el dispositivo basado en la
dirección, mientras que los usuarios sólo
tendrán que referirse al servicio por su nombre. La
respuesta NBP contiene información equivalente a lo
siguiente:
"Los nombres y tipos de servicios
disponibles en esta zona y dirección de la red
(ubicación del servicio) se devolverán a la
estación de petición (la ubicación del
usuario)".
Si se han configurado los filtros
mediante el router receptor, este router utilizará dichos
filtros para determinar el abandono o el reenvío de cada
una de las repuestas NBP.
Tipos de trama de
paquetes
La información gobernada mediante
protocolos se agrupa en una serie de bits que incluye elementos
de control y de datos denominada paquete.La
información del paquete se transmite como un todo dentro
de una trama de paquete. Un controlador LAN
adapta los diferentes tipos de trama de paquete utilizados por
cada tipo de red específica a un formato que el AppleTalk
pueda procesar. Si desea obtener más información
sobre tipos de trama de paquetes, consulte Inside AppleTalk,
second edition .
El AppleTalk para NetWare proporciona
soporte a los tipos de trama de paquetes LANde AppleTalk
siguientes:
- ARCNET (es el tipo de trama real
NOVELL_RX_NET) - Ethernet_SNAP
- Ethernet II
- FDDI_SNAP
- LocalTalk
- Token_Ring_SNAP
Autor:
Javier Perez Lindo