Clase 4 Historia de los Sistemas Operativos

Clase 4 Historia de los Sistemas Operativos Históricamente los sistemas operativos han estado íntimamente ligados con la arquitectura de los computado...
5 downloads 0 Views 2MB Size
Clase 4 Historia de los Sistemas Operativos Históricamente los sistemas operativos han estado íntimamente ligados con la arquitectura de los computadores en los que se han ejecutado, examinaremos las generaciones de computadoras para ver cómo eran sus sistemas operativos. 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 analítica, 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. La Primera Generación (1945-1955): Tubos de Vacío y Tableros de Conexiones 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; John von Neumann en el Instituto de Estudios Avanzados de Princeton; J. Presper Eckert y William Mauchley en la Universidad de Pensilvania, y Konrad Zuse en Alemania, entre otros, tuvieron todos éxito en la construcción de máquinas de calcular. Las primeras utilizaban relés mecánicos por lo que eran muy lentas, con tiempos de ciclo medidos en términos de segundos. Posteriormente los relés fueron reemplazados por tubos de vacío. Estas máquinas eran enormes, llenando habitaciones enteras de decenas de miles de tubos.

Mark

1

ENIAC

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 las trayectorias de proyectiles, principal objetivo inicial de su construcción. Generación Cero (década de 1940): 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, enfrentaba el problema del procesamiento serial (serial processing). Generación I: los 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. 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 costo 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.

FMS Fortran Monitor System

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. 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). 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, 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 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. 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 - 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. Inconveniente 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. 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 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. 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. 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 más el Gadget del año el iPhone.

Años 90 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 llegó 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 creación Freax (free+freak+x) pero el webmaster decidió que le gustaba más Linux.