Linux domina el planeta, desde juguetes, electrodomésticos, móviles, satélites y mas del 95% de las supercomputadoras en el mundo.
Linux tiene una gran historia, pero para entenderla debemos conocer de dónde provino el sistema operativo más usado en el planeta y que domina casi todos los dispositivos en nuestra vida.
Todos excepto la computadora de escritorio.
De Unix a Linux
En los años 40 y 50 las computadoras personales eran máquinas enormes, pero solo una persona podía usarlas en un momento dado.
Años después (En la década de los sesentas) se utilizaban mucho los sistemas por lotes, y trabajaba con tarjetas perforadas.
Y Una vez que se reunía los trabajos, el operador los introducía en la máquina como un solo lote y normalmente tardaba una hora o más para devolver las salidas.
En tales circunstancias, la depuración era muy tardada, pues incluso por una sola coma fuera de lugar hacía que varias horas del programador fuesen desperdiciadas.
Para eliminar tal problema, se inventó el tiempo compartido en Dartmouth College y en MIT.
Éste sistema sólo ejecutaba BASIC y tuvo éxito antes de desaparecer.
El sistema del MIT, CTSS, era de uso general y tuvo un éxito enorme en la comunidad científica.
En poco tiempo, los investigadores del MIT se unieron a Bell Labs y General Electric para diseñar un sistema de segunda generación, el cual fue llamado MULTICS.
A pesar que Bell Labs fue socio fundador del proyecto, se apartó poco después de él.
A lo cual, uno de los investigadores, llamado Ken Thompson, decidió escribir un MULTICS austero en código ensamblador en una minicomputadora PDP-7 que ya nadie usaba.
Unix
El sistema MULTICS funcionó bien por lo cual Brian Kemighan, lo llamó UNICS.
Aunque después sufrió un cambio de ortografía a UNIX.
Poco tiempo después se unió Dennis Ritchie, y junto con él, todo su departamento.
Thompson decidió rescribir UNIX, y utilizó un lenguaje de alto nivel que fue creado por él, al que llamó B, y BCPL simplificado, y a su vez éste era una simplificación de CPL.
Pero debido a carencias de B, el intento fue un fracaso.
Por lo que Ritchie diseñó el lenguaje C, y juntos, Thompson y Ritchie rescribieron UNIX en C.
Todo esto conllevó a que años más tarde, en la década de los 80, se usaran dos versiones diferentes del sistema, y por un lado, ambas incompatibles con UNIX, que serían tanto la 4.3 BSD y System V Release 3.
Aunque se hicieron varios intentos por estandarizarlo que no tuvieron éxito, la IEEE standars Borad lo logró, el resultado fue el sistema llamado POSIX, que significa “Sistema Operativo Portátil” (Portable Operating System); y el sufijo IX es para que tuviera un parecido a la palabra UNIX.
Poco después entra MINIX, que sería una labor colectiva, a lo que muchas personas solicitaban funcionalidades, pero el autor por lo regular se negaba a realizar cambios, pues su objetivo era que el sistema fuera muy pequeño para que los estudiantes pudieran verlo en un semestre en la Universidad.
Linux
La negativa a añadir funcionalidades pedidas por los usuarios hizo que un joven estudiante finlandés, llamado Linux Torvalds, decidiera crear otro clon de UNIX, al que llamó Linux, el cual tendría funciones de las que MINIX no tenía.
Versiones
El 3 de julio de 1991 acontecieron las primeras discusiones sobre Linux en un grupo de noticias comp.os.minix.
La primera versión (0.01), se liberó el 25 de agosto, ni siquiera podía ejecutarse, solo incluía los principios del núcleo, y estaba escrita en ensamblador pero asumía que se tenía acceso a un sistema Minix para poder compilarlo.
Se desarrolló en forma cruzada en una máquina MINIX y tomó algunas ideas de ella.
Ya por el 5 de octubre de ese año se anunció lo que fue la primera versión del código fuente (0.02).
Con esta versión Linus pudo ejecutar Bash y gcc pero nada mas eso funcionaba.
En marzo de 1992 se alcanzó la versión 0.95 y por vez primera se podía ejecutar el sistema X-windows.
Para diciembre de 1993 el núcleo ya alcanzaba la versión 0.99 y la 1.0.0 llegó hasta el 14 de marzo de 1994, y fue hasta el 9 de Mayo 1996 que Tux fue propuesto como la mascota oficial del sistema Linux.
La serie 2x recorrió un largo camino, el 9 de junio de 1996 fue lanzada, y la serie 2.2.x lo fue hasta 3 años después, el 25 de enero de 1999 mientras que la serie 2.4.x no fue, sino hasta el 4 de enero del 2001.
La serie (2.6x) se lanzó el 17 de diciembre del 2003, 7 años después que la primera serie de 2x.Características
Multitarea
- La palabra multitarea describe la habilidad de ejecutar varios programas al mismo tiempo.
- LINUX utiliza la llamada multitarea preventiva, la cual asegura que todos los programas que se están utilizando en un momento dado serán ejecutados, siendo el sistema operativo el encargado de ceder tiempo de microprocesador a cada programa.
Multiusuario
- Muchos usuarios usando la misma máquina al mismo tiempo.
Multiplataforma
- Las plataformas en las que en un principio se puede utilizar Linux son 386-, 486-. Pentium, Pentium Pro, Pentium II, Amiga y Atari, también existen versiones para su utilización en otras plataformas, como amd64, Alpha, ARM, MIPS, PowerPC y SPARC.
Multiprocesador
- Soporte para sistemas con más de un procesador está disponible para Intel, AMD y SPARC.
- Funciona en modo protegido 386.
- Protección de la memoria entre procesos, de manera que uno de ellos no pueda colgar el sistema.
Carga de ejecutables por demanda
- Linux sólo lee del disco aquellas partes de un programa que están siendo usadas actualmente.
Política de copia en escritura para la compartición de páginas entre ejecutables
- Significa que varios procesos pueden usar la misma zona de memoria para ejecutarse.
- Cuando alguno intenta escribir en esa memoria, la página (4Kb de memoria) se copia a otro lugar.
- Esta política de copia en escritura tiene dos beneficios: aumenta la velocidad y reduce el uso de memoria.
Memoria virtual usando paginación (sin intercambio de procesos completos) a disco
- A una partición en el sistema de archivos, con la posibilidad de añadir más áreas de intercambio sobre la marcha.
- La memoria se gestiona como un recurso unificado para los programas de usuario y para el cache de disco, de tal forma que toda la memoria libre puede ser usada para cache y ésta puede a su vez ser reducida cuando se ejecuten grandes programas.
Librerías compartidas de carga dinámica (DLL’s) y librerías estáticas
- Se realizan volcados de estado (core dumps) para posibilitar los análisis post-mortem, permitiendo el uso de depuradores sobre los programas no sólo en ejecución sino también tras abortar éstos por cualquier motivo.
- Compatible con POSIX, System V y BSD a nivel fuente.
Emulación de iBCS2, casi completamente compatible con SCO, SVR3 y SVR4 a nivel binario
- Todo el código fuente está disponible, incluyendo el núcleo completo y todos los drivers, las herramientas de desarrollo y todos los programas de usuario.
- Además todo ello se puede distribuir libremente.
- Hay algunos programas comerciales que están siendo ofrecidos para Linux actualmente sin código fuente, pero todo lo que ha sido gratuito sigue siendo gratuito.
- Control de tareas POSIX.
- Pseudo-terminales (pty’s).
- Emulación de 387 en el núcleo, de tal forma que los programas no tengan que hacer su propia emulación matemática.
- Cualquier máquina que ejecute Linux parecerá dotada de coprocesador matemático.
- Por supuesto, si el ordenador ya tiene una FPU (unidad de coma flotante), esta será usada en lugar de la emulación, pudiendo incluso compilar kernel propio sin la emulación matemática y conseguir un pequeño ahorro de memoria.
- Soporte para muchos teclados nacionales o adaptados y es bastante fácil añadir nuevos dinámicamente.
Consolas virtuales múltiples
- Varias sesiones de login a través de la consola entre las que se puede cambiar con las combinaciones adecuadas de teclas (totalmente independiente del hardware de video).
- Se crean dinámicamente y se puede tener hasta 64.
Soporte para varios sistemas de archivo comunes
Incluye minix-1, Xenix y todos los sistemas de archivo típicos de System V, y tiene un avanzado sistema de archivos propio con una capacidad de hasta 4 Tb y nombres de archivos de hasta 255 caracteres de longitud.
Acceso transparente a particiones MS-DOS (o a particiones OS/2 FAT) mediante un sistema de archivos especial: no es necesario algún comando especial para usar la partición MS-DOS, ésta parece un sistema de archivos normal de Unix (excepto por algunas restricciones en los nombres de archivo, permisos, y esas cosas).
Las particiones comprimidas de MS-DOS 6 no son accesibles por el momento, y no se espera que lo sean en el futuro.
El soporte para VFAT, FAT32 (WNT, Windows 95/98) se encuentra soportado desde la versión 2.0 del núcleo y el NTFS de WNT desde la versión 2.2 (Este último solo en modo lectura).
Soporte en sólo lectura de HPFS-2 del OS/2 2.1
Sistema de archivos de CD-ROM que lee todos los formatos estándar de CD-ROM.
TCP/IP, incluyendo ssh, ftp, telnet, NFS, etc.
Appletalk.
Software cliente y servidor Netware.
Lan Manager / Windows Native (SMB), software cliente y servidor.
Diversos protocolos de red incluidos en el kernel: TCP, IPv4, IPv6, AX.25, X.25, IPX, DDP, Netrom, etc.
GNU/Linux
Como se menciona anteriormente, desde 1984 se venía trabajando en un Proyecto con la meta de desarrollar un sistema libre de tipo Unix, llamado GNU, y cuando se escribió el sistema Linux, el GNU estaba ya casi terminado.
GNU no era, y no es ahora, un proyecto para desarrollar paquetes específicos, más bien su propósito es desarrollar un sistema libre de tipo Unix.
A principios de los años 90 se había preparado todo el sistema salvo el núcleo.
El desarrollo de este núcleo se retrasó (el GNU Hurd empezó a funcionar de manera fiable en 2001), pero no hubo que esperarlo, porque Linux ya estaba disponible.
Así cuando Linus Torvalds escribió Linux, se pudo colocarlo junto al sistema GNU para obtener un sistema libre completo: esto es entonces una versión basada en Linux del sistema GNU; es decir, el sistema GNU/Linux.
De esta unión, los principales obstáculos fueron el Hardware y las bibliotecas, ya que los fabricantes de hardware en pleno uso de su derecho de proteger las especificaciones de sus productos, dificultan el soporte del mismo, y los programadores se ven en la necesidad de buscar soluciones para ello, como la ingeniería inversa.
Bibliotecas
Por otro lado las bibliotecas no libres afecta a todos los programas en los cuales es utilizada, limitándolos a las restricciones de sus licencias, un claro ejemplo de esto fue el GUI (Graphical User Interface) denominado Qt que fue incorporado a un escritorio que ganó gran aceptación, llamado KDE.
Y si bien los sistemas libres GNU/Linux no pueden emplear dicha biblioteca, algunas distribuciones comerciales decidieron si hacerlo dando como resultado un sistema con más posibilidades, pero menos libertad.
A lo cual la comunidad del Software Libre reaccionó con GNOME (GNU Network Object Model Envireonment) liderado por Miguel de Icaza en 1997, apoyado por la Red Hat Software; proporcionando entre sus ventajas de ser completamente libre, la de ser compatible con varios lenguajes.
1 Comentario
Programación Reactiva, un paradigma necesario para los tiempos actuales – Tenea Tecnologías · 11 febrero, 2019 a las 08:53
[…] Unix derivó, a su vez, hacia todas las distribuciones Linux: Debian, Red Hat, Fedora, Centos, Darwin, Ubuntu, etc. y posiblemente será el SO que perdure en la historia de la humanidad, por el principio de portabilidad con el que fue diseñado. No hay que olvidar que parte del sistema se programó con tarjetas perforadas sobre un DEC PDP7. […]