1.2 Historia y Evolución de los S.O.
HISTORIA
Es
útil considerar el hecho de cómo se han desarrollado
los sistemas operativos con el tiempo. Existen diversos enfoques o
versiones de cómo han ido evolucionando los Sistemas Operativos. En esta sección
se presentan 3 diferentes descripciones de la evolución de los sistemas
operativos.
PRIMERA
VERSIÓN:
Procesamiento
serial
Con las primeras computadoras, desde
los últimos años cuarentas hasta la mitad de los años cincuentas, el
programador interactuaba de manera directa con el hardware de la computadora; no
había sistema operativo. Estas máquinas eran operadas desde una consola que
tenía luces de exhibición, interruptores para activar y desactivar, alguna
forma de dispositivo de entrada y una impresora. Los programas en código de máquina
se cargaban mediante el dispositivo de entrada (por ejemplo, un lector de
tarjetas). Si un error detenía el programa, las luces indicaban la condición
de error. El programador podía proceder a examinar los registros y la memoria
principal para determinar la causa del error. Si el programa proseguía hasta su
terminación normal, la salida aparecía en la impresora.
Estos primeros sistemas presentaban
dos problemas principales:
|
Planificación:
la mayoría de las instalaciones usaba una solicitud para reservar el
tiempo de máquina. De manera típica, un usuario podía solicitar un
bloque de tiempo en múltiplos de media hora o algo así. Otro usuario podía
solicitar una hora y finalizar en 45 minutos; esto daba como resultado que
se desperdiciara el tiempo desocupado de la computadora. Por otra parte,
el usuario podía tener problemas al no terminar en el tiempo asignado y
ser obligado a detenerse antes de resolver el problema. |
|
|
Tiempo
de puesta a punto: un solo programa, llamado un trabajo,
podía implicar la necesidad de cargar el compilador y el programa de
lenguaje de alto nivel (programa fuente) en la memoria, guardar el
programa compilado (programa objeto) y después cargar y ligar juntos el
programa objeto y las funciones comunes. Cada uno de estos pasos podía
implicar montar o desmontar cintas o posicionar paquetes de tarjetas. Si
ocurría un error, de manera típica, el desafortunado usuario tenía que
regresar al principio de la secuencia de instalación. Por tanto, se
gastaba mucho tiempo sólo en poner a punto el programa para correr. |
Este
modo de operación puede llamarse procesamiento serial, reflejado en el
hecho de que los usuarios tenían derecho a la computadora en serie. Con el
tiempo, se desarrollaron varias herramientas de software del sistema para
intentar hacer mas eficiente el procesamiento serial. Éstas incluían
bibliotecas de funciones comunes, ligadores, cargadores, depuradores así como
rutinas de manejo de E/S que estaban disponibles como software común para todos
los usuarios.
Sistemas
por lotes simples
Las primeras máquinas eran muy caras, y por lo tanto, era importante
maximizar el uso de máquina. El tiempo desperdiciado por causa del tiempo de
planeación e instalación no era aceptable.
Para mejorar el uso, se desarrolló el concepto de un sistema operativo
por lotes. El primer sistema operativo por lotes (esto es, el primer sistema
operativo de cualquier clase) fue desarrollado en la mitad de los años
cincuentas por General Motors para usarlo en la IBM 701. El concepto se refinó
después y lo implementaron en la IBM 794 varios clientes IBM. Al principio de
la década de los setentas, varios vendedores habían desarrollado sistemas
operativos por lotes para sus sistemas computacionales. IBSYS, el sistema
operativo IBM para las computadoras 7090/7094, es notable en particular debido a
su amplia influencia sobre otros sistemas.
La idea central detrás del esquema de procesamiento por lotes simple fue
el uso de una pieza de software conocida como monitor.
Con el uso de este tipo de sistema operativo, el usuario ya no tenía acceso
directo a la máquina. Mas bien, el usuario propone el trabajo en tarjetas o
cinta a un operador de computadora, quien hace lotes de los trabajos
reunidos de manera secuencial y coloca el lote completo en un dispositivo de
entrada para que lo use el monitor. Cada programa esta construido para regresar
al monitor cuando completa el procesamiento, en este punto el monitor carga el
siguiente programa de manera automática.
El monitor o sistema operativo por lotes, es solo un programa de
computadora. Se basa en la
capacidad del procesador para buscar instrucciones desde varias partes de la
memoria principal con el fin de obtener y entregar el control.
Con un sistema operativo por lotes, el tiempo de máquina
se alterna entre la ejecución de programas usuario y la ejecución del monitor.
Se han sacrificado dos cosas: se le ha otorgado cierta memoria principal al
monitor y éste consume algún tiempo de máquina. Estas dos son formas de
sobrecarga. Aun con esta sobrecarga, el sistema por lotes simple mejora el uso
de la computadora.
Sistemas
por lotes multiprogramados
Aun con la secuenciación
de trabajo automático proporcionado por un sistema operativo por lotes simples,
con frecuencia el procesador está desocupado.
Su desventaja es que los dispositivos de E/S son lentos comparados con el
procesador.
La siguiente figura muestra esta situación: el procesador gasta cierto tiempo
ejecutando hasta que alcanza una instrucción de E/S. Después debe esperar
hasta que la instrucción de E/S concluya antes de proseguir.

