Entender el funcionamiento de un sistema tipo UNIX nos abre los ojos a pensar de maneras diferentes, a ver desde otro ángulo la arquitectura de los sistemas, así que voy a ofrecer una pequeña reseña de los componentes básicos en el funcionamiento de un kernel o núcleo de manera general para sistemas Linux y tipo UNIX. Como base hablaré de cuatro puntos:
1- Los componentes básicos del núcleo.
2- Como es que estos componentes funcionan juntos.
3- Que es lo que hace a un sistema UNIX o Linux lo que es.
4- La diferencia respecto a otros sistemas como Windows.
Puedes llamar al sistema Linux como un sistema operativo completo, que consiste en varias partes de programas y características, pero en este estricto caso se limita al núcleo. Para arrancar un SO, un programa llamado boot loader, que podemos ver en el primer sector de la partición de un disco duro, localiza el kernel, lo carga y tenemos Sistema Operativo iniciado. Un sistema UNIX consiste en capas o partes:
EL KERNEL.
Este es el programa central que hace arrancar por el boot loader, se encarga de las interacciones básicas del hardware con el sistema, sean tareas de lectura y escritura de disco, memoria, controladores de video y sonido, también es el encargado de ofrecer un entorno virtual en el cual se pueden iniciar programas. El kernel también gestiona las interacciones con los drivers del distinto hardware instalado o usado en la maquina como unidades extraibles y soporte para periféricos como teclados o ratones.
SUBSISTEMAS.
Son solamente los programas regulares en una instalación básica de un sistema Linux. Se encargan de manejar cosas como acceso remoto, un bus central de mensajes o notificaciones y ejecutan acciones basadas en eventos del hardware o de red. Por ejemplo las funcionalidades de detección de dispositivos Bluetooth o la administración de redes inalambricas, cualquier servicio de red (servidor de archivos, de impresión o un servidor web).
HERRAMIENTAS DE LINEA DE COMANDOS.
Son pequeños programas que pueden ser ejecutados dentro de linea de comandos o en un emulador de terminal dentro de un sistema con entorno gráfico. Se usan para hacer tareas como edición de texto, descargar archivos o para administrar el sistema. En este punto, los sistemas UNIX son completamente usables para administradores de sistemas.
Librerias.
Los programas más variados hacen lo mismo casi siempre, como mostrar una ventana, dibujar elementos en una ventana o descargar archivos, realizar conexiones de red. Esto es siempre lo mismo, así que los programas comparten librerías separadas, no en la aplicación en sí misma, así la librería puede ser compartida por todos los que la necesiten o dependan de ella. Para casi cualquier cosa imaginable hay una librería. Hay una para leer o escribir archivos PNG, para leer imágenes JPG, leer XML, para encriptar, reproducir o codificar video, etc.
En Linux, las librerias más comunes para desarrollo de aplicaciones son Qt y el famoso GTK. Estas librerías usan internamente otras librerías de bajo nivel para necesidades específicas. Lo cual ayuda a los desarrolladores a crear aplicaciones de manera eficiente y rápida. Las librerías proveen la API, en la cual los programadores pueden crear aplicaciones para un Sistema Operativo. Entre más librerías de calidad provee un sistema, se pueden crear complejas y lindas aplicaciones y programas; algunas de estas pueden ayudarte a crear una aplicación para ser compatible para distintos SO o restringir solamente la ejecución para una sola plataforma.
IPC: Inter process communication.
Otra pieza importante en un Sistema Operativo es la forma en la que los programas se comunican unos con otros y con el sistema en sí. Estos se llaman mecanismos IPC. Existen en variadas formas como un segmento compartido de memoria o un pequeño canal de comunicación creado entre dos aplicaciones para intercambiar datos. También hay un bus central de mensajes donde cualquier aplicación puede crear un mensaje y recibir una respuesta, esto es usado para una comunicación global con el sistema.
Con las librerías, el IPC y el kernel en su lugar, los desarrolladores pueden crear variedad de aplicaciones para servicios de sistema, administración de usuarios, configuración, ofimática, entretenimiento, etc. Esto conforma lo que todos conocemos como Sistema Operativo. En sistemas Linux y tipo UNIX todos los servicios son programas, todas las herramientas de administración del sistema son programas. Todo es un fichero.
Partes diferentes a un sistema Windows.
UNIX es básicamente un sistema de programas, archivos y permisos. En general, estas son algunas características que podemos notar en estos sistemas.
UNIX y derivados son sistemas poderosos, diseñados para hacer bien las cosas, puedes encontrar más información y ampliar estos conceptos en el libro "The Art of UNIX Programming". El diseño modular del kernel acarrea grandes beneficios y flexibilidad, desde poder instalar una distribución GNU/Linux y dejar de lado la interfaz gráfica hasta tumbar un servicio para actualizarlo, repararlo y levantarlo de nuevo sin la necesidad de reiniciar el sistema completo.