Historia y evolución de los sistemas operativos

8

Click here to load reader

description

Historia y evolución de los sistemas operativos. Segunda Clase

Transcript of Historia y evolución de los sistemas operativos

Page 1: Historia y evolución de los sistemas operativos

Historia y evolución de los sistemas operativos

Un sistema operativo no tiene sentido sin una máquina a la cual proveer los servicios

correspondientes. Como vimos en la clase pasada, un sistema operativo es un conjunto de

programas que trabajan para cumplir una serie de funciones, en esencia dos: a) proporcionar

una interfaz más sencilla a los usuarios (programas o humanos); b) administrar los recursos del

Hardware, ya sea en el tiempo como en el espacio.

Debido a esto es que su historia y su evolución están íntimamente ligadas a la historia y

evolución del hardware que soportan, y es por eso que debemos insistir en conocer esa historia.

Además, cualquier hito importante en la historia de los Sistemas Operativos, repercutirá en la

evolución posterior, es decir, una vez que se ha realizado un descubrimiento que mejora

sustancialmente el funcionamiento (por ejemplo: un algoritmo de reemplazo de página), los

programadores posteriores podrán aprovechar ese descubrimiento en sus futuros desarrollos.

Antes de las Computadoras Digitales

El primer ordenador digital verdadero fue diseñado por el matemático inglés Charles Babbage

(1792-1871). Aunque Babbage gastó la mayor parte de su vida y de su fortuna intentando

construir su “máquina analítica”, nunca logró que funcionara adecuadamente debido a que era

una máquina puramente mecánica, y la tecnología de su época no era capaz de producir las

ruedas, engranajes y levas necesarias con la suficiente precisión que se necesitaba.

La máquina analítica carecía por completo de un sistema operativo. Babbage se dio cuenta de

que necesitaría software para su máquina, por lo que contrató a una joven mujer llamada Ada

Lovelace, hija del famoso poeta inglés Lord Byron, como la primera programadora de la historia.

El lenguaje de programación Ada® se llama así en su honor.

Tras los infructuosos esfuerzos de Babbage, hubo pocos avances en la construcción de

computadoras digitales hasta la Segunda Guerra Mundial.

En torno a mediados de la década de 1940, Howard Aiken en Harvard; y Konrad Zuse en

Alemania, entre otros, tuvieron todos éxito en la construcción de máquinas de calcular.

Howard Aiken – Harvard Mark I: El IBM Automatic Sequence Controlled Calculator (ASCC), más conocido como Harvard Mark I o Mark I, fue el primer ordenador electromecánico, construido en IBM y enviado a Harvard en 1944. Tenía 760.000 ruedas y 800 kilómetros de cable y se basaba en la máquina analítica de Charles Babbage. El computador empleaba señales electromagnéticas para mover las partes mecánicas. Esta máquina era lenta (tomaba de 3 a 5 segundos por cálculo) e inflexible (la secuencia de cálculos no se podía cambiar); pero ejecutaba operaciones matemáticas básicas y cálculos complejos de ecuaciones sobre el movimiento parabólico. Funcionaba con relés, se programaba con interruptores y leía los datos de cintas de papel perforado. La Mark I se programaba recibiendo sus secuencias de instrucciones a través de una cinta de papel, en la cual iban perforadas las instrucciones y números que se transferían de un registro a otro por medio de señales eléctricas. El tiempo mínimo de transferencia de un número de un registro a otro y en realizar cada una de sus operaciones básicas (resta, suma,

Page 2: Historia y evolución de los sistemas operativos

multiplicación y división) era de 0,3 segundos. Aunque la división y la multiplicación eran más lentas. La capacidad de modificación de la secuencia de instrucciones con base en los resultados producidos durante el proceso de cálculo era pequeño. La máquina podía escoger de varios algoritmos para la ejecución de cierto cálculo. Sin embargo, para cambiar de una secuencia de instrucciones a otra era costoso, ya que la máquina se tenía que detener y que los operarios cambiaran la cinta de control. Por tanto, se considera que la Mark I no tiene realmente saltos condicionales.

Konrad Zuse - Z3: La computadora Z3 fue la primera máquina programable y completamente automática, características usadas para definir a un computador. De tecnología electromecánica, estaba construido con 2300 relés, tenía una frecuencia de reloj de ~5 Hz, y una longitud de palabra de 22 bits. Los cálculos eran realizados con aritmética de punto flotante puramente binaria. La máquina fue completada en 1941.

Estas primeras computadoras utilizaban relés mecánicos por lo que eran muy lentas, con

tiempos de ciclo medidos en términos de segundos.

La Primera Generación de computadoras (1945-1955): Tubos de Vacío y Tableros de