Este caso no es necesario. Ya que debe existir suficiente memoria para contener el sistema operativo (monitor residente) y un programa de usuario. Suponiendo que existe espacio para el sistema operativo y dos programas de usuario. Ahora, cuando un trabajo necesita esperar una E/S, el procesador puede continuar a otro trabajo, el cual es probable que no espera una E/S. Como se muestra en la siguiente figura:

Además
este proceso, se podría ampliar también la memoria para contener tres, cuatro
o más programas y conmutar entre todos ellos. El proceso se le conoce como multiprogramación
o multitarea.
Ilustrado en la siguiente figura.

Como
un sistema por lotes simple, un sistema por lotes de multiprogramación es un
programa que debe basarse en ciertas características del hardware de la
computadora. La característica adicional más notable que se usa para la
multiprogramación es el hardware que soporta interrupciones de E/S y DMA.
Con
E/S manejada por interrupción o DMA, el procesador puede emitir un comando de
E/S para un trabajo y seguir con la ejecución de otro trabajo mientras el
dispositivo controlador realiza la E/S. Una vez que la operación de E/S se
completa, el procesador se interrumpe y se pasa el control a un programa
manejador de interrupción en el sistema operativo. Después, el sistema
operativo pasará el control a otro trabajo.
Los
sistemas operativos de multiprogramación son muy sofisticados comparados con
los sistemas de uniprogramación o de programa único. Para tener varios
trabajos preparados para correr, deben mantenerse en la memoria principal y
requieren cierta forma de administración de memoria. Además, si varios
trabajos están preparados para correr, el procesador debe decidir cuál correr,
lo cual requiere cierto algoritmo para planificación.
Sistemas
de tiempo compartido
Con el uso de la multiprogramación, el procesamiento por lotes puede ser
bastante eficiente. No obstante, para muchos trabajos, es deseable proporcionar
un modo en el que el usuario interaccione en forma directa con la computadora.
En
realidad, para algunos trabajos, como el procesamiento de transacciones, es
esencial un modo interactivo.
Hoy, el
requisito para una facilidad de computación interactiva puede cumplirse y con
frecuencia lo hace, al usar una microcomputadora dedicada. Esa opción no estaba
disponible en los años sesentas, cuando la mayoría de las computadoras eran
grandes y costosas. Para cambiar esto se descubrió el tiempo compartido.
De
la misma manera que la multiprogramación permite al procesador manejar trabajos
por lotes múltiples a la vez, la multiprogramación puede usarse para manejar
trabajos interactivos múltiples. En el último caso, la técnica se denomina
tiempo compartido, reflejando el hecho que múltiples usuarios comparten el
tiempo del procesador. La técnica básica para un sistema de tiempo compartido
es tener múltiples usuarios que usan al mismo tiempo el sistema por medio de
las terminales, con el sistema operativo intercalando la ejecución de cada
programa usuario en una ráfaga corta o quantum de computación. Por lo tanto,
si existen n usuarios que, de manera activa, solicitan servicio a la vez,
cada usuario vera en promedio solo 1/n de la velocidad efectiva de
computadora, sin contar la sobrecarga del sistema operativo. No obstante, como
las reacciones humanas son lentas, el tiempo de respuesta en un sistema diseñado
en forma apropiada, deberá ser comparable al de una computadora dedicada.
Tanto
la multiprogramación por lotes como el tiempo compartido usan la
multiprogramación.
Las diferencias
se listan a continuación :

