Sistemas operativos: cómo funcionan, UNIX/Linux y sistemas de altas prestaciones

Share
Sistemas operativos: cómo funcionan, UNIX/Linux y sistemas de altas prestaciones

Un sistema operativo es la capa de software que administra el hardware y proporciona a las aplicaciones un entorno estable para ejecutarse. Gestiona procesadores, memoria, almacenamiento, dispositivos, procesos, usuarios y comunicaciones, evitando que cada programa tenga que controlar directamente los recursos físicos.

Aunque Windows, Linux, macOS, Android o iOS persiguen ese mismo objetivo, sus arquitecturas y ámbitos de uso son muy diferentes. Además, cuando entramos en servidores de gran escala y computación de altas prestaciones, el sistema operativo debe aprovechar eficientemente decenas o miles de núcleos, grandes cantidades de memoria y arquitecturas distribuidas.

Qué hace realmente un sistema operativo

El componente central es el kernel o núcleo, que se ejecuta con privilegios elevados y actúa como intermediario entre hardware y programas. Sobre él aparecen bibliotecas, servicios del sistema, interfaces gráficas, intérpretes de comandos y aplicaciones.

Entre sus funciones principales están la planificación de procesos e hilos, la asignación de memoria, el acceso a sistemas de archivos, la gestión de dispositivos mediante controladores, las comunicaciones de red y los mecanismos de seguridad.

La memoria virtual permite, por ejemplo, que cada proceso trabaje con su propio espacio de direcciones sin acceder libremente al de otros procesos. Windows también diferencia explícitamente entre modo usuario y modo kernel, limitando el acceso directo al hardware desde las aplicaciones.

En este artículo de Tecnoic sobre cómo funcionan y han evolucionado los sistemas operativos se explica con más detalle esta arquitectura básica.

Sistemas operativos de altas prestaciones

Un sistema de altas prestaciones no se caracteriza simplemente por tener una CPU rápida. En entornos HPC —High Performance Computing— importa la capacidad para ejecutar cargas intensivas utilizando paralelismo, muchos procesadores y grandes volúmenes de memoria.

El sistema operativo debe gestionar eficientemente arquitecturas SMP, donde varios procesadores comparten memoria, y configuraciones NUMA —Non-Uniform Memory Access—, en las que el tiempo de acceso depende de qué procesador y qué banco de memoria estén implicados. Linux incorpora mecanismos específicos de planificación y balanceo NUMA para mantener los procesos cerca de la memoria que utilizan.

También son importantes la afinidad de CPU, el reparto de carga, las páginas de memoria de gran tamaño, las comunicaciones de baja latencia y la eficiencia de entrada/salida.

Conviene no confundir HPC con tiempo real: un sistema de altas prestaciones busca maximizar capacidad de cálculo o throughput, mientras que un sistema de tiempo real prioriza que determinadas operaciones terminen dentro de plazos previsibles.

En Tecnoic tenemos una explicación específica sobre mainframes, grid computing y sistemas de altas prestaciones.

UNIX y la importancia de POSIX

UNIX nació a finales de los años sesenta y estableció muchas de las ideas que siguen presentes en los sistemas modernos: multiusuario, multitarea, procesos independientes, jerarquía de archivos y pequeñas herramientas que pueden combinarse entre sí.

Sin embargo, UNIX no es simplemente una familia informal de sistemas parecidos. La marca UNIX está vinculada a la conformidad con la Single UNIX Specification de The Open Group. Solo los sistemas certificados pueden utilizar oficialmente esa denominación.

La especificación está estrechamente relacionada con POSIX, que define interfaces del sistema operativo, shell y utilidades para favorecer la portabilidad del software. La edición vigente de las Open Group Base Specifications, Issue 8, incorpora POSIX.1-2024.

Esta estandarización explica por qué muchas aplicaciones escritas para entornos de tipo UNIX pueden trasladarse entre plataformas con cambios relativamente pequeños.

Linux no es exactamente UNIX

Linux apareció en 1991 y comparte gran parte de la filosofía y las interfaces de los sistemas UNIX, pero técnicamente Linux es el kernel, no un sistema operativo completo.

Lo que habitualmente llamamos Linux suele ser una distribución formada por el kernel Linux, bibliotecas, utilidades GNU, gestor de paquetes, servicios y aplicaciones. Debian, Ubuntu, Red Hat Enterprise Linux, Fedora o SUSE son ejemplos de distribuciones construidas alrededor de este ecosistema.

Linux tiene especial relevancia en servidores, infraestructura cloud, supercomputación y contenedores. El kernel proporciona mecanismos como cgroups, capaces de controlar y distribuir recursos de CPU, memoria y otros subsistemas entre grupos de procesos.

Para profundizar, en Tecnoic tenéis disponible esta guía sobre UNIX/Linux, su funcionamiento y administración.

Windows, macOS, Android y otros sistemas habituales

Windows se basa en la arquitectura Windows NT y domina buena parte del escritorio corporativo, además de disponer de Windows Server para infraestructura empresarial. Microsoft estructura su núcleo alrededor de componentes especializados en memoria, procesos, objetos y entrada/salida. En Tecnoic hemos analizado también la arquitectura y administración de Windows.

macOS conserva una fuerte herencia UNIX y combina componentes derivados de BSD con el kernel XNU. Android, por su parte, utiliza un kernel basado en versiones LTS de Linux adaptadas mediante los Android Common Kernels.

En movilidad predominan Android e iOS, cuyos sistemas están especialmente diseñados alrededor del aislamiento de aplicaciones, gestión energética, interfaces táctiles y restricciones de seguridad.

En el extremo empresarial aparece z/OS, diseñado por IBM para mainframes y cargas transaccionales de gran volumen, con especial énfasis en disponibilidad, seguridad y procesamiento concurrente.

Elegir un sistema operativo depende de la carga

No existe un sistema operativo universalmente mejor. En un PC importa la compatibilidad con aplicaciones y periféricos; en un servidor, estabilidad, automatización y seguridad; en HPC, escalabilidad y eficiencia del paralelismo; y en un mainframe, capacidad transaccional y disponibilidad.

UNIX dejó el modelo conceptual, Linux lo extendió a prácticamente todos los ámbitos de la infraestructura moderna y otros sistemas han evolucionado optimizándose para necesidades concretas.

La parte menos visible del sistema operativo sigue siendo precisamente la más importante: administrar recursos para que aplicaciones muy diferentes puedan ejecutarse de forma segura y eficiente. ¿Qué sistema operativo utilizáis habitualmente y en qué tipo de entorno?

Read more

Inteligencia artificial: heurística, agentes, aprendizaje automático, IA generativa y Reglamento Europeo

Inteligencia artificial: heurística, agentes, aprendizaje automático, IA generativa y Reglamento Europeo

La inteligencia artificial (IA) no es una única tecnología, sino un conjunto de técnicas para construir sistemas capaces de percibir información, razonar, aprender, decidir o generar contenidos. Bajo la misma etiqueta conviven enfoques clásicos de búsqueda heurística, sistemas distribuidos con múltiples agentes, aprendizaje automático y modelos generativos. Entender estas piezas