kernel graph

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.

  • Fácil acceso a la información. Repito, todo es un fichero: puedes abrir un archivo, un socket de red, un canal IPC, un parámetro del kernel. Dale un ojo a los sistemas de archivos virtuales en /dev, /sys y /proc.
  • Un sistema transparente. Cada programa opera bajo la misma regla, son solo programas! Todos ellos pueden ser observados, analizados y debugueados de la misma forma.
  • Las configuraciones se pueden leer, editar y puedes comentarlas, de seguro alguna vez lo haz hecho: cambiando un parámetro en el archivo .bashrc por ejemplo para cambiar los colores de tu terminal. Por el hecho de ser archivos, puedes copiarlos a otros sistemas para conservar la configuración de alguna aplicación.
  • El mantra es “haz una cosa, pero bien”. Las herramientas de linea de comandos pueden trabajar de maneras poderosas. Servicios como SMTP, IMAP y POP son subprogramas separados por ejemplo, evitando código demasiado complejo sin utilidad y evitando problemas de seguridad.
  • El sistema de archivos es una manera universal de acceder a los datos. Ubicaciones comunes del sistema como
    /home o /usr pueden ser montadas para compartirlas en red.
  • El sistema está construido para mantener bajo nivel de privilegios. Después del login, a cada usuario (salvo root) se le asignan sus recursos limitados, corriendo solamente aplicaciones y archivos. Los servicios de red también reducen sus privilegios tanto como sea posible.
  • Cada programa guarda sus configuraciones en un archivo o carpeta oculto en el directorio /home del usuario.

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.

4
Deja una respuesta

avatar
4 Hilos de comentario
0 Respuestas de hilo
0 Seguidores
 
Comentario más reaccionado
El hilo de comentarios más caliente
2 Autores de comentarios
ciberRafaUna mirada dentro del núcleo Linux | Web...Bitacoras.com Autores de comentarios recientes
  Suscribirse  
Los más recientes Los más antiguos Más votados
Notificarme las
ciber
Invitado
ciber

Buenisimo!

Rafa
Miembro

Gracias, Muy instructivo.

trackback

[…] 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 lo  […]

trackback

Información Bitacoras.com

Valora en Bitacoras.com: 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á…