Uno
de los primeros sistemas operativos de tiempo compartido desarrollados fue el
Sistema de Tiempo Compartido Compatible (compatible time-sharing system o CTSS),
desarrollado en el Instituto Tecnológico de Massachussets por un grupo conocido
como proyecto MAC (machine-aided cognition, múltiple-access computers o
Conocimiento Ayudado por Máquina, Computadoras de Acceso Múltiple). El sistema
se desarrolló primero para la IBM 709 en 1961 y después se transfirió a una
IBM 7094.
Comparado
con sistemas posteriores, el CTSS era bastante primitivo, pero funcionaba. Era
muy simple, lo cual minimizaba el tamaño del monitor. Como siempre se cargaba
un trabajo en las mismas posiciones en la memoria, no había necesidad de técnicas
de relocalización durante la carga. La técnica de escribir sólo lo que era
necesario minimizaba la actividad del disco. Corriendo en la 7094, CTSS
soportaba un máximo de 32 usuarios.
El
tiempo compartido y la multiprogramación originan muchos nuevos problemas para
el sistema operativo. Si están múltiples trabajos en la memoria, entonces
deben protegerse de interferir uno con otro por medio de, por ejemplo, modificar
los datos de cada uno. Con múltiples usuarios interactivos, el sistema de
archivos debe protegerse de manera que únicamente los usuarios autorizados
tengan acceso a un archivo particular. Debe manejarse la concatenación de
recursos, tal como impresoras y dispositivos de almacenamiento masivo.
SEGUNDA
VERSIÓN:
En
los 40's, se introducen los programas bit a bit, por medio de interruptores mecánicos
y después se introdujo el lenguaje máquina que trabajaba por tarjetas
perforadas.
Con
las primeras computadoras, desde finales de los años 40 hasta la mitad de los años
50, el programador interactuaba de manera directa con el hardware de la
computadora, no existía realmente un Sistema Operativo; las primeras
computadoras utilizaban bulbos, la entrada de datos y los programas se
realizaban a través del lenguaje máquina (bits) o a través de interruptores.
Durante
los años 50's y 60's. (A principio de los 60's), la compañía General's Motors
implantó el primer sistema operativo para su IBM 170. Empiezan a surgir las
tarjetas perforadas las cuales permiten que los usuarios (que en ese tiempo eran
programadores, diseñadores, capturistas, etc.), se encarguen de modificar sus
programas. Establecían o apartaban tiempo, metían o introducían sus
programas, corregían y depuraban sus programas en su tiempo. A esto se le
llamaba trabajo en serie. Todo esto se traducía en pérdida de tiempo y tiempos
de programas excesivos.
En
los años 60's y 70's se genera el circuito integrado, se organizan los trabajos
y se generan los procesos Batch (por lotes), lo cual consiste en determinar los
trabajos comunes y realizarlos todos juntos de una sola vez.
En
esta época surgen las unidades de cinta y el cargador de programas, el cual se
considera como el primer tipo de Sistema Operativo.
En
los 80's, inició el auge de la INTERNET en los Estados Unidos de América. A
finales de los años 80's comienza el gran auge y evolución de los Sistemas
Operativos.
Se
descubre el concepto de multiprogramación que consiste en tener cargados en
memoria a varios trabajos al mismo tiempo, tema principal de los Sistemas
Operativos actuales.

En
los 90's entramos a la era de la computación distribuida y del
multiprocesamiento a través de múltiples redes de computadoras, aprovechando
el ciclo del procesador.
Se
tiene una configuración dinámica con un reconocimiento inmediato de
dispositivos y software que se añadan o eliminen de las redes a través de
procesos de registro y localizadores.
La
conectividad se facilita gracias a estándares y protocolos de sistemas abiertos
por organizaciones como la organización. Interna. de normas, fundación de
software abierto, todo estará mas controlado por los protocolos de comunicación
OSI y por la red de servicios digital ISDN.
TERCERA
VERSIÓN:
Otra manera de describir la evolución de los sistemas
operativos es a través de las generaciones o etapas de la computación:
1a.
Etapa (1945-1955) : Bulbos y conexiones.

Después
de los infructuosos esfuerzos de Babbage, hubo poco progreso en la construcción
de las computadoras digitales, hasta la Segunda Guerra Mundial. A mitad de la década
de los 40's, Howard Aiken (Harvard), John Von Newman (Instituto de Estudios
Avanzados, Princeton), J. Prespe R. Eckert y Williams Mauchley (Universidad de
Pennsylvania), así como Conrad Zuse (Alemania), entre otros lograron construir
máquinas de cálculo mediante bulbos. Estas máquinas eran enormes y llenaban
cuartos completos con decenas de miles de bulbos, pero eran mucho más lentas
que la computadora casera más económica en nuestros días.
Toda
la programación se llevaba a cabo en lenguaje de máquina absoluto y con
frecuencia se utilizaban conexiones para controlar las funciones básicas de la
máquina. Los lenguajes de programación eran desconocidos (incluso el lenguaje
ensamblador). No se oía de los Sistemas Operativos, el modo usual de operación
consistía en que el programador reservaba cierto período en una hoja de
reservación pegada a la pared, iba al cuarto de la máquina, insertaba su
conexión a la computadora y pasaba unas horas esperando que ninguno de los
20,000 ó más bulbos se quemara durante la ejecución. La inmensa mayoría de
los problemas eran cálculos numéricos directos, por ejemplo, el cálculo de
valores para tablas de senos y cosenos.
A
principio de la década de los 50's la rutina mejoró un poco con la introducción
de las tarjetas perforadas. Fue entonces posible escribir los programas y
leerlas en vez de insertar conexiones, por lo demás el proceso era el mismo.
2a. Etapa. (1955-1965) : Transistores y Sistemas de Procesamiento por lotes.

