19/02/2024
Un Vistazo a una Leyenda de la Computación
En la historia de la informática, existen máquinas que no solo representaron un avance en potencia, sino que redefinieron por completo los paradigmas de su época. Una de esas máquinas fue Atlas, un sistema de computación a gran escala desarrollado en la Universidad de Manchester. Más que un simple conjunto de hardware, Atlas fue un ecosistema complejo donde cada actividad era orquestada por un programa maestro llamado supervisor. Este software, un precursor directo de los sistemas operativos modernos, fue el verdadero corazón de un sistema que introdujo conceptos que hoy damos por sentados, como la memoria virtual y la multitarea avanzada.

Arquitectura y Componentes del Sistema Atlas
El sistema Atlas fue diseñado para ser flexible, capaz de integrar una amplia variedad de equipos periféricos y una vasta capacidad de almacenamiento. Su arquitectura se basaba en la coexistencia de varios tipos de memoria, cada una con un propósito específico:
- Memoria Principal (Core Store): Compuesta por núcleos magnéticos con un tiempo de ciclo inferior a dos microsegundos. Estaba dividida en "páginas" de 512 palabras, una unidad fundamental para la gestión de memoria.
- Memoria de Tambor (Drum Store): Almacenamiento secundario que también se organizaba en bloques fijos de 512 palabras. Crucialmente, se direccionaba de la misma forma que la memoria principal.
- Memoria Fija (Fixed Store): Una memoria de solo lectura, construida con una malla de alambre y slugs de ferrita, extremadamente rápida. Almacenaba rutinas comunes y partes críticas del supervisor.
- Memoria Subsidiaria (Subsidiary Core Store): Un espacio de trabajo de menor tamaño reservado exclusivamente para el supervisor, protegiéndolo de los programas de usuario.
- V-Store: Un nombre colectivo para diversos flip-flops distribuidos en el ordenador que podían ser leídos y escritos como si fueran direcciones de memoria, permitiendo un control de bajo nivel sobre el hardware.
El poder de procesamiento residía en un acumulador que realizaba aritmética de punto flotante en números de 48 bits y 128 registros de índice (B-lines) de 24 bits. El sistema operaba con tres registros de control principales: Main Control (para programas de usuario), Extracode Control (para rutinas del supervisor y subrutinas especiales) e Interrupt Control (para rutinas de atención a periféricos). Esta separación era clave para la protección y estabilidad del sistema, ya que un programa de usuario en Main Control no podía acceder a las memorias privadas del supervisor, garantizando su integridad.
Configuración Inicial en la Universidad de Manchester
Para dimensionar la escala de este sistema, la primera instalación de Atlas contaba con una configuración impresionante para su tiempo. A continuación, se detallan sus componentes:
| Componente | Capacidad / Cantidad |
|---|---|
| Memoria Principal (Core Store) | 16,384 palabras |
| Memoria Fija (Fixed Store) | 8,192 palabras |
| Memoria Subsidiaria | 1,024 palabras |
| Memoria de Tambor | 98,304 palabras |
| Mecanismos de Cinta Magnética | 8 |
| Lectores de Cinta de Papel | 4 |
| Perforadoras de Cinta de Papel | 4 |
| Teleimpresores | 2 |
| Impresora de Línea | 1 |
| Lector de Tarjetas | 1 |
| Perforadora de Tarjetas | 1 |
El Supervisor: El Corazón del Sistema
El supervisor de Atlas era un programa multifacético cuya función era controlar todas las operaciones del sistema que no fueran la simple ejecución de instrucciones de un programa de usuario. Se activaba por diversas razones: una petición explícita de un programa (como leer datos de una cinta), la finalización de una tarea por parte de un periférico (un tambor terminando una transferencia) o un fallo en el hardware. El ordenador central repartía su tiempo entre la ejecución de los programas de los usuarios y las múltiples actividades del supervisor.
La estructura del supervisor estaba diseñada para manejar eventos aleatorios y concurrentes. Se componía de muchas ramas, normalmente inactivas, que se activaban según fuera necesario. Para gestionar esta complejidad, se implementó un sofisticado sistema de interrupciones y rutinas.
Rutinas de Interrupción y Rutinas de Extracode del Supervisor (S.E.R.'s)
El sistema de control se dividía en dos niveles principales:
- Rutinas de Interrupción: Eran las partes más rápidas y frecuentes del supervisor. Cuando un periférico necesitaba atención (por ejemplo, un lector de cinta de papel con un nuevo carácter listo), activaba un flip-flop de interrupción. El hardware del ordenador detectaba esto, detenía el programa actual, cambiaba al modo 'Interrupt Control' y ejecutaba una rutina muy corta y específica para manejar el evento (por ejemplo, transferir el carácter a la memoria). Estas rutinas estaban diseñadas para ser extremadamente rápidas y no interferir con los registros del programa interrumpido, permitiendo un retorno casi instantáneo.
- Supervisor Extracode Routines (S.E.R.'s): Eran las ramas principales y más complejas del supervisor. Se activaban cuando una tarea requería una secuencia de acciones más larga, ya sea iniciada por una rutina de interrupción (como al finalizar la lectura de una cinta completa) o por una instrucción especial (un 'extracode') en un programa de usuario. A diferencia de las rutinas de interrupción, las S.E.R.'s no eran de duración limitada y podían ser "detenidas" si necesitaban esperar un recurso, como un tambor.
Un componente clave, el Coordinador, gestionaba la ejecución de las S.E.R.'s. Mantenía cuatro listas de tareas pendientes, ordenadas por prioridad (fallos del sistema y transferencias de tambor tenían la máxima prioridad, seguidas por cintas magnéticas, otros periféricos y finalmente, peticiones de programas de usuario). Esto aseguraba que las operaciones más críticas para el rendimiento del sistema se atendieran primero, permitiendo que múltiples programas y operaciones de E/S progresaran de manera eficiente y paralela.

La Revolución de la Memoria: El Almacenamiento de Un Solo Nivel
Quizás la contribución más influyente y duradera de Atlas fue el concepto de "One-level Store" (Almacenamiento de un solo nivel), la primera implementación práctica de lo que hoy conocemos como memoria virtual. El sistema permitía que el programador viera la memoria principal de núcleos y la memoria secundaria de tambor como un único y gigantesco espacio de direcciones contiguo. El programador no necesitaba preocuparse de dónde estaban físicamente sus datos; el supervisor se encargaba de todo automáticamente.
Esto se lograba mediante un hardware especial: los Page Address Registers (PAR). Cada página de 512 palabras en la memoria principal tenía un registro asociado que contenía la dirección del bloque de datos que albergaba. Cuando el programa solicitaba acceso a una dirección, el hardware comparaba en paralelo la parte alta de esa dirección con el contenido de todos los PAR. Si encontraba una coincidencia, el acceso era instantáneo. Si no había coincidencia (un "fallo de página"), se generaba una interrupción de "no equivalencia".
Esta interrupción activaba una rutina del supervisor que realizaba los siguientes pasos:
- Localizaba el bloque de datos solicitado en la memoria de tambor.
- Encontraba una página en la memoria principal que no estuviera en uso activo. Un sofisticado "programa de aprendizaje" predecía qué página era menos probable que se necesitara en el futuro cercano y la seleccionaba.
- Si la página seleccionada contenía datos útiles, los copiaba de vuelta al tambor.
- Copiaba el bloque solicitado desde el tambor a la página ahora libre en la memoria principal.
- Actualizaba el Page Address Register de esa página con la nueva dirección del bloque.
- Reanudaba el programa de usuario, que ahora podía acceder a la dirección sin problemas.
Todo este proceso era completamente transparente para el programa. Además, cada página tenía un "lock out bit" que el supervisor podía activar para protegerla, impidiendo que los programas de usuario accedieran a áreas de memoria que estaban siendo usadas para transferencias de datos o por el propio supervisor.
Preguntas Frecuentes sobre Atlas
- ¿Qué fue exactamente el computador Atlas?
- Atlas fue uno de los primeros superordenadores del mundo, desarrollado a finales de los años 50 y principios de los 60 por un equipo conjunto de la Universidad de Manchester y Ferranti Ltd. Fue famoso por su potencia y, sobre todo, por sus innovaciones en software y arquitectura, como su avanzado sistema operativo (el supervisor) y la memoria virtual.
- ¿Cuál fue la principal innovación de Atlas?
- Su innovación más destacada fue el "almacenamiento de un solo nivel" (one-level store), la primera implementación real de la memoria virtual. Esta técnica permitía a los programadores utilizar un espacio de memoria mucho más grande que la memoria física principal disponible, gestionando automáticamente el movimiento de datos entre la memoria rápida de núcleos y la más lenta de tambor.
- ¿Qué era el "supervisor"?
- El supervisor era un programa de control integral, un precursor de los sistemas operativos modernos. Gestionaba todos los recursos del hardware, coordinaba la ejecución de múltiples programas, manejaba las entradas y salidas de todos los periféricos y garantizaba la protección entre los diferentes procesos y el propio sistema.
- ¿Cómo manejaba Atlas múltiples tareas a la vez?
- Atlas lograba la multitarea a través de un sofisticado sistema de interrupciones de hardware y un coordinador de software. Cuando un programa tenía que esperar por una operación lenta (como leer de una cinta magnética o una transferencia de tambor), el supervisor lo detenía temporalmente y cedía el control del procesador a otro programa que estuviera listo para ejecutarse. Este cambio de contexto, aunque costoso, permitía mantener el carísimo procesador central ocupado el mayor tiempo posible.
Si quieres conocer otros artículos parecidos a Atlas: El Superordenador que Inventó el Futuro puedes visitar la categoría Juegos.
