GNU/Linux: Arquitectura básica del sistema

Publicado por Diego Córdoba en

Hoy hablaremos de algunos aspectos a tener en cuenta para entender cómo se organiza un sistema operativo en general, y en particular, nuestro GNU/Linux.

El sistema operativo es, en sí, una interfaz de software que nos permite a nosotros, como humanos, interactuar con los dispositivos de hardware.

Esta interfaz está dividida en varias capas, cada una de las cuales tendrá una funcionalidad específica.

Analicemos el siguiente diagrama:gnu/linux

El hardware, como se ve, se encuentra en el centro de la figura, y tenemos varias «capas» de software que lo envuelven, siendo el operador externo quien interactúa, desde afuera, con todo el esquema.

El hardware es el conjunto de dispositivos físicos del ordenador, llámese memoria RAM, almacenamiento secundario, discos, ssd, microprocesadores, puertos de comunicación, etc.

El kernel Linux

Por su parte, el kernel del sistema es una capa de software que recubre al hardware, y que contiene muchas utilidades incorporadas.

Primero y principal, el kernel se comunica con el hardware por medio de controladores de dispositivos, o drivers. Estos controladores son programados por los propios fabricantes de los dispositivos, o, en su defecto, por programadores de Linux que realizan ingeniería inversa sobre dirvers privativos (como ser el caso de noveau para nvidia).

El kernel también brinda otras utilidades, que podrían, a groso modo, englobarse en los siguientes áreas:

  • Administración de memoria virtual
  • Administración de procesos
  • Administración de Entrada/Salida
  • Administración de red

Con estas características, nuestro kernel podrá planificar procesos en el proceasdor, gestionar recursos de almacenamiento principal, como ser memoria RAM, y espacio de intercambio (swap), y gestionar las peticiones de entrada/salida con cualquier dispositivo e interfaz de red.

El sistema operativo GNU

Una capa externa al kernel es la del propio sistema operativo, y sus aplicaciones. El sistema operativo se compone, entre otras cosas, de utilidades como editores de texto (vi/vim, Emacs, nano, …), compiladores (GCC), intérprete de comandos (Bash, sh, rsh, python, …), entre otras.
El sistema operativo es el encargado de brindar soporte a aplicaciones de usuario, mediante intérpretes de órdenes, como ser una shell de línea de comandos, o un entorno gráfico, ya sea un  entorno de escritorio completo, o simples administradores de ventanas.

La interfaz de llamadas al sistema

Existe un elemento intermedio entre el kernel Linux y el sistema GNU, que no figura en la gráfica, y que se denomina Interfaz de llamadas al sistema, o «syscall». Esta interfaz, conocida como POSIX.1, provee al sistema operativo un API, o interfaz de programación de aplicaciones, que no es otra cosa que una serie de funciones del kernel que pueden ser accedidas desde el sistema operativo mediante llamadas. Así es como el sistema operativo puede comunicarse con el kernel, enviarle instrucciones, y recibir resultados.gnu/linux

La shell de usuario en GNU/Linux

Se unen, bajo el concepto de shell de usuario, las aplicaciones de usuario comunes, como paquetes de ofimatica, navegadores web, etc.

Aquí tenemos dos tipos de aplicaciones, aquellas que corren por línea de comandos, como los comandos comunes de linux, y la mayor parte de los servicios, y aplicaciones gráficas, que corren sobre terminales gráficas montadas en un servidor gráfico llamado Servidor X.

Así, toda aplicación que estemos ejecutando, correrá en una terminal, ya sea de texto, o gráfica.

Espero les sea de utilidad para entender el sistema un poco más!

¡Hasta la próxima!


Diego Córdoba

- Ingeniero en Informática - Mg. Teleinformática - Tesis pendiente - Docente universitario - Investigador