La
introducción del transistor a mediados de los años 50's modificó en forma
radical el panorama. Las computadoras se volvieron confiables de forma que podían
fabricarse y venderse a clientes, con la esperanza de que ellas continuaran
funcionando lo suficiente como para realizar un trabajo en forma.
Dado el alto costo
del equipo, no debe sorprender el hecho de que las personas buscaron en forma
por demás rápida vías para reducir el tiempo invertido. La solución que, por
lo general se adoptó, fue la del sistema de procesamiento por lotes.
3ra Etapa (1965-1980 ) : Circuitos integrados y multiprogramación.

La
360 de IBM fue la primera línea principal de computadoras que utilizó los
circuitos integrados, lo que proporcionó una gran ventaja en el precio y
desempeño con respecto a las máquinas de la segunda generación, construidas a
partir de transistores individuales. Se trabajó con un sistema operativo enorme
y extraordinariamente complejo. A pesar de su enorme tamaño y sus problemas el
sistema operativo de la línea IBM 360 y los sistemas operativos similares de
esta generación producidos por otros fabricantes de computadoras realmente
pudieron satisfacer, en forma razonable a la mayoría de sus clientes. También
popularizaron varias técnicas fundamentales, ausentes de los sistemas
operativos de la segunda generación, de las cuales la más importante era la de
multiprogramación.
Otra
característica era la capacidad de leer trabajos de las tarjetas al disco, tan
pronto como llegara al cuarto de cómputo. Así, siempre que concluyera un
trabajo el sistema operativo podía cargar un nuevo trabajo del disco en la
partición que quedara desocupada y ejecutarlo.
4ta Etapa (1980-Actualidad) : Computadoras personales.

Un
interesante desarrollo que comenzó a llevarse a cabo a mediados de la década
de los ochenta ha sido el crecimiento de las redes de computadoras personales,
con sistemas operativos de red y sistemas operativos distribuidos.
En
los sistema operativo de red, los usuarios están conscientes de la existencia
de varias computadoras y pueden conectarse con máquinas remotas y copiar
archivos de una máquina a otra. Cada máquina ejecuta su propio sistema
operativo local y tiene su propio usuario.
Por el contrario, un sistema operativo distribuido es aquel que aparece ante sus usuarios como un sistema tradicional de un solo procesador, aun cuando esté compuesto por varios procesadores. En un sistema distribuido verdadero, los usuarios no deben ser conscientes del lugar donde su programa se ejecute o de lugar donde se encuentren sus archivos; eso debe ser manejado en forma automática y eficaz por el sistema operativo.
EVOLUCIÓN
DE UN SISTEMA OPERATIVO

Un
sistema operativo importante evolucionará con el tiempo por varias razones:
§
Mejoras en el hardware además de nuevos tipos de hardware:
Por ejemplo, las primeras versiones de UNIX y OS/2 no empleaban un mecanismo de
paginación porque corrían sobre máquinas sin hardware de paginación.
Las
versiones mas recientes se han modificado para explotar las capacidades de
paginación. También, el empleo de terminales gráficas y terminales de modo página,
en lugar de terminales de modo de desplazamiento de una línea cada vez, pueden
afectar el diseño del sistema operativo. Por ejemplo, una terminal así puede
permitir al usuario ver varias aplicaciones al mismo tiempo mediante
“ventanas” en la pantalla. Esto requiere un soporte más sofisticado en el
sistema operativo.
§
Nuevos servicios: En
respuesta a demandas del usuario o las necesidades de administradores de
sistema, el sistema operativo se ampliará para ofrecer nuevos servicios. Por
ejemplo, si se encuentra que es difícil obtener un buen desempeño para
usuarios con las herramientas de medición y control al sistema operativo. Otro
ejemplo son las nuevas aplicaciones que requieren el uso de ventanas en la
pantalla de exhibición. Esta característica requerirá mejoras importantes al
sistema operativo.
§
Reparaciones: el
sistema operativo por supuesto también tiene fallas que se descubrirán con el
tiempo y será necesario hacer arreglos. Por supuesto, los arreglos pueden
introducir nuevas fallas...
La necesidad de cambiar un sistema operativo de manera regular coloca ciertos requisitos en su diseño. Un enunciado obvio es que el sistema deberá ser modular en construcción, con interfaces entre los módulos definidas con claridad y que deberá estar bien documentado. Para programas grandes, como el sistema operativo contemporáneo típico, podría decirse que la modularización directa no es adecuada. Esto es, debe hacerse mucho más que sólo dividir un programa en subrutinas.