Conceptos Fundamentales de Sistemas GNU/Linux: Procesos, Señales y Kernel
Clasificado en Informática
Escrito el en
español con un tamaño de 6,69 KB
GNU: El Origen del Software Libre
El proyecto GNU se fundamenta en la libertad de los usuarios, quienes reciben el código fuente con el derecho a estudiarlo, modificarlo y distribuirlo.
Linux: El Núcleo del Sistema
Linux es el kernel o núcleo utilizado en una vasta gama de sistemas operativos tipo Unix. No es un sistema operativo completo por sí mismo, sino su componente central.
Distribuciones Populares
- Debian
- Red Hat
- SUSE
- Mandrake (ahora Mandriva/OpenMandriva)
El Rol del Núcleo (Kernel)
Es la parte fundamental del sistema operativo que actúa como intermediario principal para que el software pueda interactuar de forma segura y controlada con el hardware del dispositivo.
La Shell: El Intérprete de Comandos
La shell es el programa que actúa como intérprete de comandos. Se ejecuta una vez que el usuario ha iniciado sesión y proporciona la interfaz para interactuar con el sistema operativo.
Gestión de Usuarios y Grupos
UID (User Identifier)
Es un número único con el que el sistema Linux identifica a cada usuario. Tradicionalmente, los UIDs para usuarios estándar en sistemas Unix comenzaban desde 200, mientras que en muchas distribuciones de Linux modernas comienzan a partir de 500 o 1000.
GID (Group Identifier)
Es el número de identificación del grupo principal al que pertenece un usuario. Permite gestionar permisos a nivel de grupo.
Gestión de Procesos en Linux
Un proceso es una instancia de un programa en ejecución. Podemos gestionarlos con varios comandos:
ps: Muestra los procesos activos iniciados por el usuario actual.ps -eops aux: Muestra todos los procesos que se están ejecutando en el sistema.ps -l: Proporciona un listado largo y detallado, incluyendo información como el proceso padre (PPID) y la prioridad (PRI).
Procesos en Primer Plano (Foreground)
Un proceso en primer plano se ejecuta en la terminal actual y bloquea el uso de la shell hasta que finaliza. Se inicia tecleando la orden de forma normal.
- Ejemplo:
$ sleep 20 - Terminar (matar) el proceso:
CTRL + C - Detener (pausar) el proceso:
CTRL + Z
Procesos en Segundo Plano (Background)
Un proceso en segundo plano se ejecuta de forma independiente a la terminal, permitiendo al usuario seguir utilizando la shell. Se lanza añadiendo un ampersand (&) al final del comando.
- Ejemplo:
$ sleep 300 & jobs: Muestra los trabajos (procesos) que se están ejecutando en segundo plano o están detenidos.fg: Trae un proceso del segundo plano al primer plano.bg: Reanuda la ejecución en segundo plano de un proceso que estaba detenido.
Comunicación con Procesos: Señales
Las señales son una forma de comunicación entre procesos en sistemas tipo Unix. El comando kill se utiliza para enviar estas señales.
kill -l: Muestra un listado de todas las señales disponibles.
Señales Comunes
- SIGSTOP (19): Detiene (pausa) la ejecución de un proceso sin terminarlo.
- SIGCONT (18): Continúa la ejecución de un proceso que había sido detenido.
- SIGINT (2): Señal de interrupción, enviada normalmente con
CTRL + Cpara terminar un proceso. - SIGTERM (15): Es la señal por defecto de
kill. Solicita al proceso que termine de forma ordenada y controlada, permitiéndole limpiar recursos. - SIGKILL (9): "Mata" el proceso de forma inmediata e incondicional. Es un último recurso si
SIGTERMfalla, ya que no permite al proceso limpiar antes de cerrar.
Prioridad de Procesos
La prioridad de un proceso influye en la cantidad de tiempo de CPU que el planificador le asigna. Se puede visualizar con comandos como ps -l.
- Comando
nice: Permite lanzar un proceso con una prioridad específica. El valor de "niceness" va de -20 (máxima prioridad) a 19 (mínima prioridad). - Ejemplo:
$ nice -n 15 sleep 300 &lanza el comandosleepcon una prioridad muy baja.
Gestión de Memoria: Buffers y Caché
Buffers
Son áreas de memoria que almacenan temporalmente datos mientras se transfieren entre dispositivos o entre un programa y un dispositivo (por ejemplo, el disco duro). Ayudan a manejar las diferencias de velocidad.
Caché (Cache)
Es una memoria de acceso rápido que almacena datos a los que se ha accedido recientemente desde una fuente más lenta (como el disco duro). En el contexto del sistema de archivos, la caché guarda copias de archivos para acelerar futuras lecturas.
Almacenamiento Avanzado: RAID
RAID (Redundant Array of Independent Disks o Conjunto Redundante de Discos Independientes) es una tecnología que combina múltiples unidades de disco duro (HDD o SSD) en una única unidad lógica para mejorar el rendimiento, la tolerancia a fallos o ambos.
Beneficios Clave del RAID
- Mayor Integridad de Datos: Protección contra la pérdida de datos.
- Mayor Tolerancia a Fallos: El sistema puede seguir funcionando incluso si uno de los discos falla (dependiendo del nivel de RAID).
- Mejor Rendimiento: Las operaciones de lectura/escritura se pueden distribuir entre varios discos.
- Mayor Capacidad: Se combinan las capacidades de varios discos en un solo volumen lógico.
Consideraciones
Los sistemas RAID se utilizan comúnmente en servidores y, para un rendimiento óptimo, se implementan con unidades de disco de la misma capacidad y características.
RAID por Software vs. Hardware
- RAID por Software: Es más flexible y económico, pero puede consumir recursos de la CPU. Tras un reinicio inesperado del sistema, puede requerir una reconstrucción del conjunto para asegurar la integridad de los datos.
- RAID por Hardware: Utiliza una controladora dedicada, ofreciendo mejor rendimiento y sin cargar la CPU principal. Sin embargo, la propia controladora puede convertirse en un punto único de fallo.