Linux es un núcleo libre de sistema
operativo basado en Unix.3 Es uno de los principales ejemplos de software libre. Linux está licenciado
bajo laGPL v2 y está desarrollado
por colaboradores de todo el mundo. El desarrollo del día a día tiene lugar en
la Linux Kernel Mailing List
Archive
El núcleo
Linux fue concebido por el entonces estudiante de ciencias de la computación finlandés, Linus Torvalds, 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, llamadodistribución Linux.
Arquitecturas
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 en espacio 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 Linus
Torvalds y Andrew S. Tanenbaum. 9 10
Jerarquía
de directorios
Artículo
principal: Jerarquía de directorios en Linux.
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.11 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...)
Kernel
panic
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 header sys/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. En muchas ocasiones es posible
reiniciar o apagar adecuadamente el núcleo mediante una combinación de teclas
como ALT+SysRq+REISUB.
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
Artículo
principal: Portabilidad del núcleo Linux y
arquitecturas soportadas.
Aun cuando Linus Torvalds 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.
De todos modos, es importante notar que los
esfuerzos de Torvalds también estaban dirigidos a un tipo diferente de
portabilidad. Según su punto de vista, la portabilidad es la habilidad de
compilar fácilmente en un sistema aplicaciones de los orígenes más diversos;
así, la popularidad original de Linux se debió en parte al poco esfuerzo
necesario para tener funcionando las aplicaciones favoritas de todos, ya sean GPL o
de Código abierto.
Las arquitecturas principales soportadas por Linux
son DEC Alpha, ARM, AVR32, Blackfin, ETRAX CRIS, FR-V, H8, IA64, M32R, m68k, MicroBlaze,MIPS, MN10300, PA-RISC, PowerPC, System/390, SuperH, SPARC, x86, x86
64 y Xtensa12
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 ARM.
Formatos
binarios soportados
Linux 1.0 admitía sólo el formato binario a.out.
La siguiente serie estable (Linux 1.2) agregó la utilización del formato ELF,
el cual simplifica la creación de bibliotecas compartidas (usadas de forma
extensa por los actuales ambientes de escritorio como GNOME y KDE).
ELF es el formato usado de forma predeterminada por el GCC desde
alrededor de la versión 2.6.0. El formato a.out actualmente no es usado,
convirtiendo a ELF en el formato binario utilizado por Linux en la actualidad.
Linux tiene la capacidad de permitir al usuario
añadir el manejo de otros formatos binarios. También binfmt_misc permite correr
el programa asociado a un archivo de datos.
No hay comentarios:
Publicar un comentario