UNIVERSIDAD DE LA SIERRA JUÁREZ XEGLO “LA VOZ DE LA SIERRA JUÁREZ” PROGRAMA RADIOFÓNICO NATURALEZA, CIENCIA, ARMONÍA HORARIO DE TRANSMISIÓN: 17:00-17:30 HRS. Tema: Historia del nacimiento del sistema operativo GNU/Linux Locutor: M. C. José Guillermo Valdez Besares Profesor-Investigador Instituto de Estudios Ambientales Fecha: 08 de Octubre de 2014 Introducción Una computadora moderna consta de uno o más procesadores , una memoria principal , discos, impresoras, teclado, ratón, una pantalla o monitor, interfaces de red y otros dispositivos de entrada/salida. En general es un sistema complejo. Si todos los programadores de aplicaciones tuvieran que comprender el funcionamiento de todas estas partes , no escribirían código alguno. Es más : el trabajo de administrar todos estos componentes y utilizarlos de manera óptima es una tarea muy desafiante. Por esta razó n, las computadoras están equipadas con una capa de software llamada sistema operativo, cuyo trabajo es proporcionar a los programas de usuario un modelo de computadora mejor , más simple y pulcro , así como encargarse de la administración de todos los recursos antes mencionados. Los sistemas operativos pero en especial el sistema operativo GNU/Linux son el tema de este programa de radio Naturaleza, Ciencia, Armonía del día 8 de Octubre de 2014. La mayoriá de los radioescuchas que hayan tenido la oportunidad de tener una computadora habrán tenido cierta experiencia con un sistema operativo como Windows , Linux, FreeBSD o Mac OS X , pero las apariencias pueden ser engañosas . El software con el que los usuarios generalmente interactúan se denomina shell, cuando está basado en texto , y GUI (Graphical User Interface; Interfaz gráfica de usuario ) cuando utiliza elementos gráficos o iconos . En realidad no forma parte del sistema operativo, aunque lo utiliza para llevar a cabo su trabajo. En una computadora se cuenta con componentes hardware (HW) que consiste en circuitos electrónicos integrados (chips), tarjetas, discos, teclado, monitor, por mencionar los más usados. Por encima de dicho HW se encuentra el software (SW). La mayoriá de las computadoras tien en dos modos de operación del SW : modo kernel y modo usuario. El sistema operativo es la pieza fundamental del software y se ejecuta en modo kernel (también conocido como modo supervisor). En este modo, el sistema operativo tiene acceso completo a todo el hardware y puede ejecutar cualquier instrucción que la máquina sea capaz de ejecutar , por lo tanto controla la forma en que se guarda, modifica o elimina la información de un disco ya sea disco duro, disco de estado sólido, cd o dvd por mencionar un ejemplo de lo que se encarga el kernel. El resto del software se ejecuta en modo usuario, en el cual sólo un subconjunto de las instrucciones de máquina es permitido . En particular, las instrucciones que afectan el control de la máquina o que se encargan de la E /S (entrada/salida) están prohibidas para los programas en modo usuario. El software de interfaz de usuario , shell o GUI, es el nivel más bajo del software en modo usuario y permite la ejecución de otros programas, como un navegador Web, lector de correo electrónico o reproductor de música . Estos programas también utilizan en forma intensiva el sistema operativo. Una distinción importante entre el sistema operativo y el software que se ejecuta en modo usuario es que , si a un usuario no le gusta, por ejemplo, su lector de correo electrónico , es libre de conseguir otro o incluso escribir el propio si así lo desea ; sin embargo, no es libre de escribir su propio manejador de interrupciones de reloj , que forma parte del sistema operativo y está protegido por el hardware contra cualquier intento de modificación por parte de los usuarios. En muchos sistemas hay programas que se ejecutan en modo de usuario, pero ayudan al sistema operativo o realizan funciones privilegiadas. Por ejemplo, a menudo hay un programa que permite a los usuarios cambiar su contraseña . Este programa no forma parte del sistema operativo y no se ejecuta en modo kernel, pero sin duda lleva a cabo una función UNIVERSIDAD DE LA SIERRA JUÁREZ XEGLO “LA VOZ DE LA SIERRA JUÁREZ” PROGRAMA RADIOFÓNICO NATURALEZA, CIENCIA, ARMONÍA HORARIO DE TRANSMISIÓN: 17:00-17:30 HRS. delicada y tiene que protegerse de una manera especial. En ciertos sistemas, la idea se lleva hasta el extremo y partes de lo que tradicionalmente se considera el sistema operativo (por ejemplo, el sistema de archivos) se ejecutan en el espacio del usuario. En dichos sistemas es difić il trazar un lim ́ ite claro. Todo lo que se ejecuta en modo kernel forma, sin duda, parte del sistema operativo, pero podriá decirse que algunos programas que se ejecutan fuera de este modo también forman parte del mismo sistema, o por lo menos están estrechamente asociados a él. Los sistemas operativos difieren de los programas de usuario (es decir, de aplicación) en varias cuestiones además del lugar en el que residen. En particular, son enormes, complejos y de larga duración. El código fuente de un sistema operativo como Linux o Windows contiene cerca de cinco millones de lin . Para tener una idea de lo que esto significa , ́ eas de código considere el trabajo de imprimir cinco millones de lin eas en un formato de libro : con 50 líneas por página y 1000 páginas ́ por volumen , se requeririá n 100 volúmenes para listar un sistema operativo de este tamaño ; es decir, todo un librero. Imagine usted que tiene un trabajo como encargado de dar mantenimiento a un sistema operativo y que en su primer día su jefe le presenta un librero con el código y le dice : “Apréndase todo esto” . Y ésta sólo sería la parte que se ejecuta en el kernel. Los programas de usuario como la interfaz gráfica , las bibliotecas y el software de aplicación b ásico (como el Explorador de Windows) pueden abarcar fácilmente de 10 a 20 veces esa cantidad. Historia de los sistemas operativos Los sistemas operativos han ido evolucionando a través de los años . A continuación mencionaremos algunas de las cosas que a mi parecer son importantes mencionar en nuestro programa de radio . La progresión que se mencionará es en gran parte cronológica aunque el desarrollo ha sido un tanto accidentado . Cada fase surgió sin esperar a que la anterior terminara completamente. Hubo muchos traslapes , sin mencionar muchos falsos inicios y callejones sin salida . El radio escucha debe tomar esto como guiá , no como la última palabra. La primera generación (1945 a 1955): tubos al vacío Después de los esfuerzos infructuosos de Charles Babbage (de 1792 a 1871), no hubo muchos progresos en la construcción de computadoras digitales sino hasta la Segunda Guerra Mundial , que estimuló una explosión de esta actividad . En estos primeros días, un solo grupo de personas (generalmente ingenieros) diseñaban, construían, programaban, operaban y daban mantenimiento a cada máquina . Toda la programación se realizaba exclusivamente en lenguaje máquina o , peor aún , creando circuitos eléctricos mediante la conexión de miles de cables a tableros de conexiones (plugboards) para controlar las funciones básicas de la máquina . Los lenguajes de programación eran desconocidos (incluso se desconociá el lenguaje ensamblador). Los sistemas operativos también se desconociá n. El modo usual de operación consistía en que el programador trabajaba un periodo dado , registrándose en una hoja de firmas , y después entraba al cuarto de máquinas , insertaba su tablero de conexiones en la computadora e invertía varias horas esperando que ninguno de l os cerca de 20,000 bulbos se quemara durante la ejecución . Prácticamente todos los problemas eran cálculos numéricos bastante simples , como obtener tablas de senos, cosenos y logaritmos. A principios de la década de 1950, la rutina había mejorado un poco con la introducción de las tarjetas perforadas. Entonces fue posible escribir programas en tarjetas y leerlas en vez de usar tableros de conexiones; aparte de esto, el procedimiento era el mismo. La segunda generación (1955 a 1965): transistores y sistemas de procesamiento por lotes La introducción del transistor a mediados de la década de 1950 cambió radicalmente el panorama . Las computadoras se volvieron lo bastante confiables como para poder fabricarlas y venderlas a clientes dispuestos a pagar por ellas , con la expectativa de que seguiriá n funcionando el tiempo suficiente como para poder llevar a cabo una cantidad útil de trabajo . Por primera vez habiá una clara separación entre los diseñadores , constructores, operadores, programadores y el personal de mantenimiento. Estas máquinas , ahora conocidas como mainframes, estaban encerradas en cuartos especiales con aire acondicionado y grupos de operadores profesionales para manejarlas . Sólo las empresas grandes , universidades o agencias gubernamentales importantes podiá n financiar el costo multimillonario de operar estas máquinas . Para ejecutar un trabajo (es decir , un programa o conjunto de programas ), el programador primero escribía el programa en papel (en FORTRAN o en ensamblador) y después lo pasaba a tarjetas perforadas. Luego llevaba el conjunto de tarjetas al cuarto de entrada de datos y lo entregaba a uno de los operadores; después se iba a tomar un café a esperar a que los resultados estuvieran listos. Los sistemas operativos tí picos eran FMS (Fortran Monitor System) e IBSYS, el sistema operativo de IBM para la computadora 7094. UNIVERSIDAD DE LA SIERRA JUÁREZ XEGLO “LA VOZ DE LA SIERRA JUÁREZ” PROGRAMA RADIOFÓNICO NATURALEZA, CIENCIA, ARMONÍA HORARIO DE TRANSMISIÓN: 17:00-17:30 HRS. La tercera generación (1965 a 1980): circuitos integrados y multiprogramación IBM intentó resolver el problema de tener diferentes tipos de computado ras (científicas/comerciales) introduciendo la línea de computadoras System/360. La 360 era una serie de máquinas compatibles con el software, que variaban desde un tamaño similar a la 1401 hasta algunas que eran más potentes que la 7094. Las máquinas sólo diferían en el precio y rendimiento (máxima memoria , velocidad del procesador , número de dispositivos de E /S permitidos , etcétera). Fue la primera línea importante de computadoras en utilizar circuitos integrados (ICs) ( a pequeña escala ), con lo cual se pudo ofrecer una mayor ventaja de precio/rendimiento en comparación con las máquinas de segunda generación , las cuales fueron construidas a partir de transistores individuales. La mayor fortaleza de la idea de “una sola familia” fue al mismo tiempo su mayor debilidad . La intención era que todo el software, incluyendo al sistema operativo OS/360, funcionara en todos los modelos . Por lo tanto , debería ser bueno y compatible con sistemas con pocos dispositivos periféricos y en sistemas con much os. Tenía que funcionar en ambos entornos comerciales y cientif́ icos y en esa época no habiá forma en que IBM (o cualquier otra) pudiera escribir una pieza de software que cumpliera con todos estos requerimientos en conflicto. El resultado fue un enorme y extraordinariamente complejo sistema operativo llamado OS /360 que posiblemente una de las mayores aportaciones y que estaban ausentes en los sistemas operativos de segunda generación fue la multiprogramación. Otra caracteriś tica importante de los sistemas operativos de tercera generación fue la capacidad para leer trabajos en tarjetas y colocarlos en el disco tan pronto como se llevaban al cuarto de computadoras . Así, cada vez que terminaba un trabajo en ejecución, el sistema operativo podía cargar un nuevo trabajo del disco en la partición que entonces estaba vacía y lo ejecutaba. A esta técnica se le conoce como spooling (de Simultaneous Peripheral Operation On Line, operación periférica simultánea en línea) y también se utilizó para las operaciones de salida. Con los sistemas de tercera generación , el tiempo que transcurriá entre enviar un trabajo y recibir de vuelta la salida era comúnmente de varias horas , por lo que una sola coma mal colocada podiá ocasionar que fallara la compilación , y el programador desperdiciara la mitad del día . Este deseo de obtener un tiempo rápido de respuesta allanó el camino para el tiempo compartido (timesharing), una variante de la multiprogramación donde cada usuario tenía una terminal en línea . En un sistema de tiempo compartido, si 20 usuarios están conectados y 17 de ellos están pensando en dar un paseo o tomar café, la CPU se puede asignar por turno a los tres trabajos que desean ser atendidos. Después el M .I.T., Bell Labs y General Electric (que en ese entonces era un importante fabricante de computadoras ) decidieron emprender el desarrollo de una “utilería para computadora” , una máquina capaz de servir a varios cientos de usuarios simultáneos de tiempo compartido dando como resultado un sistema conocido como MULTICS (MULTiplexed Information and Computing Service; Servicio de Información y Cómputo MULTiplexado ) que fue un éxito parcial . Se diseñó para dar soporte a cientos de usuarios en una máquina que era sólo un poco más potente que una PC basada en el Intel 386, aunque teniá mucho más capacidad de E/S. Para resumir esta larga historia , MULTICS introdujo muchas ideas seminales en la literatura de las computadoras , pero convertirlas en un producto serio y con éxito comercial importante era algo mucho más difícil de lo que cualquiera hubiera esperado. Bell Labs se retiró del proyecto y General Electric dejó el negocio de las computadoras por completo . Sin embargo, el M .I.T. persistió y logró hacer en un momento dado que MULTICS funcionara . Al final , la compañiá que compró el negocio de computadoras de GE (Honeywell) lo vendió como un producto comercial y fue instalado por cerca de 80 compañías y universidades importantes a nivel mundial . Aunque en número pequeño , los usuarios de MULTICS eran muy leales . Por ejemplo, General Motors, Ford y la Agencia de Seguridad Nacional de los Estados Unidos desconectaron sus sistemas MULTICS sólo hasta finales de la década de 1990, 30 años después de su presentación en el mercado y de tratar durante años de hacer que Honeywell actualizara el hardware. Otro desarrollo importante durante la tercera generación fue el increib ́ le crecimiento de las minicomputadoras y Ken Thompson, uno de los científicos de cómputo en Bell Labs que trabajó en el p royecto MULTICS, encontró una pequeña minicomputadora PDP -7 que nadie estaba usando y se dispuso a escribir una versión simple de MULTICS para un solo usuario y en esta tarea contó con la ayuda de Dennis Ritchie. Más adelante, este trabajo se convirtió en el sistema operativo UNIX®. El hito más importante en la historia de Unix fue su completa reescritura en lenguaje C . Las primeras versiones se habían programado en lenguaje ensamblador para cada máquina . Con la conversión a C , UNIX pudo ejecutarse en cualquier máquina que tuviese un compilador de C . Unix fue el primer sistema operativo portable entre diferentes arquitecturas. Esto ocurrió en 1972 y fue la causa por la que se hizo popular en el mundo académico , las agencias gubernamentales y muchas compañiá s, pero debido a que el código fuente estaba disponible ampliamente, varias organizaciones desarrollaron UNIVERSIDAD DE LA SIERRA JUÁREZ XEGLO “LA VOZ DE LA SIERRA JUÁREZ” PROGRAMA RADIOFÓNICO NATURALEZA, CIENCIA, ARMONÍA HORARIO DE TRANSMISIÓN: 17:00-17:30 HRS. sus propias versiones (incompatibles entre sí), lo cual produjo un caos. Se desarrollaron dos versiones principales: System V de AT/T y BSD (Berkeley Software Distribution, Distribución de Software de Berkeley) de la Universidad de California en Berkeley . Estas versiones teniá n también variantes menores . Para que fuera posible escribir programas que pudieran ejecutarse en cualquier sistema UNIX , el IEEE desarrolló un estándar para UNIX conocido como POSIX, con el que la mayoría de las versiones de UNIX actuales cumplen . POSIX define una interfaz mínima de llamadas al sistema a la que los sistemas UNIX deben conformarse . De hecho, algunos de los otros sistemas operativos también admiten ahora la interfaz POSIX. Como agregado, vale la pena mencionar que en 1987 el autor liberó un pequeño clon de UNIX conocido como MINIX, con fines educativos. En cuanto a su funcionalidad, MINIX es muy similar a UNIX , incluyendo el soporte para POSIX . Desde esa época, la versión original ha evolucionado en MINIX 3, que es altamente modular y está enfocada a presentar una muy alta confiabilidad . El sistema MINIX 3 está disponible en forma gratui ta (incluyendo todo el código fuente ) a través de Internet, en www.minix3.org. El sistema operativo GNU/Linux Un tiempo después AT /T anunció que no realizariá más ediciones de Unix . En ese momento , Unix era ya el sistema de elección de muchas empresas e instituciones . Las compañiá s de software comercial vieron la posibilidad de hacer negocio y lanzaron sus propias versiones del sistema Unix (derivadas de BSD o de System V ). Así nacieron las diferentes variantes de Unix que existen hoy en día . Algunas de estas variantes son: AIX de IBM, HP/UX de HewlettPackard, IRIX de Silicon Graphics, SunOS y Solaris de Sun Microsystems, SCO UNIX de SCO, Ultrix, Xenix de Microsoft. En 1985, las perspectivas de los usuarios de Unix habiá n empeorado bastante . Sólo compañías comerciales fabricaban y mantenían los sistemas operativos y programas que las computadoras nece sitaban. Estas compañías obligaban a los usuarios a firmar contratos de licencia en los que éstos se comprometían a no modificar sus programas para poder usarlos a su gusto, a no compartirlos con sus colegas, y a no ver el código de aquello que estaban usando. Esto era intolerable para muchos usuarios. Tradicionalmente, en el mundo de los programadores había existido una filosofía de compartir que posibilitaba un rápido avance de la técnica . La gente escribiá programas y los compartiá con los demás. A su vez, estas personas mejoraban como creiá n los programas de otros y también compartiá n estas mejoras con la comunidad en general. Este espíritu de colaboración estaba siendo roto por las abusivas licencias de software que las compañías pretendían imponer. Fue Richard Stallman, del laboratorio de Inteligencia Artificial del M .I.T. (Instituto Tecnológico de Massachusett), el que se decidió a cambiar las cosas. A principios de los ochenta, empezó a escribir un sistema operativo libre. Este sistema podría ser copiado y modificado por todo el que quisiera hacerlo . Stallman se basó en Unix para su sistema , pero intentando mejorarlo donde esto fuese posible. El nombre elegido para el sistema trata de recalcar la diferencia entre el Unix existente en aquella época (que era mayoritariamente comercial) y el nuevo sistema (que es libre). Este sistema se llamó GNU, que es un acrónimo que significa GNU's Not Unix (de hecho, fue el primer acrónimo recursivo ampliamente conocido). A finales de los '80, el proyecto GNU había desarrollado casi todas las herramientas que necesita un ordenador : había compiladores, editores, procesadores. Otros proyectos de software libre habían fabricado productos tales como el sistema X Window de ventanas, el procesador de textos TeX, las herramientas de Internet, etc. Sólo faltaba la pieza central del sistema operativo : el núcleo. La FSF (Fundación de Software Libre ) trabajaba en un núcleo denominado Hurd, pero estaba aún muy lejos de ser un producto terminado . De manera que los usuarios de software libre debían limitarse a utilizar las utilidades GNU en sistemas comerciales , puesto que no podían tener un núcleo enteramente libre. Uno de los núcleos más conocidos en aquel momento entre los aficionados a Unix era Minix. Minix era una versión reducida del núcleo de Unix escrita por el profesor Andrew Tanenbaum de la Universidad de Amsterdam . Ésta era una versión académica incluida en el libro de Tanenbaum sobre sistemas operativos . No era libre, puesto que no se podía modificar ni redistribuir, pero para mucha gente era la mejor forma de aprender como estaba hecho el corazón de un sistema operativo. El deseo de una versión de producción (en vez de educativa ) gratuita de MINIX llevó a un estudiante finla ndés, llamado Linus Torvalds, a escribir Linux. Este sistema estaba inspirado por MINIX , además de que fue desarrollado en este sistema y originalmente ofrecía soporte para varias características de MINIX (por ejemplo, el sistema de archivos de MINIX). UNIVERSIDAD DE LA SIERRA JUÁREZ XEGLO “LA VOZ DE LA SIERRA JUÁREZ” PROGRAMA RADIOFÓNICO NATURALEZA, CIENCIA, ARMONÍA HORARIO DE TRANSMISIÓN: 17:00-17:30 HRS. El objetivo último de Linus era implementar un sistema operativo POSIX en su ordenador , pero empezó realizando un sistema extremadamente sencillo . Linus decidió hacer su sistema libre y accesible a todos a través de Internet . Esto posibilitó que mucha gente probara el sistema y reparara fallos . La primera versión pública de Linux fue la 0.02, en octubre de 1991. Pronto gran cantidad de colaboradores empezaron a escribir código del núcleo de Linux. Debido a la mucha gente que probó Linux en diferentes configuraciones, el sistema se mostró como extremadamente estable y seguro. Gran parte del éxito de Linux es debida a la red Internet . La red posibilitó que cientos de desarrolladores de todas partes del mundo trabajaran conjuntamente para crear un gran trabajo de programación como es Linux . Ciertamente, no es una casualidad que la explosión de la Web y de Linux se produjeran casi simultáneamente , en 1995. Tanto Linux como Internet son éxitos de la colaboración abierta y de la cooperación de muchas personas con un objetivo común. Linux es usado por multitud de empresas y organismos por su reconocida estabilidad y escalabilidad . Es el sistema operativo más usado en servidores de Internet , y por sus grandes ventajas en red, es usado como servidor central en redes mixtas de muchas empresas. El futuro se presenta prometedor para Linux . Cada vez más empresas y particulares confiá n en él como sistema operativo . En los últimos tiempos ha ido ganando terreno en las computadoras de escritorio par a aplicaciones personales. También está siendo cada diá más utilizado como plataforma de ocio. La orientación de Linux hacia aplicaciones de escritorio no le ha hecho perder su estabilidad y capacidad para aplicaciones críticas. Mucha gente considera que Linux será el sistema operativo dominante en los próximos años. Referencias TANENBAUM, ANDREW S. “Sistemas operativos modernos” . Tercera edición. Ed. PEARSON EDUCACIÓN , México, 2009. ISBN: 978-607-442-046-3 “Qué es el software libre”. www.casanas.com.ar Parte B Página 1/6. La XEGLO “LA VOZ DE LA SIERRA JUÁREZ” forma parte del Sistema de Radiodifusoras Culturales Indigenistas de la Comisión Nacional para el Desarrollo de los Pueblos Indígenas (CDI), y transmite en el 780 AM/10000 watts desde su dirección en Domicilio Conocido; Guelatao de Juárez, Oaxaca. C.P. 68778. Teléfono y fax: 01 (951) 553 60 11 Transmite también a través del Sistema de Radio Intercultural en Internet: http://ecos.cdi.gob.mx/ UNIVERSIDAD DE LA SIERRA JUÁREZ XEGLO “LA VOZ DE LA SIERRA JUÁREZ” PROGRAMA RADIOFÓNICO NATURALEZA, CIENCIA, ARMONÍA HORARIO DE TRANSMISIÓN: 17:00-17:30 HRS. CALENDARIO DE PARTICIPACIONES Fecha 15 de Octubre 22 de Octubre 29 de Octubre 05 de Noviembre 12 de Noviembre 19 de Noviembre 26 de Noviembre 03 de Diciembre 10 de Diciembre 17 de Diciembre 24 de Diciembre 31 de Diciembre 07 de Enero 14 de Enero 21 de Enero 28 de Enero 04 de Febrero 11 de Febrero 18 de Febrero 25 de Febrero 04 de Marzo Locutor Dr. Víctor Aguirre Hidalgo M. C. Oscar Francisco Mijangos Ricardez Dr. José Arturo Casasola González Dr. Jaime López Luna Lic. Pedro Ronel Vásquez Díaz M.P.O. Abel Cipriano Martínez M.C. Mauricio García Johnson M. C. David Sarmiento Bustos M.C. Armando Ronquillo Jorge M.T.I. Leobardo Santiago Paz M.A.D. Mireya López Luna M.C. Alejandra Acosta Ramos División de Estudios de Postgrado Jefatura de Carrera de Ciencias Ambientales Lic. Arlette del Carmen Pérez González Jefatura de Carrera de Ingeniería Forestal Vicerectoría Académica Lic. Arlette del Carmen Pérez González Jefatura de Carrera de Informática Jefatura de Carrera de Biología Jefatura de Carrera de Tecnología de la Madera Coordinadora del Programa: M. C. María Magdalena Mendoza Díaz e-mail: mmmendozad@juppa.unsij.edu.mx Visita: http://www.unsij.edu.mx/