Esta recopilación
empieza en 1984 y
termina hasta nuestros días, por lo que podemos ver a Windows Vista y Mac OS
10.5 (Leopard). Si bien no se menciona ningún aspecto técnico, es interesante
ver como ha evolucionado la interfaz de cada uno, las diferencias y “similitudes” que comparten. Faltó Gnome y otros
escritorios clásicos de Unix (como CDE) en este repaso histórico.
Sistema Operativo
Un sistema operativo es un programa o conjunto de programas
de computadora destinado a permitir una gestión eficaz de sus recursos. Comienza a trabajar
cuando se enciende el computador, y gestiona el hardware de la máquina desde los niveles más básicos,
permitiendo también la interacción con el usuario.
Un sistema operativo
se puede encontrar normalmente en la mayoría de los aparatos electrónicos que
utilicen microprocesadores para funcionar, ya que gracias a estos
podemos entender la máquina y que ésta cumpla con sus funciones (teléfonos
móviles, reproductores de DVD, autoradios… y computadoras)
Funciones básicas
Los sistemas
operativos, en su condición de capa software que posibilita y simplifica el
manejo de la computadora, desempeñan una serie de funciones básicas esenciales
para la gestión del equipo. Entre las más destacables, cada una ejercida por un
componente interno (módulo en núcleos monolíticos y servidor en microkernels),
podemos reseñar las siguientes:
- Proporcionar
comodidad en el uso de un computador.
- Gestionar de
manera eficiente los recursos del equipo, ejecutando servicios para los
procesos (programas)
- Brindar una
interfaz al usuario, ejecutando instrucciones (vulgarmente comandos).
- Permitir que los
cambios debidos al desarrollo del propio SO se puedan realizar sin
interferir con los servicios que ya se prestaban (evolutividad).
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.
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.
}