Ir al contenido principal
Glosario de informática

Sistemas operativos y arquitectura

Sistemas operativos

El sistema operativo reparte CPU, memoria y disco entre programas que se creen solos en el mundo: procesos, memoria virtual, archivos y, sobre todo, por qué la concurrencia es difícil de verdad.

Cualquier programa que corre en tu computadora se cree dueño absoluto de la máquina: tiene una CPU entera para el, memoria infinita y un disco personal. Es una ilusión cuidadosamente mantenida por una pieza de software que, sin embargo, casi nunca ves: el sistema operativo. Su trabajo es repartir los recursos (CPU, memoria, disco, red) entre muchos programas que compiten por ellos, y dar a cada uno la apariencia de un mundo propio.

Para entenderlo, conviene seguir tres hilos: como reparte el tiempo, como reparte la memoria y como se defiende del caos que surge cuando varias cosas pasan a la vez.

Procesos e hilos: la ilusión de simultaneidad

Un proceso es, a los ojos del sistema, un programa en ejecución con su propio espacio de memoria, aislado de los demás. El sistema operativo mantiene una tabla de procesos y les va dando la CPU por turnos, tan rápido que parecen correr al mismo tiempo. A este salto entre uno y otro se le llama cambio de contexto, y quien decide a quien le toca es el planificador, una pieza que prioriza, pausa y reanuda sin que los programas se enteren.

Dentro de un mismo proceso pueden vivir varios hilos, que comparten memoria pero ejecutan código de forma independiente. Los hilos permiten, por ejemplo, que una aplicación descargue un archivo mientras sigue respondiendo a tus clics. Pero al compartir memoria, abren la puerta al problema más escurridizo de toda la informática.

La memoria que no cabe, pero parece infinita

Ningún programa necesita tener todo en la memoria física al mismo tiempo, y aun así se comporta como si dispusiera de un espacio enorme y contiguo. El truco se llama memoria virtual: cada proceso ve una memoria propia y comoda, mientras el sistema operativo la mapea, por debajo, a la memoria física real, organizada en páginas.

Cuando un proceso accede a una página que no está en la memoria física, se produce un fallo de página: el sistema la busca en el disco (en el área de intercambio, o swap) y la trae, quizás enviando otra poco usada de vuelta. Este mecanismo permite correr programas más grandes que la memoria física, pero tiene un costo: si el sistema pasa la vida moviendo páginas entre disco y memoria, todo se vuelve lentísimo. La jerarquía de memoria (registros, cache, memoria principal, disco) existe precisamente porque cuanto más cerca del procesador, más rápida y más cara es la memoria.

Archivos y la frontera con el hardware

El sistema operativo también oculta la complejidad del disco detras de una abstracción amable: el sistema de archivos. Tu ves carpetas y archivos con nombres y rutas; por debajo hay estructuras como los inodos, permisos que controlan quien puede leer o escribir, y mecanismos como el journaling que anotan los cambios antes de aplicarlos, para no perder datos si se corta la luz.

Para que un programa use cualquier recurso, no lo toca directamente: le pide al sistema operativo mediante una llamada al sistema. Esa es la frontera entre el espacio de usuario, donde viven los programas comunes, y el espacio de kernel, donde el sistema operativo hace el trabajo peligroso de tocar el hardware. Esta separación es lo que evita que un programa cualquiera pueda, por ejemplo, escribir en el disco de otro.

Concurrencia: por qué es difícil de verdad

La concurrencia es el tema donde más programadores experimentados tropiezan. Cuando dos hilos comparten memoria y pueden intercalarse en cualquier orden, dejan de valer las intuiciones. El problema canónico es la condición de carrera: imagina dos hilos que leen el saldo de una cuenta, le restan cien y lo guardan. Si se intercalan mal, ambos leen el mismo saldo inicial y ambos guardan su resultado: se retiraron doscientos pero el saldo solo bajo cien. El dinero desapareció, no por un bug obvio, sino por un orden desafortunado que aparece una de cada mil veces y nunca en las pruebas.

La solución es marcar la sección crítica (el trozo de código que no puede ejecutarse dos hilos a la vez) y protegerla con mecanismos de exclusión mutua, como un mutex o un semáforo, que obligan a los hilos a entrar de uno en uno. Estos mecanismos resuelven la carrera, pero traen sus propios problemas. El más temido es el interbloqueo: el hilo A espera un recurso que tiene el hilo B, y el hilo B espera uno que tiene el A; ambos se quedan mirando para siempre. Está también la inanición, cuando un hilo nunca recibe su turno.

Por eso la concurrencia se ha vuelto un campo propio. Hay quien prefiere evitar el estado compartido del todo (es la promesa del paradigma funcional y de la inmutabilidad), quien usa operaciones atómicas para pasos chicos, o quien modela el sistema con mensajes entre procesos aislados. La lección de fondo es humilde: la concurrencia bien hecha no se improvisa, se diseña.

Lo que el sistema operativo te ahorra

Sin un sistema operativo, cada programa tendría que saber como hablar con cada teclado, cada disco y cada pantalla, y tendría que cooperar a mano con los demás. El sistema operativo existe para que ninguna de esas cosas sea tu problema. Te da la ilusión de una CPU propia, de memoria infinita, de archivos con nombre y de un mundo ordenado donde los programas no se pisan. Y cuando algo falla en ese mundo (una carrera, un interbloqueo, un fallo de página en cascada) casi siempre es porque la ilusión, en algún punto, dejó de sostenerse. Conocer como se construye es la mejor manera de saber donde buscar cuando se cae.

Los términos de este tema

32 entradas del glosario que aparecen acá. Cada una abre en su definición del índice.

Un medio de señales del futuro: observa lo que está cambiando en tecnología, ciencia, regulación y sociedad, y lo publica como noticia, análisis o tesis de futuro. Cada pieza cita sus fuentes.

© 2026 HumanOS Future · medio de Sinapsis SpA. Las piezas de tipo tesis y opinión no son hechos consumados.
Sistemas operativos | HumanOS Future