¿Te imaginas convertirte en un Sistema Operativo? Un sistema operativo realiza infinidad de operaciones para gestionar los procesos y proporcionar una interfaz de usuario.

Entre las principales funciones de un sistema operativo, podemos destacar: la gestión de procesos (inicio, asignación de recursos, planificación de la ejecución y finalización de procesos), gestión de recursos (memoria, CPU, dispositivos de E/S y espacio en disco), gestión de memoria, E/S (operaciones de entrada y salida relacionadas con los procesos), interrupciones de hardware y software (cuando ocurre una interrupción, el sistema operativo decide cómo manejar el evento y suspender o detener la ejecución de los procesos involucrados), gestión de usuarios e interfaz, gestión de archivos y sistemas de archivos, red y conectividad, seguridad y autenticación, y funciones de ahorro de energía.

Un juego te convierte (virtualmente) en un sistema operativo

Imagina un videojuego en el que te conviertes en un sistema operativo. Deberás gestionar los núcleos de la CPU, los procesos, las páginas de memoria y, posiblemente, incluso el archivo de paginación. Debes asegurarte de que ningún proceso se ejecute durante más tiempo del necesario y cambiar las páginas de memoria cuando sea apropiado. El objetivo es evitar enfadar al usuario con un rendimiento bajo del sistema.

El juego desarrollado por Pier-Luc Brault y compilado en WebAssembly, tiene un valor educativo importante.

De hecho, el trabajo realizado por Brault ayuda a comprender el funcionamiento interno de un sistema operativo, con especial énfasis en los mecanismos de planificación de procesos.

¿Qué es la planificación de procesos?

La planificación de procesos es la gestión de la ejecución de procesos por parte del sistema operativo. Cuando hay varios procesos en ejecución simultáneamente, se debe determinar el orden en que se ejecutan estos procesos en la CPU. En un entorno multitarea, donde varios procesos compiten por acceder a la CPU, la planificación de procesos es responsable de decidir qué proceso se debe ejecutar en un momento determinado. La decisión se toma según una serie de algoritmos y estrategias cuyo principal objetivo es maximizar la eficiencia del uso de la CPU y garantizar una buena experiencia para el usuario.

Cómo ser un buen sistema operativo

En el juego You're the OS, te encargas de gestionar los procesos en ejecución, la memoria y los eventos de E/S. En la parte superior de la pantalla (arriba a la izquierda), se muestran los núcleos de la CPU, debajo se encuentran los procesos en estado de espera o idle.

Al hacer clic en un proceso y luego en su ID de proceso (PID) correspondiente, un proceso en estado de espera puede asignarse a uno de los núcleos de CPU disponibles. Del mismo modo, un proceso que haya sido cargado previamente en la CPU puede eliminarse. Con el paso del tiempo, cada proceso pasa por 6 estados. Cuando un proceso permanece en estado de espera durante demasiado tiempo, esperando ser gestionado por una CPU, tiende a ser detenido forzosamente por el usuario que ya no tolera más esperas.

En circunstancias normales, un proceso debería terminar de manera adecuada cuando haya completado las operaciones que se propuso ejecutar. En este caso, simplemente hace falta hacer clic en su PID para eliminarlo de la CPU.

Eventos de E/S, gestión de memoria e intercambio en disco

A veces, un proceso puede quedarse "colgado" (mostrando el ícono de un reloj de arena) porque está esperando un evento de E/S. Obviamente, los procesos en esta etapa tienden a bloquear la CPU, por lo que es apropiado eliminarlos. Al hacer clic en la barra que informa sobre los eventos de E/S disponibles, se pueden asignar a los PID correspondientes y liberar la CPU para continuar con el resto del trabajo.

¿Y la memoria? Cada proceso que se ejecuta crea y utiliza páginas de memoria. Aquellas en uso se resaltan en blanco en el juego dentro del área de Páginas de Memoria en RAM, mientras que las páginas en gris corresponden a páginas de memoria disponibles. Si la memoria RAM físicamente disponible comienza a escasear, es posible activar el mecanismo de paginación. Al hacer clic en las diferentes páginas, se pueden mover sus contenidos entre la RAM y el disco (y viceversa).

Dado que los procesos en ejecución solo pueden usar la información almacenada en RAM, cuando esta se encuentra en disco debido a la activación de la paginación, las páginas correspondientes parpadean en azul, indicando que deben ser devueltas a la memoria volátil. Si se evita el intercambio entre disco y RAM, el proceso se volverá inmanejable y se detendrá.

Cuando el hipotético usuario, insatisfecho con el comportamiento del sistema operativo, detiene los procesos cargados en la máquina 10 veces, el juego termina.

Brault destaca que el juego es principalmente eso, un juego, y como tal, está diseñado para priorizar la jugabilidad en lugar del realismo.

El primer aspecto a destacar es que, por supuesto, no se espera que el jugador tenga la velocidad de un verdadero ordenador. Muchos detalles son técnicamente inexactos: los procesos cargados en el juego usan muchas menos páginas de memoria de las que usarían los procesos típicos en la realidad.

Además, en el juego desarrollado por Brault, siempre se inician nuevos procesos, prácticamente infinitamente. Esto es simplemente una mecánica de juego para hacer que las actividades sean cada vez más difíciles de gestionar. En la práctica, ningún usuario continuaría iniciando frenéticamente nuevas aplicaciones, lo que obligaría al sistema operativo a manejar un número creciente de PID.