Internamente los
sistemas operativos estructuralmente de se clasifican según como se hayan
organizado internamente en su diseño, por esto la clasificación más común de
los S.O. son:
Sistemas monolíticos:
En estos sistemas
operativos se escriben como un conjunto de procedimientos, cada uno de los
cuales puede llamar a cualquiera de los otros siempre que lo necesite. Cuando
se emplea esta técnica, cada procedimiento del sistema tiene una interfaz bien
definida en términos de parámetros y resultados, y cada una tiene la libertad
de llamar a cualquiera otra, si la última ofrece algún cálculo útil que la
primera necesite.
Para construir el programa objeto real del sistema operativo cuando se usa este método, se compilan todos los procedimientos individuales a archivos que contienen los procedimientos y después se combinan todos en un solo archivo objeto con el enlazador. En términos de ocultamiento de información, esencialmente no existe ninguno; todo procedimiento es visible para todos (al contrario de una estructura que contiene módulos o paquetes, en los cuales mucha información es local a un módulo y sólo pueden llamar puntos de registro designados oficialmente del exterior del módulo) Esta organización sugiere una estructura básica del sistema operativo: 1.- Un programa central que invoque el procedimiento de servicio solicitado (Shell o Kernel) 2.- Un conjunto de procedimientos de servicios que realice las llamadas al sistema. 3.- Un conjunto de procedimientos de uso general que ayude a los procedimientos de servicio
El sistema tenía 6 estratos, estos se muestran en la
siguiente tabla:
5
|
Operador de THE
|
4
|
Programas del
usuario
|
3
|
Administración de
Entrada/Salida
|
2
|
Comunicación
entre el operador y el proceso
|
1
|
Administración de
la memoria y el tambor magnético
|
0
|
Distribución del
procesador y multiprogramación
|
-
El estrato 0 trabajaba con la distribución del
procesador, cambiando entre procesos cuando ocurrían interrupciones o los
relojes expiraban. Sobre el estrato 0, el sistema constaba de procesos
secuenciales, cada uno de los cuales podía programarse sin tener que
preocuparse por el hecho de que múltiples procesos estuvieran corriendo en un
solo procesador. En otras palabras, el estarto 0 ofrecía la multiprogramación
básica de la CPU.
El estrato 1 realizaba el manejo de memoria. Este distribuía espacio para procesos
contenidos en la memoria central y en un tambor de 512K palabras que se usaba
para contener partes de procesos (páginas) para las cuales no había espacio en
la memoria central. Sobre el estrato 1, los procesos no tenía que preocuparse
de si estaban en la memoria o en el tambor; el software del estrato 1 se hacía
cargo de asegurar que las páginas se trajeran a la memoria siempre que se
necesitaran.
El estrato 2 manejaba la comunicación entre cada proceso y la consola de
operador.
El estrato 3 se hacía cargo de manejar los dispositivos de E/S y de separar la
información en flujo que entraba y salí de ellos. Sobre el estrato 3 cada
proceso podía trabajar con dispositivos de E/S abstractos con propiedades
agradables, en vez de dispositivos reales con muchas peculiaridades
Estructura modular. También llamados sistemas monolíticos. Este tipo de
organización es con mucho la más común; bien podría recibir el subtítulo de
"el gran embrollo". La estructura consiste en que no existe
estructura alguna.
El sistema operativo se escribe como una colección de procedimientos, cada uno
de los cuales puede llamar a los demás cada vez que así lo requiera. Cuando se
usa esta técnica, cada procedimiento del sistema tiene una interfaz bien
definida en términos de parámetros y resultados y cada uno de ellos es libre de
llamar a cualquier otro, si este último proporciona cierto cálculo útil para el
primero. Sin embargo incluso en este tipo de sistemas es posible tener al menos
algo de estructura.
Los servicios (llamadas al sistema) que proporciona el sistema operativo se
solicitan colocando los parámetros en lugares bien definidos, como en los
registros o en la pila, para después ejecutar una instrucción especial de
trampa de nombre "llamada al núcleo" o "llamada al supervisor".
Esta instrucción cambia la máquina del modo usuario al modo núcleo y transfiere
el control al sistema operativo, lo que se muestra en el evento (1) de la
figura 1.
El sistema operativo examina entonces los parámetros de la llamada, para determinar
cuál de ellas se desea realizar, como se muestra en el evento (2) de la figura
1. A continuación, el sistema operativo analiza una tabla que contiene en la
entrada k un apuntador al procedimiento que realiza la k-esima llamada al
sistema. Esta operación que se muestra en (3) de la figura 1, identifica el
procedimiento de servicio, al cual se llama. Por último, la llamada al sistema
termina y el control regresa al programa del usuario.
Figura 1. La forma en que debe hacerse una llamada al sistema: (1) el programa
del usuario es atraído hacia el núcleo. (2) el sistema operativo determina el
número del servicio solicitado. (3) el sistema operativo localiza y llama al
procedimiento correspondiente al servicio. (4) el control regresa al programa
del usuario.
Esta organización sugiere una organización básica del sistema operativo:
1.- un programa principal que llama al procedimiento del servicio solicitado.
2.- un conjunto de procedimientos de servicio que llevan a cabo las llamadas al
sistema.
3.- un conjunto de procedimientos utilitarios que ayudan al procedimiento de
servicio.
En este modelo, para cada llamada al sistema existe un procedimiento de
servicio que se encarga de él. Los procedimientos utilitarios hacen cosas
necesarias para varios procedimientos de servicio, por ejemplo buscar los datos
de los programas del usuario.
Estructura por microkernel
Las funciones centrales de un SO son controladas por el
núcleo (kernel) mientras que la interfaz del usuario es controlada por el
entorno (shell). Por ejemplo, la parte más importante del DOS es un programa
con el nombre "COMMAND.COM" Este programa tiene dos partes. El
kernel, que se mantiene en memoria en todo momento, contiene el código máquina
de bajo nivel para manejar la administración de hardware para otros programas
que necesitan estos servicios, y para la segunda parte del COMMAND.COM el
shell, el cual es el intérprete de comandos
Las funciones de bajo nivel del SO y las funciones de
interpretación de comandos están separadas, de tal forma que puedes mantener el
kernel DOS corriendo, pero utilizar una interfaz de usuario diferente. Esto es
exactamente lo que sucede cuando cargas Microsoft Windows, el cual toma el
lugar del shell, reemplazando la interfaz de línea de comandos con una interfaz
gráfica del usuario. Existen muchos "shells" diferentes en el
mercado, ejemplo: NDOS (Norton DOS), XTG, PCTOOLS, o inclusive el mismo SO
MS-DOS a partir de la versión 5.0 incluyó un Shell llamado DOS SHELL.
El sistema por "capas" consiste en organizar el sistema operativo
como una jerarquía de capas, cada una construida sobre la inmediata inferior.
El primer sistema construido de esta manera fue el sistema THE (Technische
Hogeschool Eindhoven), desarrollado en Holanda por E. W. Dijkstra (1968) y sus
estudiantes.
El sistema tenía 6 capas, como se muestra en la figura 3. La
capa 0 trabaja con la asignación del procesador y alterna entre los procesos
cuando ocurren las interrupciones o expiran los cronómetros. Sobre la capa 0,
el sistema consta de procesos secuénciales, cada uno de los cuales se podría
programar sin importar que varios procesos estuvieran ejecutándose en el mismo
procesador, la capa 0 proporcionaba la multiprogramación básica de la CPU.
La capa 1 realizaba la administración de la memoria. Asignaba
el espacio de memoria principal para los procesos y un recipiente de palabras
de 512K se utilizaba para almacenar partes de los procesos (páginas) para
las que no existía lugar en la memoria principal. Por encima de la capa 1, los
procesos no debían preocuparse si estaban en la memoria o en el recipiente; el
software de la capa 1 se encargaba de garantizar que las páginas llegaran a la
memoria cuando fueran necesarias.
La capa 2 se encargaba de la comunicación entre cada proceso
y la consola del operador. Por encima de esta capa, cada proceso tiene su
propia consola de operador.
La capa 3 controla los dispositivos de E/S y guarda en
almacenes (buffers) los flujos de información entre ellos. Por encima de la
capa 3, cada proceso puede trabajar con dispositivos exactos de E/S con
propiedades adecuadas, en vez de dispositivos reales con muchas
peculiaridades.
La capa 4 es donde estaban los programas del usuario, estos
no tenían que preocuparse por el proceso, memoria, consola o control de E/S.
El proceso operador del sistema se localizaba en la capa 5
Una generalización más avanzada del concepto de capas se presentó en el sistema
MULTICS. En lugar de capas, MULTICS estaba organizado como una serie de anillos
concéntricos, siendo los anillos interiores los privilegiados. Cuando un
procedimiento de un anillo exterior deseaba llamar a un procedimiento de un
anillo interior, debió hacer el equivalente a una llamada al sistema
Mientras que el esquema de capas de THE era en realidad un apoyo al diseño,
debido a que todas las partes del sistema estaban ligadas entre sí en un solo
programa objeto, en MULTICS, el mecanismo de anillos estaba más presente
durante el tiempo de ejecución y era reforzado por el hardware.
5
|
El operador
|
4
|
Programas del
usuario
|
3
|
Control de
entrada/salida
|
2
|
Comunicación
operador-proceso
|
1
|
Administración de
la memoria y del disco
|
0
|
Asignación del
procesador y multiprogramación
|
Figura 3. Estructura del sistema operativo THE.
Estructura cliente – servidor
Una tendencia de los sistemas operativos modernos es la de explotar la idea de
mover el código a capas superiores y eliminar la mayor parte posible del
sistema operativo para mantener un núcleo mínimo. El punto de vista usual es el
de implantar la mayoría de las funciones del sistema operativo en los procesos
del usuario. Para solicitar un servicio, como la lectura de un bloque de cierto
archivo, un proceso del usuario (denominado proceso cliente) envía la solicitud
a un proceso servidor, que realiza entonces el trabajo y regresa la respuesta.
En este modelo, que se muestra en la figura 4, lo único que hace el núcleo es
controlar la comunicación entre los clientes y los servidores. Al separar el
sistema operativo en partes, cada una de ellas controla una faceta del sistema,
como el servicio a archivos, servicios a procesos, servicio a terminales o
servicio a la memoria, cada parte es pequeña y controlable. Además como todos
los servidores se ejecutan como procesos en modo usuario y no en modo núcleo,
no tienen acceso directo al hardware. En consecuencia si hay un error en el
servidor de archivos, éste puede fallar, pero esto no afectará en general a
toda la máquina.
Otra de las ventajas del modelo cliente-servidor es su capacidad de adaptación
para su uso en los sistemas distribuidos.
Según, se deben observar dos tipos de requisitos cuando se construye un sistema
operativo, los cuales son:
Requisitos de usuario: Sistema fácil de usar y de aprender, seguro, rápido y
adecuado al uso al que se le quiere destinar.
Requisitos del software: Donde se engloban aspectos como el mantenimiento,
forma de operación, restricciones de uso, eficiencia, tolerancia frente a los
errores y flexibilidad.
A continuación se describen las distintas estructuras que presentan los
actuales sistemas operativos para satisfacer las necesidades que de ellos se
quieren obtener.
Estructura Monolítica.
Es la estructura de los primeros sistemas operativos constituidos
fundamentalmente por un solo programa compuesto de un conjunto de rutinas
entrelazadas de tal forma que cada una puede llamar a cualquier otra. Las
características fundamentales de este tipo de estructura son:
Generalmente están hechos a medida, por lo que son eficientes y rápidos en su
ejecución y gestión, pero por lo mismo carecen de flexibilidad para soportar
diferentes ambientes de trabajo o tipos de aplicaciones.
Estructura Jerárquica
A medida que fueron creciendo las necesidades de los usuarios y se perfeccionaron los sistemas, se hizo necesaria una mayor organización del software, del sistema operativo, donde una parte del sistema contenía subpartes y esto organizado en forma de niveles.
Se dividió el sistema operativo en pequeñas partes, de tal forma que cada una
de ellas estuviera perfectamente definida y con un claro interface con el resto
de elementos.
Se constituyó una estructura jerárquica o de niveles en los sistemas
operativos, el primero de los cuales fue denominado THE (Technische Hogeschool,
Eindhoven), de Dijkstra, que se utilizó con fines didácticos. Se puede pensar
también en estos sistemas como si fueran `multicapa'. Multics y Unix caen en
esa categoría.
En la estructura anterior se basan prácticamente la mayoría de los sistemas
operativos actuales. Otra forma de ver este tipo de sistema es la denominada de
anillos concéntricos o "rings".
En el sistema de anillos, cada uno tiene una apertura, conocida como puerta o
trampa (trap), por donde pueden entrar las llamadas de las capas inferiores. De
esta forma, las zonas más internas del sistema operativo o núcleo del sistema
estarán más protegidas de accesos indeseados desde las capas más externas. Las
capas más internas serán, por tanto, más privilegiadas que las externas.
Máquina Virtual Se trata de un tipo de sistemas
operativos que presentan una interface a cada proceso, mostrando una máquina
que parece idéntica a la máquina real subyacente. Estos sistemas operativos
separan dos conceptos que suelen estar unidos en el resto de sistemas: la
multiprogramación y la máquina extendida. El objetivo de los sistemas
operativos de máquina virtual es el de integrar distintos sistemas operativos
dando la sensación de ser varias máquinas diferentes.
El núcleo de estos sistemas operativos se denomina monitor virtual y tiene como
misión llevar a cabo la multiprogramación, presentando a los niveles superiores
tantas máquinas virtuales como se soliciten. Estas máquinas virtuales no son
máquinas extendidas, sino una réplica de la máquina real, de manera que en cada
una de ellas se pueda ejecutar un sistema operativo diferente, que será el que
ofrezca la máquina extendida al usuario.
Cliente-Servidor(Microkernel)
El tipo más reciente de sistemas operativos es el denominado
Cliente-servidor, que puede ser ejecutado en la mayoría de las computadoras, ya
sean grandes o pequeñas.
Sistemas
en estratos:
Estos sistemas operativos se organizan como una jerarquía de
estratos, cada uno construido arriba del que está debajo de él. El primer
sistema construido en esta forma fuel el sistema THE que se fabricó en
Technische Hogeschool Eindhoven de Holanda por E. W Dijkstra (1968) y sus
alumnos. El sistema THE era un sistema de lote para una computadora alemana, la
Electrológica X8, que tenía 32K de palabras de 27 bits (los bits eran costosos
en aquellos días)
El estrato 4 era donde se encontraban los programas de los
usuarios. No tenían que preocuparse por el manejo de los procesos, memoria,
consola o E/S. El proceso operador del sistema se localizaba en el estrato 5.
En esta unidad examinaremos cuatro estructuras distintas que
ya han sido probadas, con el fin de tener una idea más extensa de cómo está
estructurado el sistema operativo. Veremos brevemente algunas estructuras de
diseños de sistemas operativos.
Estructura por anillos concéntricos (capas).
La ventaja del mecanismo de anillos es su facilidad de
extensión para estructurar subsistemas del usuario.
Si un cliente se comunica con un servidor mediante mensajes,
el cliente no necesita saber si el mensaje se maneja en forma local, en su
máquina, o si se envía por medio de una red a un servidor en una máquina
remota. En lo que respecta al cliente, lo mismo ocurre en ambos casos: se envió
una solicitud y se recibió una respuesta.
Sistemas Operativos por su Estructura (Visión Interna).
· Construcción del programa final a base de módulos
compilados separadamente que se unen a través del ligador.
· Buena definición de parámetros de enlace entre las
distintas rutinas existentes, que puede provocar mucho acoplamiento.
· Carecen de protecciones y privilegios al entrar a
rutinas que manejan diferentes aspectos de los recursos de la computadora, como
memoria, disco, etc.
No hay comentarios:
Publicar un comentario