GNU/Linux (aunque habitualmente suele conocerse como Linux) es un sistema operativo (SO) libre. Nació a partir del núcleo Linux creado en 1991 por Linus Torvalds. El núcleo (Linux) junto con el resto de aplicaciones que componen un sistema operativo (creadas en el proyecto GNU) es lo que habitualmente conocemos como GNU/Linux o, simplemente, Linux. Actualmente es ampliamente utilizado como servidor web, entre otras cosas por que puede instalarse en diferentes máquinas, es estable y libre. Así, Facebook, Gmail, LinkedIn o Yahoo utilizan servidores GNU/Linux, lo cual puede dar una idea de la importancia de este SO.
Prácticamente todas las empresas de alojamiento web (hosting en inglés) ofrecen planes de alojamiento basados en Linux. También para grandes empresas pueden crearse redes de servidores funcionando con GNU/Linux.
Para simplificar, a partir de este momento, nos referiremos a GNU/Linux como Linux, aunque conviene no olvidar que Linux es tan solo el núcleo del sistema.
El sistema operativo
La función de cualquier sistema operativo (SO) es proporcionar una interfaz para utilizar las prestaciones del hardware de un ordenador. Los programadores acceden a estas prestaciones a través del SO y pueden diseñar aplicaciones de propósito específico para usuarios finales. Éstos, a su vez, utilizan el SO para poder ejecutar dichas aplicaciones.
Linux pertenece a la familia de sistemas denominada Unix y su filosofía está heredada de este tipo de sistemas. En lo que sigue, cuando definamos muchas de las características, funcionamiento e incluso comandos de Linux, podemos asumir que se puede aplicar a prácticamente cualquier sistema Unix con mínimos cambios. Así por ejemplo, ya podemos decir que Linux es un sistema multiusuario y multitarea, es decir, permite a varios usuarios trabajar simultáneamente y ejecutar diversas aplicaciones a la vez. Estas características determinan de forma importante el funcionamiento del sistema, el cual debe garantizar que toda esta carga de trabajo simultánea se lleve a cabo de forma segura y eficiente.
Linux está organizado por capas. La capa más profunda corresponde al hardware, que proporciona una serie de servicios (proceso, gestión de ficheros, impresión, etc.). La única capa que interactúa directamente con el hardware es el núcleo (kernel). De esta manera, los programas no necesitan saber nada sobre el hardware y sólo se comunican con el núcleo. Una de las ventajas de esta estructura es que la mayoría de programas son independientes del hardware y pueden portarse de un modelo de ordenador a otro.
Las aplicaciones que funcionan sobre el núcleo constituyen el último nivel y el único visible para los usuarios. Algunas de estas aplicaciones son utilidades básicas para la gestión de la información y la ejecución de programas y ya vienen con el sistema operativo, por lo que es habitual hablar de Linux refiriéndonos no sólo al núcleo, sino también a dicho conjunto de utilidades, desarrolladas por el proyecto GNU.
- Estructura por capas de un sistema Linux
¿Quién me escucha?
Una de las ideas fundamentales de Linux que deriva de la estructura de capas es que los usuarios no ‘hablan’ directamente con el sistema, sino que lo hacen a través de una aplicación denominada intérprete de comandos (shell). Esta aplicación está constantemente ‘escuchando’ todo lo que el usuario teclea e interpreta (a partir de unas ciertas reglas sintácticas) sus peticiones.
El intérprete de comandos dispone de una serie de comandos internos que él mismo ejecuta, pero, asimismo, puede ejecutar otros comandos externos, pasándoles las opciones que el usuario ha especificado. En la imagen vemos el comando cat que permite visualizar el contenido de un fichero especificado por el usuario. Algunos comandos ejecutan aplicaciones que proporcionan sus propia interfaz y conjuntos de órdenes para interactúar con los usuarios, como el editor de textos vi, que también se muestra como ejemplo en la imagen.