Conexiones

La generación 0 de Sistemas Operativos

John P. Eckert y John W. Mauchly construyeron en 1946, en la Universidad de Pennsylvania, el

ENIAC, primer computador electrónico, compuesto de 17.468 válvulas o tubos de vidrio al vacío

(más resistencias, condensadores, etc.), con 32 toneladas de peso, 2,40 de ancho y 30 metros de

largo. El calor de las válvulas elevaba la temperatura del local hasta los 50º. Para efectuar

diferentes operaciones, debían cambiarse las conexiones (cables) como en las viejas centrales

telefónicas, lo cual era un trabajo que podía tomar varios días. Era capaz de calcular con gran

velocidad la trayectorias de proyectiles, principal objetivo inicial de su construcción.

A fines de los 40´s el uso de computadores estaba restringido a aquellas empresas o

instituciones que podían pagar su alto precio, y no existían los sistemas operativos.

El programador debía tener un conocimiento y contacto profundo con el hardware, y en el

infortunado caso de que su programa fallara, debía examinar los valores de los registros y

paneles de luces indicadores del estado de la computadora para determinar la causa del daño y

poder corregir su programa, además de enfrentarse nuevamente a los procedimientos de

apartar tiempo del sistema y poner a punto los compiladores, etc.; para volver a correr su

programa, es decir, enfrentaba el problema del procesamiento serial (serial processing).

La segunda Generación de Computadoras

Generación I de Sistemas Operativos – Años 50

La introducción del transistor a mediados de la década de 1950 cambió radicalmente el

panorama. Los computadores se volvieron lo bastante fiables como para fabricarse y venderse a

clientes dispuestos a pagar por ellos con la confianza de que les seguirían funcionando el tiempo

suficiente como para completar algún trabajo útil. Por primera vez hubo una separación clara

entre diseñadores, constructores, operadores, programadores y personal de mantenimiento.

Page 3: Historia y evolución de los sistemas operativos

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: Según fue avanzando la complejidad de los programas, fue necesario

implementar soluciones que automatizaran la organización de tareas sin necesidad de un

operador. Debido a ello se crearon los monitores residentes: programas que residían en

memoria y que gestionaban la ejecución de una cola de trabajos. Un monitor residente estaba

compuesto por un cargador, un Intérprete de comandos y un Controlador (drivers) para el

manejo de entrada/salida.

Procesamiento por Lotes: Los sistemas operativos por lotes requieren que la información esté

reunida en bloque o "lote" (el programa, los datos, y las instrucciones). Los trabajos son

procesados en el orden de admisión, según el modelo de "primero en llegar primero en ser

atendido". En estos sistemas la memoria se divide en dos zonas. Una de ellas es ocupada por el

sistema operativo, y la otra se usa para cargar programas transitorios para su ejecución. Cuando

termina la ejecución de un programa se carga un nuevo programa en la misma zona de

memoria.

La idea consistía en llenar completamente una bandeja de trabajos procedentes del cuarto de

entrada para luego pasarlos a una cinta magnética, empleando un computador pequeño y

(relativamente) barato, como el IBM 1401, el cual era muy bueno para leer tarjetas, copiar

cintas e imprimir salidas, pero realmente penoso para realizar cálculos numéricos.

Otras máquinas mucho más caras, como el IBM 7094, realizaban los cálculos propiamente

dichos

Lo primero era una tarjeta $JOB, que especificaba el tiempo de ejecución máximo expresado en

minutos, el número de cuenta al cual cargar el coste del procesamiento y el nombre del

programador. Luego venía una tarjeta $FORTRAN, que indicaba al sistema operativo que debía

cargar el compilador de FORTRAN de la cinta del sistema. Después venía el programa a compilar

y luego una tarjeta $LOAD, que indicaba al sistema operativo que debía cargar en memoria el

programa objeto recién compilado. A continuación venía la tarjeta $RUN, que indicaba al

sistema operativo que debía ejecutar el programa con los datos que venían a continuación de

esa tarjeta. Por último, la tarjeta END marcaba el final del trabajo. Estas primitivas tarjetas de

control fueron las precursoras de los lenguajes de control de trabajos e intérpretes de comandos

modernos.

Almacenamiento Temporal: Se avanza en el hardware, creando el soporte de interrupciones.

Luego se lleva a cabo un intento de solución más avanzado: solapar la E/S de un trabajo con sus

propios cálculos. Por ello se crea el sistema de buffers con el siguiente funcionamiento:

Un programa escribe su salida en un área de memoria (buffer 1).

El monitor residente inicia la salida desde el buffer y el programa de aplicación calcula

