Los programas son escritos de tal manera que periódicamente inspeccionan con
el SO para ver si cualquier otro programa necesita a la CPU, si este es el caso, entonces
dejan el control del CPU al siguiente programa, a este método se le llama multitarea
cooperativa y es el método utilizado por el SO de las computadoras de Machintosh y
DOS corriendo Windows de Microsoft. El segundo método es el llamada multitarea con
asignación de prioridades. Con este esquema el SO mantiene una lista de procesos
(programas) que están corriendo. Cuando se inicia cada proceso en la lista el SO le
asigna una prioridad. En cualquier momen to el SO puede intervenir y modificar la
prioridad de un proceso organizando en forma efectiva la lista de prioridad, el SO
también mantiene el control de la cantidad de tiempo que utiliza con cualquier proceso
antes de ir al siguiente. Con multitarea de asignación de prioridades el SO puede
sustituir en cualquier momento el proceso que esta corriendo y reasignar el tiempo a una
tarea de mas prioridad. Unix OS-2 y Windows NT emplean este tipo de multitarea.
Multiusuario
Actualmente se producen versiones de Unix para PC tales como The Santa Cruz
Corporation Microport, Esix, IBM,y Sunsoft. Apple también produce una versión de
Unix para la Machintosh llamada: A/UX.Unix
Unix proporciona tres maneras de permitir a múltiples personas utilizar la misma PC al
mismo tiempo.
1. Mediante Módems.
2. Mediante conexión de terminales a través de puertos seriales
3. Mediante Redes.
Multiproceso
Es el más común y popular de todos los Sistemas Operativos para PC. La razón
de su continua popularidad se debe al aplastante volumen de software disponible y a la
base instalada de computadoras con procesador Intel.
Cuando Intel liberó el 80286, DOS se hizo tan popular y firme en el mercado
que DOS y las aplicaciones DOS representaron la mayoría del mercado de software
para PC. En aquel tiempo, la compatibilidad IBM, fue una necesidad para que los
productos tuvieran éxito, y la “compatibilidad IBM” significaba computadoras que
corrieran DOS tan bien como las computadoras IBM lo hacían.
OS/2
Después de la introducción del procesador Intel 80286, IBM y Microsoft
reconocieron la necesidad de tomar ventaja de las capacidades multitarea de esta CPU.
Se unieron para desarrollar el OS/2, un moderno SO multitarea para los
microprocesadores Intel.
UNIX
Unix es un SO multiusuario y multitarea, que corre en diferentes computadoras,
desde supercomputadoras, Mainframes, Minicomputadoras, computadoras personales y
estaciones de trabajo.
Es un sistema operativo que fue creado a principios de los setentas por los
científicos en los laboratorios Bell. Fue específicamente diseñado para proveer una
manera de manejar científica y especializadamente las aplicaciones computacionales.
Este SO se adapto a los sistemas de cómputo personales así que esta aceptación reciente
lo convierte en un sistema popular.
WINDOWS NT DE MICROSOFT
Windows NT, al igual que el OS/2 ver 2.0 y algunas versiones de Unix, es un SO
de 32 bits, que puede hacer completo uso de los procesadores de estas características.
Además de ser multitarea, está diseñado para tomar ventaja del multiproceso simétrico.
Solaris
Años 40 A finales de los años 40, con lo que podríamos llamar la aparición de la
primera generación de computadoras, se accedía directamente a la consola de la
computadora desde la cual se actuaba sobre una serie de micro interruptores que
permitían introducir directamente el programa en la memoria de la computadora (en
realidad al existir tan pocas computadoras todos podrían considerarse prototipos y cada
constructor lo hacía sin seguir ningún criterio predeterminado). Por aquel entonces no
existían los sistemas operativos, y los programadores debían interactuar con el hardware
del computador sin ayuda externa. Esto hacía que el tiempo de preparación para realizar
una tarea fuera considerable. Además para poder utilizar la computadora debía hacerse
por turnos. Para ello, en muchas instalaciones, se rellenaba un formulario de reserva en
el que se indicaba el tiempo que el programador necesitaba para realizar su trabajo. En
aquel entonces las computadoras eran máquinas muy costosas lo que hacía que
estuvieran muy solicitadas y que sólo pudieran utilizarse en periodos breves de tiempo.
Todo se hacia en lenguaje de máquina.
Procesamiento por lotes Como solución para optimizar, en una misma cinta o
conjunto de tarjetas, de forma que se ejecutaran uno a continuación de otro sin perder
apenas tiempo en la transición.
Tiempo compartido. En este punto tenemos un sistema que hace buen uso de la
electrónica disponible, pero adolece de falta de interactividad; para conseguirla debe
convertirse en un sistema multiusuario, en el cual existen varios usuarios con un
terminal en línea, utilizando el modo de operación de tiempo compartido. En estos
sistemas los programas de los distintos usuarios residen en memoria. Al realizar una
operación de E/S los programas ceden la CPU a otro programa, al igual que en la
multiprogramación. Pero, a diferencia de ésta, cuando un programa lleva cierto tiempo
ejecutándose el sistema operativo lo detiene para que se ejecute otra aplicación. Con
esto se consigue repartir la CPU por igual entre los programas de los distintos usuarios,
y los programas de los usuarios no se sienten demasiado lentos por el hecho de que los
recursos sean compartidos y aparentemente se ejecutan de manera concurrente.
MVS (Multiple Virtual Storage): Fue el sistema operativo más usado en los
modelos de mainframes -ordenadores grandes, potentes y caros usados principalmente
por grandes compañías para el procesamiento de grandes cantidades de datos-
System/370 y System/390 de IBM, desarrollado también por IBM y lanzado al mercado
por primera vez en 1974. Como características destacables, permitía la ejecución de
múltiples tareas, además de que introdujo el concepto de memoria virtual y finalmente
añadió la capacidad de que cada programa tuviera su propio espacio de
direccionamiento de memoria, de ahí su nombre.
CP/M (Control Program/Monitor): Desarrollado por Gary Kildall para el
microprocesador 8080/85 de Intel y el Zilog Z80, salió al mercado en 1976,
distribuyéndose en disquetes de ocho pulgadas. Fue el SO más usado en las
computadoras personales de esta década. Su éxito se debió a que era portátil,
permitiendo que diferentes programas interactuasen con el hardware de una manera
estandarizada. Estaba compuesto de dos subsistemas: CCP (Comand Control
Processor): Intérprete de comandos que permitía introducir los mandatos con sus
parámetros separados por espacios. Además, los traducía a instrucciones de alto nivel
destinadas a BDOS. BDOS (Basic Disk Operating System): Traductor de las
instrucciones en llamadas a la BIOS. El hecho de que, años después, IBM eligiera para
sus PCs a MS-DOS supuso su mayor fracaso, por lo que acabó desapareciendo.
Años 80 Con la creación de los circuitos LSI -integración a gran escala-, chips
que contenían miles de transistores en un centímetro cuadrado de silicio, empezó el
auge de los ordenadores personales. En éstos se dejó un poco de lado el rendimiento y
se buscó más que el sistema operativo fuera amigable, surgiendo menús, e interfaces
gráficas. Esto reducía la rapidez de las aplicaciones, pero se volvían más prácticos y
simples para los usuarios. En esta época, siguieron utilizándose lenguajes ya existentes,
como Smalltalk o C, y nacieron otros nuevos, de los cuales se podrían destacar: C++ y
Eiffel dentro del paradigma de la orientación a objetos, y Haskell y Miranda en el
campo de la programación declarativa. Un avance importante que se estableció a
mediados de la década de 1980 fue el desarrollo de redes de computadoras personales
que corrían sistemas operativos en red y sistemas operativos distribuidos. En esta
escena, dos sistemas operativos eran los mayoritarios: MS-DOS, escrito por Microsoft
para IBM PC y otras computadoras que utilizaban la CPU Intel 8088 y sus sucesores, y
UNIX, que dominaba en los ordenadores personales que hacían uso del Motorola
68000.
Microsoft Windows En 1985 se crea este sistema operativo pero hasta la salida
de windows 95 no se le puede considerar un sistema operativo, solo era una interfaz
gráfica del MS-DOS. Hoy en día es el sistema operativo más difundido en el ámbito
domestico aunque también hay versiones para servidores y Microsoft ha diseñado
algunas versiones para superordenadores sin mucho éxito.
1.4. CLASIFICACIÓN DE LOS SISTEMAS OPERATIVOS.
Los sistemas monousuarios son aquellos que nada más puede atender a un solo
usuario, gracias a las limitaciones creadas por el hardware, los programas o el tipo de
aplicación que se este ejecutando.
Estos tipos de sistemas son muy simples, porque todos los dispositivos de
entrada, salida y control dependen de la tarea que se esta utilizando, esto quiere decir,
que las instrucciones que se dan, son procesadas de inmediato; ya que existe un solo
usuario. Y están orientados principalmente por los microcomputadores.
Los sistemas operativos por lotes (batch), en los que los programas eran tratados
por grupos (lote) en ves de individualmente. La función de estos sistemas operativos
consistía en cargar en memoria un programa de la cinta y ejecutarlo. Al final este, se
realizaba el salto a una dirección de memoria desde donde reasumía el control del
sistema operativo que cargaba el siguiente programa y lo ejecutaba. De esta manera el
tiempo entre un trabajo y el otro disminuía considerablemente.
Tiempo Real.
Tiempo Compartido.
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 esta estructurado el sistema operativo.
Veremos brevemente algunas estructuras de diseños de sistemas operativos.
Estructura modular.
También llamados sistemas monolíticos. Este tipo de organización es con mucho la mas
común; bien podría recibir el subtitulo 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 ultimo 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 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 interprete 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.
Estructura por anillos concéntricos (capas).
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 tenia 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 mas avanzada del concepto de capas se presento 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 si en un solo programa objeto, en
MULTICS, el mecanismo de anillos estaba mas presente durante el tiempo de ejecución
y era reforzado por el hardware. La ventaja del mecanismo de anillos es su facilidad de
extensión para estructurar subsistemas del usuario.
5 El operador
3 Control de entrada/salida
2 Comunicación operador-proceso
Cambio de contexto
Cambio a modo usuario
Salto a la dirección de memoria que corresponda al programa de usuario para
continuar su ejecución.
Criterios de Despachador