martes, 19 de junio de 2012

Linux

Linux
Linux es un núcleolibre de sistema operativo basado en Unix. Es uno de los principales ejemplos de software libre. Linux está licenciado bajo la GPL v2 y está desarrollado por colaboradores de todo el mundo. El desarrollo del día a día tiene lugar en la Linux KernelMailingList Archive
El núcleo Linux fue concebido por el entonces estudiante de ciencias de la computaciónfinlandés, LinusTorvalds, en 1991. Linux consiguió rápidamente desarrolladores y usuarios que adoptaron códigos de otros proyectos de software libre para su uso en el nuevo sistema operativo. El núcleo Linux ha recibido contribuciones de miles de programadores. Normalmente Linux se utiliza junto a un empaquetado de software, llamado distribución Linux.

Arquitecturas

Diagrama del núcleo 2.4.0.
Actualmente Linux es un núcleo monolítico híbrido. Los controladores de dispositivos y las extensiones del núcleo normalmente se ejecutan en un espacio privilegiado conocido como anillo 0 (ring 0), con acceso irrestricto al hardware, aunque algunos se ejecutan enespacio de usuario. A diferencia de los núcleos monolíticos tradicionales, los controladores de dispositivos y las extensiones al núcleo se pueden cargar y descargar fácilmente como módulos, mientras el sistema continúa funcionando sin interrupciones. También, a diferencia de los núcleos monolíticos tradicionales, los controladores pueden ser prevolcados (detenidos momentáneamente por actividades más importantes) bajo ciertas condiciones. Esta habilidad fue agregada para gestionar correctamente interrupciones de hardware, y para mejorar el soporte de multiprocesamiento simétrico.
El hecho de que Linux no fuera desarrollado siguiendo el diseño de un micronúcleo (diseño que, en aquella época, era considerado el más apropiado para un núcleo por muchos teóricos informáticos) fue asunto de una famosa y acalorada discusión entre LinusTorvalds y Andrew S. Tanenbaum.

Jerarquía de directorios

En Linux existe un sistema de archivos que carga y contiene todos los directorios, redes, programas, particiones, dispositivos, etc. que el sistema sabe reconocer, o por lo menos, identificar. Este sistema de ficheros y directorios, tiene como base al carácter (/); ese mismo carácter sirve también para demarcar los directorios, como por ejemplo: "/home/usuario/imagen.jpg". El directorio especificado por una ruta consistente sólo por este carácter contiene toda la jerarquía de los directorios que constituyen todo el sistema. A este directorio suele llamárselo directorio raíz. En Linux, a los discos no se les asigna una letra como en Windows (p.e. "C:"), sino que se les asigna un directorio de la jerarquía del directorio raíz (/), como por ejemplo: "/media/floppy". Es práctica común en el sistema de ficheros de Linux, utilizar varias sub-jerarquías de directorios, según las diferentes funciones y estilos de utilización de los archivos.[10] Estos directorios pueden clasificarse en:
  • Estáticos: Contiene archivos que no cambian sin la intervención del administrador (root), sin embargo, pueden ser leídos por cualquier otro usuario. (/bin, /sbin, /opt, /boot, /usr/bin...)
  • Dinámicos: Contiene archivos que son cambiantes, y pueden leerse y escribirse (algunos solo por su respectivo usuario y el root). Contienen configuraciones, documentos, etc. Para estos directorios, es recomendable una copia de seguridad con frecuencia, o mejor aún, deberían ser montados en una partición aparte en el mismo disco, como por ejemplo, montar el directorio /home en otra partición del mismo disco, independiente de la partición principal del sistema; de esta forma, puede repararse el sistema sin afectar o borrar los documentos de los usuarios. (/var/mail, /var/spool, /var/run, /var/lock, /home...)
  • Compartidos: Contiene archivos que se pueden encontrar en un ordenador y utilizarse en otro, o incluso compartirse entre usuarios.
  • Restringidos: Contiene ficheros que no se pueden compartir, solo son modificables por el administrador. (/etc, /boot, /var/run, /var/lock...)

Kernelpanic

En Linux, un panic es un error casi siempre insalvable del sistema detectado por el núcleo en oposición a los errores similares detectados en el código del espacio de usuario. Es posible para el código del núcleo indicar estas condiciones mediante una llamada a la función de pánico situada en el archivo headersys/system.h. Sin embargo, la mayoría de las alertas son el resultado de excepciones en el código del núcleo que el procesador no puede manejar, como referencias a direcciones de memorias inválidas. Generalmente esto es indicador de la existencia de un bug en algún lugar de la cadena de alerta. También pueden indicar un fallo en el hardware como un fallo de la RAM o errores en las funciones aritméticas en el procesador, o por un error en el software.

Lenguajes de programación

