Software Definición de Software: El software es el conjunto de instrucciones que las computadoras emplean para manipular datos. Sin el software, la computadora serÃ−a un conjunto de partes fÃ−sicas que no se puede utilizar, es por eso que al cargar los programas en una computadora, la máquina actúa como si recibiera una educación instantánea, de pronto "sabe" cómo pensar y cómo operar. Podemos decir entonces que es: el conjunto de instrucciones individuales que se le proporciona al microprocesador, para que pueda procesar los datos y generar los resultados esperados. El hardware por si solo no puede hacer nada, pues es necesario que exista el software. Según el uso para el cual fueron creados, el Software se clasifica en software de base o Sistema y software de aplicación. Software de base o sistema: El Software de Base es el programa o conjunto de programas que interactúa con el hardware, el software de aplicación y el usuario. 1.- Se pueden imaginar al software de base como los programas que hacen utilizable el hardware. El hardware proporciona la "capacidad bruta de cómputo"; el software de base pone dicha capacidad de cómputo al alcance de los usuarios y administra cuidadosamente el hardware para lograr un buen rendimiento. 2.- El software de base son ante todo administrador de recursos; el principal recurso que administra es el hardware de la computadora. 3.- Es un programa que actúa como intermediario entre el usuario y el hardware del computador y su propósito es proporcionar el entorno en el cual el usuario pueda ejecutar programas. Entonces, el objetivo principal es, lograr que el sistema de computación se use de manera cómoda, y el objetivo secundario es que el hardware del computador se emplee de manera eficiente. El software de base o sistema también recibe el nombre de Sistema Operativo. Sistemas Operativos: Clasificación El software de base es el encargado de la interacción entre el usuario, el hardware y el software de aplicación, y de acuerdo a la forma de operar y la cantidad de personas que pueden utilizarlo al mismo tiempo los podemos clasificar en: Monousuario - Monotarea Multiusuario - Monotarea Monousuario - Multitarea Multiusuario - Multitarea Los sistemas operativos Monotarea son capaces de realizar una única tarea o programa a la vez. 1 Los sistemas operativos Multitarea son capaces de realizar varias tareas o programas simultáneamente. Los sistemas operativos Monousuario están diseñados para que la computadora sea operada por una sola persona. Son los que emplean habitualmente en las PC's. Los sistemas operativos Multiusuario permiten, desde una computadora central y mediante distintas formas de conexión con la misma, ser utilizados por varias personas simultáneamente Historia de los Sistemas Operativos. Para comprender los requisitos de éstos y el significado de MM principales caracterÃ−sticas de un Sistema Operativo contemporáneo, es útil considerar como han ido evolucionando los Sistemas Operativos con el tiempo. Existen diferentes enfoques o versiones de como han ido evolucionando estos Programas. La primera de estas versiones es: En los 40's, se introducen los programas bit a bit, por medio de interruptores mecánicos y después se introdujo el lenguaje de máquina que trabajaba por medio de tarjetas perforadas. Con las primeras computadoras, desde finales de los años 40 hasta la mitad de los años 50, el programador interactuaba de manera directa con el hardware de la computadora, no existÃ−a realmente un Sistema Operativo; las primeras computadoras utilizaban bulbos, la entrada de datos y los programas se realizaban a través del lenguaje máquina (bits) o a través de interruptores. Durante los años 50's y 60's.- A principio de los 50's, la compañÃ−a General's Motors implanto el primer sistema operativo para su IBM 170. Empiezan a surgir las tarjetas perforadas las cuales permiten que los usuarios (que en ese tiempo eran programadores), se encarguen de modificar sus programas. EstablecÃ−an o apartaban tiempo de ejecución, metÃ−an o introducÃ−an sus programas en la computadora, corregÃ−an y depuraban sus programas en el tiempo disponible para utilizar la computadora1. A esto se le llamaba trabajo en serie. Todo esto se traducÃ−a en pérdida de tiempo y tiempos de programas excesivos. En los años 60's y 70's se genera el circuito integrado, se organizan los trabajos y se generan los procesos Batch (por lotes), lo cual consiste en determinar los trabajos comunes y realizarlos todos juntos de una sola vez. En esta época surgen las unidades de cinta y el cargador de programas, el cual se considera como el primer tipo de Sistema Operativo. En los 80's, inició el auge de la INTERNET en los Estados Unidos de América. A finales de los años 80's comienza el gran auge y evolución de los Sistemas Operativos. Se descubre el concepto de multiprogramación que consiste en tener cargados en memoria a varios trabajos al mismo tiempo, tema principal de los Sistemas Operativos actuales. Los 90's y el futuro, entramos a la era de la computación distribuida y del multiprocesamiento a través de múltiples redes de computadoras, aprovechando el ciclo del procesador. Se ha desarrollado otra versión, la cual se ha hecho en base a etapas o generaciones: 1a. Etapa (1945-1955) : Bulbos y conexiones. Después de los infructuosos esfuerzos de Babbage, hubo poco progreso en la construcción de las computadoras digitales, hasta la Segunda Guerra Mundial. A mitad de la década de los 40's, Howard Aiken 2 (Harvard), John Von Newman (Instituto de Estudios Avanzados, Princeton), J. Prespe R. Eckert y Williams Mauchley (Universidad de Pennsylvania), asÃ− como Conrad Zuse (Alemania), entre otros lograron construir máquinas de cálculo mediante bulbos. Estas máquinas eran enormes y llenaban cuartos completos con decenas de miles de bulbos, pero eran mucho más lentas que la computadora casera más económica en nuestros dÃ−as. Toda la programación se llevaba a cabo en lenguaje de máquina absoluto y con frecuencia se utilizaban conexiones para controlar las funciones básicas de la máquina. El programador iba al cuarto de la máquina, insertaba su conexión a la computadora y pasaba unas horas esperando que ninguno de los 20,000 o más bulbos se quemara durante la ejecución. La inmensa mayorÃ−a de los problemas eran cálculos numéricos complejos. A principio de la década de los 50's la rutina mejoro un poco con la introducción de las tarjetas perforadas. Fue entonces posible escribir los programas en ellas, las que se leÃ−an en vez de insertar conexiones, por lo demás el proceso era el mismo. 2a. Etapa. (1955-1965) : Transistores y Sistemas de Procesamiento por lotes. La introducción del transistor a mediados de los años 50's modificó en forma radical el panorama. Las computadoras se volvieron confiables de forma que podÃ−an fabricarse y venderse a clientes. Dado el alto costo del equipo, las personas buscaron formas más eficientes para reducir el tiempo a invertir. La solución que se adoptó, por lo general , fue la del método de procesamiento por lotes. 3ra Etapa (1965-1980 ) : Circuitos integrados y multiprogramación. La 3602 de IBM fue la primera lÃ−nea principal de computadoras que utilizó los circuitos integrados, lo que proporcionó una gran ventaja en el precio y desempeño con respecto a las máquinas de la segunda generación, construidas a partir de transistores individuales. Se trabajo con un sistema operativo enorme y extraordinariamente complejo, pero a pesar de eso, el sistema operativo de la lÃ−nea IBM 360 y los sistemas operativos similares de esta generación producidos por otros fabricantes de computadoras realmente pudieron satisfacer, en forma razonable a la mayorÃ−a de sus clientes. También popularizaron varias técnicas fundamentales, ausentes de los sistemas operativos de la segunda generación, de las cuales la mas importante era la de multiprogramación. Otra caracterÃ−stica era la capacidad de leer trabajos de las tarjetas al disco, tan pronto como llegara al cuarto de cómputo. AsÃ−, siempre que concluyera un trabajo el sistema operativo podÃ−a cargar un nuevo trabajo del disco en el espacio que tuviera desocupado y luego ejecutarlo. 4ta Etapa (1980-Actualidad) : Computadoras personales. Un interesante desarrollo que comenzó a llevarse a cabo a mediados de la década de los ochenta y ha sido el crecimiento de las redes de computadoras personales, con sistemas operativos de red y sistemas operativos distribuidos. En los sistema operativo de red, los usuarios están conscientes de la existencia de varias computadoras y pueden conectarse con máquinas remotas y copiar archivos de una máquina a otra. Cada máquina ejecuta su propio sistema operativo local y tiene su propio usuario. Por el contrario, un sistema operativo distribuido es aquel que aparece ante sus usuarios como un sistema tradicional de un solo procesador, aun cuando esté compuesto por varios procesadores. En un sistema distribuido verdadero, los usuarios no deben ser conscientes del lugar donde su programa se ejecute o de lugar donde se encuentren sus archivos; eso debe ser manejado en forma automática y eficaz por el sistema 3 operativo. Software de aplicación: El software de aplicación incluye programas que se ejecutan para realizar trabajos relacionados con áreas especÃ−ficas, (también llamadas aplicaciones), pero, para utilizarlo, es preciso que exista un software de sistema que permita su ejecución. En otras palabras llamamos software de aplicación a los programas que utilizamos habitualmente para realizar nuestras tareas cotidianas con la computadora. Ejemplos de software de aplicación : • Tratamiento de Imágenes (PhotoShop, Paint Shop Pro) • Dibujo (Corel Draw) • Procesamiento de texto (Word) • Planillas de cálculo (Excel) • Bases de Datos (Access, Oracle, Mysql) • Navegación por Internet (Netscape, Internet Explorer, Opera ) • Correo Electrónico (Outlook, Netscape Mail) • Irc,ICQ • Programación Para poder realizar su función, el software de aplicación necesita 2 elementos: • El Hardware • El software de base EL SISTEMA OPERATIVO LINUX La historia de LINUX está muy ligada a UNIX, entonces para empezar, conoceremos un poco de la historia de este último. Antes de los 50' las computadoras eran monousuario, ya que sólo una persona podÃ−a estar trabajando en ellas al mismo tiempo. Mas adelante, al comienzo de los 60' las empresas MIT, AT&T y General Electric se juntaron para realizar un gran proyecto, se trataba de hacer un SO de gran potencia al que denominaron MULTICS. El proyecto fue un fracaso pero uno de los programadores del MIT que hbrÃ−a trabajado en el proyesto, Ken Thompson, y un grupo de colaboradores decidieron escribir una versión miniatura de Multics. Uno de los compañeros de Ken, Brian Kernigham, en una reunión de equipo bromeando llamó al sistema de Ken Thompson UNICS. UNICS fue un gran éxito y Ken decidió que UNIX era un nombre más atractivo que UNICS, habÃ−a nacido UNIX. Un famoso artÃ−culo del año 1974 que describÃ−a UNIX atrajo la atención de las universidades que solicitaron el código fuente para estudiarlo y explicarlo en las aulas. Muy pronto, UNIX logró una gran aceptación en la comunidad cientÃ−fica y el interés por este sistema operativo comenzó a extenderse. A partir de este momento comienza una verdadera avalancha de versiones del sistema, lo que en principio fue un proyecto de investigación se convirtió más tarde en un gran negocio. Los más importante de todas las versiones de UNIX fueron la BSD y la System V, la primera de la Universidad de Califronia en Berkeley, contenÃ−a una serie de mejoras que hicieron a UNIX un sistema 4 operativo más amigable. La última surgió de la fusión de las respectivas versiones de UNIX de AT&T Bell Laboratories, los creadores del sistema, y Sun Microsystems. Actualmente el System V es considerado el estándar de UNIX, ya que toda la industria ha sido agrupada entorno a él. La aparición de Minix A pesar del éxito comercial de UNIX y de su aceptación como sistema operativo, el código fuente de UNIX no podÃ−a ser explicado en aulas universitarias, de modo que el desarrollo de sistemas operativos volvÃ−a a ser una ciencia restringida a un reducido grupo de empresas y personas. Ante esta situación, el profesor Andrew Tenembaum, de la Universidad de Vrije, en Amsterdan, decidió imitar a Ken Thompson cuando escribió el código UNIX basándose en MULTICS, e inspirándose en UNIX llevó a cabo un nuevo sistema operativo mucho mas reducido, al que llamó MINIX (de Mini-UNIX). MINIX habÃ−a sido desarrollado en una IBM PC y, si embrago ofrecÃ−a las mismas llamadas al sistema que UNIX V7. Tenembaum hizo público el código de MINIX, y su texto aún se usa en la mayorÃ−a de las universidades del planeta para enseñar las bases del diseño de sistemas operativos. Linux al fin En 1990, Linus Torvals, un estudiante de 23 años de la Universidad de Helsinki, en Finlandia, comenzó a desarrollar, como hobby, un proyecto basado en el MINIX de Andrew Tenembaum. QuerÃ−a llevar a cabo, sobre una computadora con procesador Intel 80389, un sistema operativo tipo UNIX que ofreciese más capacidades que el limitado MINIX, que solo se usaba para enseñar una cierta filosofÃ−a de diseño. QuerÃ−a aprovechar la arquitectura de 32 bits, las propiedades de conmutación de tareas que incorporaba la interfaz en modo protegido 80386 y elminar las barreras del direccionamiento de memoria. Linus empezó escribiendo el núcleo3 del proyecto en ensamblador, y luego comenzó a añadir códico en C, lo cual incrementó la velocidad de desarrollo, e hizo que empezara a tomarse en serio su idea de hacer un “MINIX mejor que MINIX”. La primera versión, la 0.01 no tenÃ−a driver de disquete, y ni siquiera la dio a conocer. Llevaba incorporado un pequeño sistema de archivos y un driver de disco con muchos errores...pero funcionaba. En octubre de 1991, anuncio la primera versión “oficial” de LINUX, la 0.02, que ya era capaz de ejecutar el SHELL bash y el compilador gcc de GNU. En comp.os.minix, un foro de discusión en Internet acerca del sistema operativo de Tenembaum, Linus Torvals escribió un llamamiento que comenzaba con una famosa frase: ¿Añoras los maravillosos dÃ−as del MINIX-1.1, cuando los hombres eran hombres y escribÃ−an sus propios drivers? ¿Careces de proyectos interesantes y te mueres por desafiar a un sistema operativo que puedas modificar a tu antojo? ¿Te resulta raro que todo funciones con MINIX? ¿Estás harto de trasnochar para poder conseguir que funcione un programa? Entonces, esta carta puede ser justamente para ti. Como comenté hace un mes, estoy trabajando en una versión libre de un sistema tipo MINIX para computadoras AT-386. Finalmente ha sido mejorado el entorno, que incluso se puede utilizar, y estoy deseoso de sacar las fuentes de una distribución más potente. Es solo la versión 0.02...pero ha conseguido que funcione bien bash, gcc, gnu-make, gnu-se, compress, etc; bajo él. 5 A partir de ahÃ−, el sistema de Linus empezó a crecer. De todas partes le llegaban cartas interesándose por la idea, y comenzaron a desarrollarse proyectos destinados a incrementar la potencia de la plataforma. Debemos destacar que muchos de los componentes de Linux, como drivers, protocolos o shells salieron de otro sistema UNIX de libre distribución llamado FreeBSD, desarrollado en la Universidad de Berkeley. Pero sin duda, el factor esencial y determinante del éxito y la rápida difusión de este sistema operativo ha sido la red de redes, Internet. A través de foros de discusión y noticias, miles de personas de todo el mundo se han propuesto demostrar que, sin media tiranÃ−a y los intereses económicos delas empresas, se pueden conseguir productos que incluso superen en calidad a los desarrollados COMENTARIOS: 1 Hay que tener en cuenta que en esa época la potencia de computación era muy limitada y habÃ−a muchos usuarios por computadora, por lo que se le asignaba un tiempo de ejecución (utilización) a cada uno. 2 Esta lÃ−nea de computadoras luego será conocida como Mainframe. 3 En inglés Kernel. 6