depositando la salida en el buffer 2.

Page 4: Historia y evolución de los sistemas operativos

La salida desde el buffer 1 termina y el nuevo cálculo también.

Se inicia la salida desde el buffer 2 y otro nuevo cálculo dirige su salida al buffer 1.

El proceso se puede repetir de nuevo.

Los problemas surgen si hay muchas más operaciones de cálculo que de E/S (limitado por la

CPU) o si por el contrario hay muchas más operaciones de E/S que cálculo (limitado por la E/S).

Multiprocesador: Permite trabajar con máquinas que poseen más de un microprocesador. Se

denomina multiprocesador a un computador que cuenta con dos o más microprocesadores

(CPUs). Gracias a esto, el multiprocesador puede ejecutar simultáneamente varios hilos

pertenecientes a un mismo proceso o bien a procesos diferentes. Los multiprocesadores

presentan problemas de diseño que no se encuentran en computadoras monoprocesador. Estos

problemas derivan del hecho de que dos programas pueden ejecutarse simultáneamente y,

potencialmente, pueden interferirse entre sí. Concretamente, en lo que se refiere a las lecturas y

escrituras en memoria. Existen dos arquitecturas que resuelven estos problemas:

La arquitectura NUMA, donde cada procesador tiene acceso y control exclusivo a una parte de la

memoria.

La arquitectura SMP, donde todos los procesadores comparten toda la memoria. Esta última

debe lidiar con el problema de la coherencia de caché. Cada microprocesador cuenta con su

propia memoria cache local. De manera que cuando un microprocesador escribe en una

dirección de memoria, lo hace únicamente sobre su copia local en caché. Si otro

microprocesador tiene almacenada la misma dirección de memoria en su caché, resultará que

trabaja con una copia obsoleta del dato almacenado.

Para que un multiprocesador opere correctamente necesita un sistema operativo especialmente

diseñado para ello. La mayoría de los sistemas operativos actuales poseen esta capacidad.

Spoolers: Hace aparición el disco magnético con lo que surgen nuevas soluciones a los

problemas de rendimiento. Se eliminan las cintas magnéticas para el volcado previo de los datos

de dispositivos lentos y se sustituyen por discos (un disco puede simular varias cintas). Debido al

solapamiento del cálculo de un trabajo con la E/S de otro trabajo se crean tablas en el disco para

diferentes tareas, lo que se conoce como Spool (Simultaneous Peripherial Operation On-Line)

Años 60

En los años 60 se produjeron cambios notorios en varios campos de la informática, con la

aparición del circuito integrado 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,

Page 5: Historia y evolución de los sistemas operativos

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 computador. 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. Ej: Centrales Telefónicas Digitales

Sistemas operativos de esta época: Además del Atlas Supervisor y el OS/360 (que uniformiza

todos los modelos IBM), 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, pudo 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 producir 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 70

cuando se produce el boom de los mini computadores 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

Page 6: Historia y evolución de los sistemas operativos

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.

Sistemas operativos desarrollados en esta época:

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 archivos y los procesos en

memoria, y uno de los primeros sistemas multiprocesador.

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 tres subsistemas:

CCP Procesador Control de Comandos. BDOS Sistema Operativo Básico en Disco. BIOS Sistema de Entrada y Salida Básico, (dependiente de la máquina)

CCP era un Intérprete de comandos que permitía introducir mandatos y sus parámetros separados por espacios. Unos pocos de estos mandatos eran internos al propio Sistema Operativo. Pero si el mandato no era reconocido, se buscaba un programa con el mismo nombre en el directorio actual del disco. Permitiendo traducir los mandatos del usuario en un conjunto de instrucciones de alto nivel destinadas al sistema básico en disco. Así mismo, los programas podían comunicarse con BDOS para realizar tareas abstractas tales como "abrir fichero", luego, el BDOS traducía dichas instrucciones en llamadas a la BIOS de la computadora.

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úes, 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.

Page 7: Historia y evolución de los sistemas operativos

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. 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.

MS DOS: En 1975, en Harvard, Bill Gates y Paul Allen programaban un lenguaje de

programación (BASIC) para el primer micro ordenador: el Altair. Fue entonces cuando

decidieron abandonar los estudios y crear su propia empresa: Microsoft. En 1980 la IBM decidió

ingresar al mercado de las computadoras personales, y fue tal su prisa que primero desarrolló su

arquitectura de hardware, para después buscar el sistema operativo. Pensaron en primer lugar

en Gary Kildall, fundador de la Digital Research Inc. y autor CP/M. Con criterio especulativo,

Kildall viajó a Florida en compañía de su esposa y se dedicó a divertirse, realizar vuelos en

