viernes, 3 de febrero de 2012


TIPOS DE SISTEMAS OPERATIVOS 
En esta sección se describirán las características que clasifican a los sistemas operativos, 
básicamente se cubrirán tres clasificaciones: sistemas operativos por su estructura 
(visión interna), sistemas operativos por los servicios que ofrecen y, finalmente, 
sistemas operativos por la forma en que ofrecen sus servicios (visión externa).  
Sistemas Operativos por su Estructura 
Según [Alcal92], 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 constituídos fundamentalmente por 
un solo programa compuesto de un conjunto de rutinas entrelazadas de tal forma que 
cada una puede llamar a cualquier otra (Ver Fig. 2). Las características fundamentales 
de este tipo de estructura son: 
• 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. 
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 (Ver Fig. 3). 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" (Ver Fig. 4).
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 (Ver Fig. 5). 
Sistemas Operativos por Servicios 
Esta clasificación es la más comúnmente usada y conocida desde el punto de vista del 
usuario final. Esta clasificación se comprende fácilmente con el cuadro sinóptico que a 
continuación se muestra en la Fig. 6.

Monousuarios 
Los sistemas operativos monousuarios son aquéllos que soportan a un usuario a la vez, 
sin importar el número de procesadores que tenga la computadora o el número de 
procesos o tareas que el usuario pueda ejecutar en un mismo instante de tiempo. Las 
computadoras personales típicamente se han clasificado en este renglón. 
Multiusuarios 
Los sistemas operativos multiusuarios son capaces de dar servicio a más de un usuario a 
la vez, ya sea por medio de varias terminales conectadas a la computadora o por medio 
de sesiones remotas en una red de comunicaciones. No importa el número de 
procesadores en la máquina ni el número de procesos que cada usuario puede ejecutar 
simultáneamente. 
Monotareas 
Los sistemas monotarea son aquellos que sólo permiten una tarea a la vez por usuario. 
Puede darse el caso de un sistema multiusuario y monotarea, en el cual se admiten 
varios usuarios al mismo tiempo pero cada uno de ellos puede estar haciendo solo una 
tarea a la vez. 
Multitareas 
Un sistema operativo multitarea es aquél que  le permite al usuario estar realizando 
varias labores al mismo tiempo. Por ejemplo, puede estar editando el código fuente de 
un programa durante su depuración mientras compila otro programa, a la vez que está 
recibiendo correo electrónico en un proceso en background. Es común encontrar en 
ellos interfaces gráficas orientadas al uso de menús y el ratón, lo cual permite un rápido 
intercambio entre las tareas para el usuario, mejorando su productividad. 
Uniproceso 
Un sistema operativo uniproceso es aquél  que es capaz de manejar solamente un 
procesador de la computadora, de manera que si la computadora tuviese más de uno le 
sería inútil. El ejemplo más típico de este tipo de sistemas es el DOS y MacOS. 
Multiproceso 
Un sistema operativo multiproceso se refiere al número de procesadores del sistema, 
que es más de uno y éste es capaz de usarlos todos para distribuir su carga de trabajo. 
Generalmente estos sistemas trabajan de dos formas: simétrica o asimétricamente. 
Cuando se trabaja de manera asimétrica, el sistema operativo selecciona a uno de los 
procesadores el cual jugará el papel de procesador maestro y servirá como pivote para 
distribuir la carga a los demás procesadores, que reciben el nombre de esclavos. Cuando 
se trabaja de manera simétrica, los procesos o partes de ellos (threads) son enviados 
indistintamente a cualesquiera de los procesadores disponibles, teniendo, teóricamente, 
una mejor distribución y equilibrio en la carga de trabajo bajo este esquema. Se dice que un thread es la parte activa en memoria y corriendo de un proceso, lo cual 
puede consistir de un área de memoria, un conjunto de registros con valores específicos, 
la pila y otros valores de contexto. Us aspecto importante a considerar en estos sistemas 
es la forma de crear aplicaciones para aprovechar los varios  procesadores. Existen 
aplicaciones que fueron hechas para correr en sistemas monoproceso que no toman 
ninguna ventaja a menos que el sistema operativo o el compilador detecte secciones de 
código paralelizable, los cuales son ejecutados al mismo tiempo en procesadores 
diferentes. Por otro lado, el programador puede modificar sus algoritmos y aprovechar 
por sí mismo esta facilidad, pero esta última opción las más de las veces es costosa en 
horas hombre y muy tediosa, obligando al programador a ocupar tanto o más tiempo a 
la paralelización que a elaborar el algoritmo inicial. 
Sistemas Operativos por la Forma de Ofrecer sus Servicios  
Esta clasificación también se refiere a una visión externa, que en este caso se refiere a la 
del usuario, el cómo accede a los servicios. Bajo esta clasificación se pueden detectar 
dos tipos principales: sistemas operativos de red y sistemas operativos distribuidos. 
Sistemas Operativos de Red 
Los sistemas operativos de red se definen  como aquellos que tiene la capacidad de 
interactuar con sistemas operativos en otras computadoras por medio de un medio de 
transmisión con el objeto de intercambiar información, transferir archivos, ejecutar 
comandos remotos y un sin fin de otras actividades. El punto crucial de estos sistemas 
es que el usuario debe saber la sintaxis de un conjunto de comandos o llamadas al 
sistema para ejecutar estas operaciones, además de la ubicación de los recursos que 
desee acceder. Por ejemplo, si un usuario en la computadora hidalgo necesita el archivo 
matriz.pas que se localiza en el directorio /software/codigo en la computadora morelos 
bajo el sistema operativo UNIX, dicho usuario podría copiarlo a través de la red con los 
comandos siguientes: hidalgo% hidalgo% rcp morelos:/software/codigo/matriz.pas . 
hidalgo% En este caso, el comando rcp  que significa "remote copy" trae el archivo 
indicado de la computadora morelos y lo coloca en el directorio donde se ejecutó el 
mencionado comando. Lo importante es hacer ver que el usuario puede acceder y 
compartir muchos recursos. 
Sistemas Operativos Distribuidos 
Los sistemas operativos distribuidos abarcan los servicios de los de red, logrando 
integrar recursos (impresoras, unidades de respaldo, memoria, procesos, unidades 
centrales de proceso) en una sola máquina virtual que el usuario accede en forma 
transparente. Es decir, ahora el usuario ya no necesita saber la ubicación de los recursos, 
sino que los conoce por nombre y simplemente los usa como si todos ellos fuesen 
locales a su lugar de trabajo habitual. Todo lo anterior es el marco teórico de lo que se 
desearía tener como sistema operativo distribuido, pero en la realidad no se ha 
conseguido crear uno del todo, por la complejidad que suponen: distribuir los procesos 
en las varias unidades de procesamiento, reintegrar sub-resultados, resolver problemas 
de concurrencia y paralelismo, recuperarse de fallas de algunos recursos distribuidos y 
consolidar la protección y seguridad entre los diferentes componentes del sistema y los 
usuarios. [Tan92]. Los avances tecnológicos en las redes de área local y la creación de 
microprocesadores de 32 y 64 bits lograron que computadoras mas o menos baratas tuvieran el suficiente poder en forma autónoma para desafiar en cierto grado a los 
mainframes, y a la vez se dio la posibilidad de intercomunicarlas, sugiriendo la 
oportunidad de partir procesos muy pesados en cálculo en unidades más pequeñas y 
distribuirlas en los varios microprocesadores para luego reunir  los sub-resultados, 
creando así una máquina virtual en la red  que exceda en poder a  un mainframe. El 
sistema integrador de los microprocesadores que hacer ver a las varias memorias, 
procesadores, y todos los demás recursos como una sola entidad en forma transparente 
se le llama sistema operativo distribuido. Las razones para crear  o adoptar sistemas 
distribuidos se dan por dos razones principales: por necesidad (debido a que los 
problemas a resolver son inherentemente  distribuidos) o porque se desea tener más 
fiabilidad y disponibilidad de recursos. En  el primer caso tenemos, por ejemplo, el 
control de los cajeros automáticos en diferentes estados de la república. Ahí no es 
posible ni eficiente mantener un control centralizado, es más, no existe capacidad de 
cómputo y de entrada/salida para dar servicio a los millones de operaciones por minuto. 
En el segundo caso, supóngase que se tienen en una gran empresa varios grupos de 
trabajo, cada uno necesita almacenar grandes cantidades de información en disco duro 
con una alta fiabilidad y disponibilidad. La solución puede ser que para cada grupo de 
trabajo se asigne una partición de disco duro en servidores diferentes, de manera que si 
uno de los servidores falla, no se deje dar el servicio a todos, sino sólo a unos cuantos y, 
más aún, se podría tener un sistema con discos en espejo (mirror ) a través de la red, de 
manera que si un servidor se cae, el servidor en espejo continúa trabajando y el usuario 
ni cuenta se da de estas fallas, es decir, obtiene acceso a recursos en forma transparente.




No hay comentarios:

Publicar un comentario