Linux está escrito en el lenguaje de programación C, en la variante utilizada por el compilador GCC (que ha introducido un número de extensiones y cambios al C estándar), junto a unas pequeñas secciones de código escritas con el lenguaje ensamblador. Por el uso de sus extensiones al lenguaje, GCC fue durante mucho tiempo el único compilador capaz de construir correctamente Linux. Sin embargo, Intel afirmó haber modificado su compilador C de forma que permitiera compilarlo correctamente.
Asimismo se usan muchos otros lenguajes en alguna forma, básicamente en la conexión con el proceso de construcción del núcleo (el método a través del cual las imágenes arrancables son creadas desde el código fuente). Estos incluyen a Perl, Python y varios lenguajes shell scripting. Algunos drivers también pueden ser escritos en C++, Fortran, u otros lenguajes, pero esto no es aconsejable. El sistema de construcción de Linux oficialmente solo soporta GCC como núcleo y compilador de controlador.

Portabilidad

Ipod ejecutando un núcleo Linux.

Aun cuando LinusTorvalds no ideó originalmente Linux como un núcleo portable, ha evolucionado en esa dirección. Linux es ahora de hecho, uno de los núcleos más ampliamente portados, y funciona en sistemas muy diversos que van desde iPAQ (una handheld) hasta un zSeries (un mainframe masivo). Está planeado que Linux sea el sistema operativo principal de las nuevas supercomputadoras de IBM, Blue Gene cuando su desarrollo se complete.

Arquitectura de máquina virtual

El núcleo Linux puede correr sobre muchas arquitecturas de máquina virtual, tanto como host del sistema operativo o como cliente. La máquina virtual usualmente emula la familia de procesadores Intel x86, aunque en algunos casos también son emulados procesadores de PowerPC o AMD.

Versiones

Más allá de haber desarrollado su propio código y de integrar los cambios realizados por otros programas, LinusTorvalds continua lanzando nuevas versiones del núcleo Linux. Estos son llamados núcleos “vanilla”, lo que significa que no han sido modificados por nadie. Muchos desarrolladores de distribuciones Linux modifican dicho núcleo en sus productos, principalmente para agregarle soporte a dispositivos o herramientas que no fueron oficialmente lanzadas como estables, mientras que algunas distribuciones, como Slackware, mantienen el núcleo vanilla.

Fechas de publicación


Versión
Fecha
Nota
Ficheros
MiB (bz2)
0.01
17 de septiembre de 1991
InitialPublicRelease
88
8.413
0,267
0,06
0.02
5 de octubre de 1991
-
-
0.11
8 de diciembre de 1991
100
11.907
0,363
0,076
0.95
7 de marzo de 1992
122
19.200
0,533
0,111
1.0.0
13 de marzo de 1994
Primera versión estable
561
170.581
4,633
0,969
1.1.0
6 de abril de 1994
Versión de desarrollo
561
170.320
1.2.0
6 de marzo de 1995
909
294.623
1.3.0
12 de junio de 1995
Versión de desarrollo
992
323.581
2.0.0
9 de junio de 1996
2.015
716.119
21,7
4,499
2.1.0
30 de septiembre de 1996
Versión de desarrollo
1.727
735.736
2.2.0
26 de enero de 1999
4.599
1.676.182
2.3.0
11 de mayo de 1999
Versión de desarrollo
4.721
1.763.358
2.4.0
4 de enero de 2001
8.187
3.158.560
96,8
18,79
2.5.0
23 de noviembre de 2001
Versión de desarrollo
9.893
3.833.603
2.6.0
18 de diciembre de 2003
15.007
5.475.685
170,7
31,7
2.6.25
16 de abril de 2008
23.810
8.396.250
258,8
46,4
2.6.30
10 de junio de 2009
27.878
10.419.567
322,3
56,7
2.6.35
1 de agosto de 2010
33.315
12.250.679
376,2
66,1
3.0
22 de julio de 2011
36.782
13.688.408
410,8
73,2


Soporte de hardware

El núcleo Linux ha sido criticado con frecuencia por falta de controladores para cierto hardware de computadoras de escritorio. Sin embargo, el progresivo incremento en la adopción de Linux en el escritorio ha mejorado el soporte de hardware por parte de terceros o de los propios fabricantes, provocando que, en los últimos años, los problemas de compatibilidad se reduzcan.
Empresas como IBM, Intel Corporation, Hewlett-Packard, Dell o MIPS Technologies tienen programadores en el equipo de desarrolladores del núcleo Linux que se encargan de mantener los controladores para el hardware que fabrican. Este grupo de programadores también se le suman los que provee grandes distribuidores de soluciones Linux como Novell o Red Hat.
Algunas empresas proporcionan controladores de hardware para Linux pero sin liberar el código fuente. Esto implica que se deba depender de ellas para solucionar posibles errores o mejorar los controladores. Dos empresas que hacen esto son Nvidia y AMD, aunque esta última ayudó a la creación de controladores libres liberando especificaciones sobre su hardware y actualmente colabora en el desarrollo de un controlador libre para sus tarjetas gráficas ATI de última generación.


Enlaces de interés:


No hay comentarios:

Publicar un comentario