avioneta, etc. y no atendía las desesperadas llamadas telefónicas de IBM. Enterado de esta

situación Bill Gates acudió a una empresa llamada Seattle Computer Products, para la cual

trabajaba el Ing. Tim Paterson, quien había “clonado” CP/M, el cual evidentemente había sido

desensamblado y alterado, al que denominó Quick and Dirty D.O.S o QDOS. En 1981 Microsoft,

adquirió los "derechos de autor" de este sistema operativo, por US $ 50,000 y contrató a Tim

Paterson, para que trabajase 4 días a la semana, con el objeto de que realizara "algunos

cambios", para poder "transformar" al sistema. Este mismo producto "mejorado" por Microsoft,

fue vendido a la IBM, bajo el nombre de PC-DOS y Microsoft se reservó el derecho de poder

comercializarlo bajo el nombre de MS-DOS. Microsoft vendió el sistema a IBM quien permitió a

Bill no incluir en esa venta la exclusividad de su uso. IBM tenía su IBM-DOS, pero Microsoft

también lo tenía con el nombre de MS-DOS.

Apple Macintosh: El lanzamiento oficial se produjo en enero de 1984, al precio de 2.495 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. A Steve Jobs

Fortune Magazine lo ha denominado el businessman más poderoso del medio dentro de su

Top25. Después de una tormentosa historia de Steve como Fundador de Apple Computer

y después de una inminente quiebra, Steve vuelve con el gadget mas deseado por todos: el iPod

ese aparatito que hizo que Apple renaciera como un Fenix. Con el mercado en sus manos Steve

lanzo iTunes Music Store que fue la puerta a la grandeza y riqueza. Con el mundo a sus pies

Steve mostró al mundo que aun faltan cosas por conocer. Claro que mas el Gadget del año el

iPhone.

Años 90

Page 8: Historia y evolución de los sistemas operativos

GNU/Linux: Linux nació gracias a la idea de Linus Torvalds de crear un sistema basado en Unix

para máquinas i386. En más de una ocasión, Linus Torvalds ha afirmado que si hubiera sabido

de la existencia de los sistemas BSD que ya cumplían lo que hacía Linux, no se habría molestado

en modificar Minix. MINIX fue creado por Andrew Tanenbaum cuando AT&T registra UNIX y no

autoriza su distribución gratuita ni siquiera para fines educativos. La historia de Linux está

fuertemente vinculada a la del proyecto GNU. El proyecto GNU, iniciado en 1983, tiene como

objetivo el desarrollo de un sistema Unix completo compuesto enteramente de software libre.

Hacia 1991, cuando la primera versión del núcleo Linux fue liberada, el proyecto GNU había

producido varios de los componentes del sistema operativo, incluyendo un intérprete de

comandos, una biblioteca C y un compilador, pero aún no contaba con el núcleo que permitiera

completar el sistema operativo. Entonces, el núcleo creado por Linus Torvalds, quien se

encontraba por entonces estudiando en la Universidad de Helsinki, llenó el hueco final que el

sistema operativo GNU exigía. Subsecuentemente, miles de programadores voluntarios

alrededor del mundo han participado en el proyecto, mejorándolo continuamente. Torvalds y

otros desarrolladores de los primeros días de Linux adaptaron los componentes de GNU y de

BSD, así como de otros muchos proyectos como Perl, Apache, Python, etc. para trabajar con el

núcleo Linux, creando un sistema operativo completamente funcional procedente de muchísimas

fuentes diferentes, la mayoría libres.

Un estudio sobre la distribución Red Hat 7.1 reveló que ésta en particular posee más de 30

millones de líneas de código real. Utilizando el modelo de cálculo de costos COCOMO, puede

estimarse que esta distribución requeriría 8.000 programadores por año para su desarrollo. De

haber sido desarrollado por medios convencionales de código cerrado, hubiera costado más de

mil millones de dólares en los Estados Unidos

Linus Torvald: Se puede decir que creció hacker porque en su adolescencia se entretenía

programando en lenguaje ensamblador, en una computadora Commodore. En pocos años que

llegço a estudiar en la Universidad Tecnológica de Helsinki. En la primavera de 1989, mientras

estaba en la universidad, empezó a trabajar en el desarrollo de un kernel basado en el sistema

operativo propietario UNIX para computadoras con procesadores Intel. Una vez creado, lo puso

a disposición del público a través de un servidor FTP de la universidad finlandesa. Linux era el

nick (apodo) de Linus en la universidad, para evitar que lo acusaran de egocéntrico, quiso llamar

a su cración Freax (free+freak+x) pero el webmaster decidió que le gustaba más Linux.