1.3. Evolución Histórica

1.3. Evolución Histórica 

Primera Generación La primera máquina a la que se puede llamar un computador digital de propósito general fue diseñada por el matemático inglés Charles Babbage (1791-1871), quien diseñó una máquina mecánica digital (digital: capaz de trabajar con dígitos), conocida como la analytical engine, o máquina de Babbage. Si bien desarrolló todos los planos, nunca pudo terminar de construirla. Posteriormente al trabajo de Babbage, el desarrollo de máquinas programables quedó relegado al ámbito de la investigación científica, sin grandes aplicaciones prácticas. Como ha ocurrido con tantos otros inventos, fue el periodo de la Segunda Guerra Mundial el que vino a reimpulsar el interés en este tipo de máquinas. En 1944, un grupo de científicos en Bletchley Park, Inglaterra, entre los que se encontraba Alan Turing, construyó el computador Colossus, cuyo modelo más conocido, el Colossus Mark 2, utilizaba 2400 tubos de vacío. Este computador, si bien, tampoco era Turing-complete (lo que demuestra que no basta tener a Alan Turing para ser Turing-complete) ya que fue diseñado para una tarea criptográfica particular, sí era programable mediante cintas de papel. Fue importante en el proceso de decriptación del criptosistema alemán Lorenz.



Segunda Generación 

La creación de los transistores en los años 1950 revolucionó la construcción de los dispositivos electrónicos reduciendo drásticamente las tasas de falla respecto al hardware construido con tubos de vacío y aumentando la velocidad de respuesta. Se empezaron a construir grandes computadores basados en transistores, conocidas como mainframes. Debido a su costo de construcción, un computador de este tipo era solamente accesible para grandes corporaciones, gobiernos y universidades. La operación de un mainframe requería la colaboración de varios actores. Un mainframe ejecuta jobs (trabajos), que consisten en el código de un programa, o una secuencia de programas. Los programas se ingresan mediante tarjetas perforadas y se escriben en lenguaje assembler. En 1953, John W. Backus, de IBM, propone una alternativa para hacer más práctica la descripción de programas en lugar de assembler y desarrolla el FORmula TRANslating system, conocido como lenguaje FORTRAN, junto con una herramienta para hacer la traducción hacia assembler llamada compilador. Este trabajo le otorgaría el Turing Award en 1977. Un programa escrito en FORTRAN sobre tarjetas perforadas es entregado como input a un lector de tarjetas. El lector de tarjetas escribe sobre una cinta que se entrega a la máquina principal, la cual ejecuta las instrucciones, proceso que podía tardar horas dependiendo de la complejidad del cómputo, y escribe el resultado sobre otra cinta de salida. La cinta de salida es leída por otro dispositivo capaz de imprimir el contenido de la cinta a un papel. En ese momento termina la ejecución del job.



Tercera Generación 

En los años 1960s, los mainframes de IBM (International Business Machines Corporation), la compañía constructora de equipamiento computacional más importante de la época, requerían cada uno un software y periféricos distintos para funcionar, ya que las instrucciones no eran compatibles. Un programa hecho para un modelo debía ser reescrito ante la introducción de un nuevo modelo de hardware. La compañía decide unificar el hardware bajo una familia llamada System/360. Ésta 6 fue la primera línea importante basada en la nueva tecnología de circuitos integrados capaz de integrar grandes cantidades de pequeños transistores, lo que proporcionaba una enorme ventaja precio/rendimiento respecto a los transistores tradicionales. OS/360, y la multiprogramación La idea de tener una línea de hardware mutuamente compatible y de propósito general requería un sistema capaz de funcionar en todos los modelos. Este sistema fue el OS/360. El software resultante resultó enormemente grande (millones de líneas de assembler) y complejo de desarrollar, con numerosos bugs, en tiempos en que la ingeniería de software no se desarrollaba como disciplina aún. El director del proyecto Fred Brooks describió sus experiencias en el libro "The Mythical ManMonth", un clásico de la ingeniería de software. Sus contribuciones a esta nueva disciplina le valieron el otorgamiento del Turing Award en 1999. A pesar de todos sus defectos, OS/360 fue ampliamente usado, e introdujo algunas ideas clave en los sistemas computacionales. Sistemas como el IBM 7094 eran máquinas que procesaban un trabajo simultáneamente. Si alguna instrucción de ese trabajo requería una lectura de cinta, o alguna operación de I/O, la CPU debía esperar sin hacer nada (idle) hasta que la operación terminase. Los trabajos científicos suelen ser intensivos en cómputo (CPU-bound), por lo que esto no era un problema. Sin embargo, las aplicaciones comerciales requerían operaciones de I/O el 80% a 90% de las veces (I/O-bound) por lo que gran parte del tiempo la CPU se encontraba idle. La solución fue dividir el espacio de memoria en regiones, y asignar un espacio distinto a cada job. Se introdujo un mecanismo que permitiera que, cada vez que un job estuviese esperando una operación de I/O, el sistema permitiera que otro job pudiese ocupar la CPU. De esta manera, si hay suficiente jobs en la memoria, sería posible mantener a la CPU trabajando casi el 100% del tiempo. Este mecanismo fue un enorme avance que ocupamos hasta el día de hoy, y se llama multiprogramación







