Historia y Evolución de los Sistemas Operativos
Todo empenzó en la década de los
40.
Años 40
A finales de los años 1940, 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.
Años 50
A principios de los años 50 con
el objeto de facilitar la interacción entre persona y computador, los sistemas
operativos hacen una aparición discreta y bastante simple, con conceptos tales
como el monitor residente, el proceso por lotes y el almacenamiento temporal.
Monitor residente
Su funcionamiento era bastante
simple, se limitaba a cargar los programas a memoria, leyéndolos de una cinta o
de tarjetas perforadas, y ejecutarlos. El problema era encontrar una forma de
optimizar el tiempo entre la retirada de un trabajo y el montaje del siguiente.
Procesamiento por lotes
Como solución para optimizar el
tiempo de montaje surgió la idea de agrupar los trabajos en lotes, 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.
Almacenamiento temporal
Su objetivo era disminuir el
tiempo de carga de los programas, haciendo simultánea la carga del programa o
la salida de datos con la ejecución de la siguiente tarea. Para ello se
utilizaban dos técnicas, el buffering y el spooling.
Años 60
En los años 1960 se produjeron
cambios notorios en varios campos de la informática,con la aparicion de el
circuito cerrado la mayoría orientados a seguir incrementando el potencial de
los computadores. Para ello se utilizaban técnicas de lo más diversas:
Multiprogramación
En un sistema multiprogramado la
memoria principal alberga a más de un programa de usuario. La CPU ejecuta
instrucciones de un programa, cuando el que se encuentra en ejecución realiza
una operación de E/S; en lugar de esperar a que termine la operación de E/S, se
pasa a ejecutar otro programa. Si éste realiza, a su vez, otra operación de
E/S, se mandan las órdenes oportunas al controlador, y pasa a ejecutarse otro.
De esta forma es posible, teniendo almacenado un conjunto adecuado de tareas en
cada momento, utilizar de manera óptima los recursos disponibles.
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 otro 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.
Tiempo real
Estos sistemas se usan en
entornos donde se deben aceptar y procesar en tiempos muy breves un gran número
de sucesos, en su mayoría externos al ordenador. Si el sistema no respeta las
restricciones de tiempo en las que las operaciones deben entregar su resultado
se dice que ha fallado. El tiempo de respuesta a su vez debe servir para
resolver el problema o hecho planteado. El procesamiento de archivos se hace de
una forma continua, pues se procesa el archivo antes de que entre el siguiente,
sus primeros usos fueron y siguen siendo en telecomunicaciones.
Multiprocesador
Permite trabajar con máquinas que
poseen más de un microprocesador. En un multiprocesador los procesadores
comparten memoria y reloj.
Sistemas operativos desarrollados
Además del Atlas Supervisor y el
OS/360, los sesenta marcaron el inicio de UNIX, a mediados de los 60 aparece
Multics, sistema operativo multiusuario – multitarea desarrollado por los
laboratorios Bell de AT&T y programado en PL/1 uno de los pocos SO
desarrollados en un lenguaje de alto nivel en aquel tiempo, luego del fracaso
del proyecto UNIX comienza a desarrollarse a partir de este a finales de la
década.
Años 70
Debido al avance de la
electrónica, pudieron empezar a crearse circuitos con miles de transistores en
un centímetro cuadrado de silicio, lo que llevaría, pocos años después, a
producirse los primeros sistemas integrados. Ésta década se podría definir como
la de los sistemas de propósito general y en ella se desarrollan tecnologías
que se siguen utilizando en la actualidad. Es en los años 1970 cuando se
produce el boom de los miniordenadores y la informática se acerca al nivel de
usuario. En lo relativo a lenguajes de programación, es de señalar la aparición
de Pascal y C, el último de los cuales se creó específicamente para reescribir
por completo el código del sistema operativo Unix, convirtiéndolo en uno de los
pocos SO escritos en un lenguaje de alto nivel. En el campo de la programación
lógica se dio a luz la primera implementación de Prolog, y en la revolucionaria
orientación a objetos, Smalltalk.
Inconvenientes de los sistemas existentes
Se trataba de sistemas grandes y
costosos, pues antes no se había construido nada similar y muchos de los
proyectos desarrollados terminaron con costos muy por encima del presupuesto y
mucho después de lo que se marcaba como fecha de finalización. Además, aunque
formaban una capa entre el hardware y el usuario, éste debía conocer un
complejo lenguaje de control para realizar sus trabajos. Otro de los
inconvenientes es el gran consumo de recursos que ocasionaban, debido a los
grandes espacios de memoria principal y secundaria ocupados, así como el tiempo
de procesador consumido. Es por esto que se intentó hacer hincapié en mejorar
las técnicas ya existentes de multiprogramación y tiempo compartido.
Características de los nuevos sistemas
Para solventar los problemas
antes comentados, se realizó un costosísimo trabajo para interponer una amplia
capa de software entre el usuario y la máquina, de forma que el primero no
tuviese que conocer ningún detalle de la circuitería.
Sistemas operativos desarrollados
* MULTICS (Multiplexed
Information and Computing Service): Originalmente era un proyecto cooperativo
liderado por Fernando Corbató del MIT, con General Electric y los laboratorios
Bell, que comenzó en los 60, pero los laboratorios Bell abandonaron en 1969
para comenzar a crear el sistema UNIX. Se desarrolló inicialmente para el
mainframe GE-645, un sistema de 36 bits; después fue soportado por la serie de
máquinas Honeywell 6180.
Fue uno de los primeros sistemas
operativos de tiempo compartido, que implementó un solo nivel de almacenamiento
para el acceso a los datos, desechando la clara distinción entre los ficheros y
los procesos en memoria, y uno de los primeros sistemas multiprocesador.
* 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:
o 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.
o BDOS (Basic Disk Operating System): Traductor de las instrucciones en llamadas a la BIOS.
* 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:
o 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.
o 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.
Apple Macintosh
El lanzamiento oficial se produjo
en enero de 1984, al precio de 2495 dólares. Muchos usuarios, al ver que estaba
completamente diseñado para funcionar a través de una GUI (Graphic User
Interface), acostumbrados a la línea de comandos, lo tacharon de juguete. A
pesar de todo, el Mac se situó a la cabeza en el mundo de la edición a nivel
gráfico.
MS-DOS
En 1981 Microsoft compró un
sistema operativo llamado QDOS que, tras realizar unas pocas modificaciones, se
convirtió en la primera versión de MS-DOS (MicroSoft Disk Operating System). A
partir de aquí se sucedieron una serie de cambios hasta llegar a la versión
7.1, a partir de la cual MS-DOS dejó de existir como tal y se convirtió en una
parte integrada del sistema operativo Windows.
Microsoft Windows
Familia de sistemas operativos
propietarios desarrollados por la empresa de software Microsoft Corporation,
fundada por Bill Gates y Paul Allen. Todos ellos tienen en común el estar
basados en una interfaz gráfica de usuario basada en el paradigma de ventanas,
de ahí su nombre en inglés. Las versiones de Windows que han aparecido hasta el
momento se basan en dos líneas separadas de desarrollo que finalmente convergen
en una sola con la llegada de Windows XP. La primera de ellas conformaba la
apariencia de un sistema operativo, aunque realmente se ejecutaba sobre MS-DOS.
Actualmente existe Windows
Vista.
Años 90
GNU/Linux
En 1991 aparece la primer versión
del núcleo de Linux. Creado por Linus Torvalds y un sinfín de colaboradores a través
de Internet. Este sistema se basa en Unix, un sistema que en principio
trabajaba en modo comandos, estilo MS-DOS. Hoy en día dispone de Ventanas,
gracias a un servidor grafico y a gestores de ventanas como KDE, GNOME entre
muchos. Recientemente GNU/Linux dispone de un aplicativo que convierte las
ventanas en un entorno 3D como por ejemplo Beryl. Lo que permite utilizar linux
de una forma muy visual y atractiva.