Cuarta Generación 

El desarrollo tecnológico de los circuitos integrados llegó al nivel conocido como VLSI (Very Large Scale Integration), capaz de integrar hasta 1 millón de transistores en un chip de 1cm2, lo que permitía hasta 100000 celdas lógicas. Surgieron sistemas computacionales de uso personal denominados microcomputadores, que en principio no eran tecnológicamente muy superiores al PDP-11, pero a un precio notablemente inferior. Intel deseaba un sistema operativo propio para el Intel 8080, por lo cual Gary Kildall construyó un sistema operativo basado en disco (contenido en un floppy disk de 8") conectado al 8080, y llamado CP/M (Control Program for Microcomputers). CP/M era un sistema single-task de 8-bit y capaz de utilizar hasta 64 KB de memoria. Si bien el sistema fue adoptado por Intel, no le veían mucho futuro a un sistema operativo residente en disco, y los derechos quedaron en manos de Gary Kildall quien formó la compañía Digital Research Inc. para desarrollar y vender CP/M. Digital Research adaptó CP/M para diversos microcomputadores usando el Intel 8080, pero también para otros microprocesadores de la época como el Zilog Z80, dominando el mercado durante unos 5 años. En este periodo se desarrollaron versiones multitasking y de 16-bit. Aplicaciones que surgieron bajo CP/M fueron WordStar (procesador de texto), dBase (base de datos), Multiplan (planilla de cálculo), y Turbo Pascal (IDE y compilador para Pascal). IBM, por su parte, que había dominado el mercado de los mainframes se estaba quedando atrás en el nuevo mercado de los microcomputadores y empezó a desarrollar su propia versión: el IBM Personal Computer (IBM PC) basado en el Intel 8088 de 16-bit, 4.77MHz de clock, y hasta 256 kB de RAM. En 1980, IBM contactó a una pequeña compañía de nombre Microsoft fundada por Bill Gates y Paul Allen en 1975, y conocida por desarrollar un intérprete del lenguaje BASIC para el popular Altair 8800. Sin embargo, IBM deseaba un sistema operativo completo, y Bill Gates les sugirió contactar a Digital Research, que con CP/M era el dominador absoluto de los sistemas operativos. La negociación con Digital Research fracasó al no llegar a un NDA (Non-Disclosure Agreement) respecto al IBM PC. Si bien las razones no son claras, se dice que Gary Kildall no quiso reunirse con IBM, que envió a Dorothy McEwen (co-fundadora de Digital Research, y su esposa) en su lugar, que no estuvo de acuerdo con el espacio de tiempo que se le otorgaba para desarrollar una versión de CP/M para el Intel 8088 (que sería el futuro CP/M-86, ya que el set de instrucciones era Intel 8086), o que simplemente no se llegó a acuerdo económico. Varios artículos discuten cómo ocurrió esta curiosa serie de eventos. Gary Kildall murió en 1994, a los 52 años, bajo circunstancias que tampoco quedaron totalmente claras Aún a inicios de los años 1980s, tanto MS-DOS como CP/M-86 seguían interactuando con el usuario a través de líneas de comando y teclado. Esto 8 cambiaría debido a una investigación en interacción humano-computador que venía siendo desarrollada desde los años 1960s por Doug Engelbart (1925-2013) en el Stanford Research Institute (SRI), quien creó las GUI (Graphical User Interface) como medio de interactuar con el computador mediante un conjunto de abstracciones gráficas como ventanas, íconos, menúes, hipertexto (sí, hipertexto, ahí quedaste Tim Berners-Lee #conrespeto), y un novedoso dispositivo llamado mouse capaz de controlar un puntero en pantalla. Su trabajo, el sistema NLS (oN-Line System) fue presentado en un evento histórico que se conoció posteriormente como The Mother of All Demos (vale la pena verlo con los ojos de 1968). Tuvo tanta influencia que este tipo de interfaces se empezó a usar en el centro de investigación de Xerox PARC (Xerox Palo Alto Research Center) y en particular en su computador Xerox Alto. El trabajo de Doug Engelbart le otorgaría el Turing Award 1997 por su visión del futuro de la computación interactiva. Fuertemente influenciado por el éxito del Apple Macintosh, a inicios de 1980s Microsoft planeaba un sucesor para MS-DOS que tuviera su propia GUI. Su primer intento fue un sistema administrador de ventanas llamado Windows 1.0 (1985) que funcionaba como una aplicación sobre MS-DOS. La versión que consiguió mayor adopción fue Windows 3.11, para sistemas de 16-bit. Fue en 1995, con el lanzamiento de Windows 95 y luego Windows 98, que se incorporó código para aprovechar las nuevas CPU de 32-bit, aun cuando parte del sistema operativo debía soportar aún aplicaciones de 16-bit por retrocompatibilidad. MS-DOS seguía siendo usado para iniciar el sistema y como soporte subyacente para aplicaciones antiguas. Ya desde 1987, Microsoft había trabajado en conjunto con IBM para construir un sistema operativo con GUI.



Quinta Generación 

Hasta 1993, los dispositivos telefónicos móviles no era más que dispositivos de comunicación que usaban sistemas embebidos, dedicados, para administrar su hardware. El concepto de utilizar estos dispositivos para realizar actividades más allá de la telefonía surgió con los dispositivos conocidos como PDA (Personal Digital Assistant), entre los cuales se encuentra el Apple Newton que incluía un sistema operativo Newton OS escrito en C++, y con un pionero uso de reconocimiento de escritura manual. Poseía una API para aplicaciones desarrolladas por terceros, sin embargo, no obtuvo gran adopción. Talvez el primer dispositivo llamado un smartphone fue el IBM Simon, con una interfaz de pantalla touch (con stylus) y un sistema operativo ROM-DOS, compatible 9 con MS-DOS y desarrollado por la empresa Datalight. Su batería de una hora de duración no le permitió competir con los nuevos dispositivos. Fue en 1997 que la ya extinta compañía Palm, Inc. popularizó los dispositivos PDA mediante su PalmPilot, y su sistema operativo Palm OS 2.0 como el primer sistema operativo móvil exitoso. Incorporaba el sistema Graffiti de reconocimiento de escritura manual, y el stack de protocolos TCP/IP para soportar sincronización por red en lugar de cable serial. Palm OS introdujo paulatinamente características modernas acorde a la evolución de los dispositivos como soporte para el stack WiFi (IEEE 802.11), Bluetooh, y desde 2004 con Palm OS 6.0 (Cobalt), un kernel con multitasking y protección de memoria. En 2009, Palm, Inc. intentó ponerse al día en la competencia por el mercado móvil con el desarrollo de webOS. Palm, Inc. sería adquirido por HP al año siguiente y el desarrollo de webOS no se vería impulsado hasta al menos dos años más cuando el código de webOS se publicó de manera abierta. Finalmente, HP licencia el uso de webOS a LG para incorporarlo en sus dispositivos smartTV.



El éxito de Palm llevó a otros protagonistas de la telefonía móvil como Nokia a cofundar y posteriormente adquirir completamente a Symbian Ltd. El consorcio fundador incluía a Psion, una compañía que estaba detrás de EPOC, un sistema operativo single-user de 32-bit con preemptive multitasking del año 1998, que bajo Symbian se convertiría en Symbian OS cuya primera versión (6.0) fue utilizada en el Nokia 9210 Communicator. Symbian OS corría sobre procesadores ARM, una arquitectura RISC. En su mejor momento, Symbian OS fue el sistema preferido por manufacturadores como Samsung, Motorola, Sony Ericsson, y principalmente Nokia




Microsoft había desarrollado desde 1996 un sistema operativo embebido llamado Windows CE (actualmente Windows Embedded Compact) diseñado para una especificación de plataformas incialmente denominado Pocket PC. Los primeros dispositivos con Windows CE se lanzaron en 2002. Windows CE contenía un kernel híbrido escrito en C y soportaba arquitecturas x86, ARM, MIPS y PowerPC. La serie de sistemas operativos móviles basados en Windows CE fue conocida como Windows Mobile (incluyendo el media player Zune) y fue desarrollado hasta 2010. Posteriormente Microsoft reimplementaría su sistema operativo móvil basado en la línea de Windows NT, dando inicio a Windows Phone.



El año 2007 ocurrió la entrada de uno de los principales competidores cuando Apple presentó su iPhone junto con su sistema operativo iOS (originalmente iPhone OS). iOS, al igual que MacOSX se basa en el kernel híbrido XNU y el sistema operativo (UNIX-like) Darwin. Desde el año 2010, con iOS 4, el sistema añadió soporte de APIs para multitasking por parte de aplicaciones de usuario. Previamente el multitasking estaba restringido solo a ciertos servicios del sistema. La disponibilidad del iOS SDK (Software Development Kit) atrajo el desarrollo de múltiples aplicaciones nativas disponibles desde una tienda online (App Store), popularizando rápidamente el uso del iPhone y posicionándolo como uno de los principales competidores.


 

Meses después del lanzamiento del primer iPhone, un conjunto de compañías lideradas por Google, incluyendo a HTC, Sony, Dell, Intel, Motorola, Samsung, LG, Nvidia, entre otros, forman la Open Handset Alliance (OHA). Con el soporte de OHA, Google lanza en 2008 la primera versión de Android, un sistema operativo monolítico (UNIX-like) de código abierto basado en el kernel Linux. Android inició su 11 desarrollo bajo la compañía Android, Inc. fundada en 2003. El año 2005 Google adquirió Android, Inc. y fue bajo su alero que el equipo de desarrollo terminó la primera versión Android 1.0. De manera similar a App Store, Android lanzó el Android Market (más tarde Google Play Store), y el Android SDK para el desarrollo de aplicaciones (escritas principalmente en Java, y recientemente en Kotlin) para terceros. El soporte de OHA, integrado por importantes actores del mercado smartphone fue clave para posicionar a Android como el sistema operativo dominador en los dispositivos móviles desde el año 2010, con iOS como su único (y distante) competidor real.




A diferencia de Linux, el kernel de Android no utiliza la tradicional GNU C Library glibc, sino que utiliza una implementación alternativa de la biblioteca de C desarrollado por Google, llamada Bionic, la cual posee un menor memory footprint que glibc y fue diseñado para CPUs funcionando a menor frecuencia de clock (y por lo tanto, optimizada para menor consumo energético). Bionic, sin embargo, no implementa toda la interfaz POSIX, haciendo que Android sea NonPOSIX compliant. La informática tal y como se le conoce hoy día, surgió a raíz de la II Guerra Mundial, en la década de los 40. En esos años no existía siquiera el concepto de "Sistema Operativo" y los programadores interactuaban directamente con el hardware de las computadoras trabajando en lenguaje máquina (esto es, en binario, programando únicamente con 0s y 1s). El concepto de Sistema Operativo surge en la década de los 50. El primer Sistema Operativo de la historia fue creado en 1956 para un ordenador IBM 704, y básicamente lo único que hacía era comenzar la ejecución de un programa cuando el anterior terminaba. En los años 60 se produce una revolución en el campo de los Sistemas Operativos. Aparecen conceptos como sistema multitarea, sistema multiusuario, sistema multiprocesadores y sistema en tiempo real.

Comentarios