Atlas supervisor era el nombre del programa que controlaba todas las actividades llevadas a cabo por el sistema Atlas de la universidad de Mánchester, que comenzó a funcionar en 1962.
El programa supervisor permitía acceder a las funcionalidades del sistema a las que no se podía acceder directamente. También permitía a los periféricos llevar a cabo sus operaciones. Así, el supervisor se activaba en numerosas ocasiones como resultado de ejecutar un programa objeto el cual solicitaba una acción que debía ser controlada por el supervisor. El supervisor también se activaba cuando un programa requería un seguimiento por cualquier motivo, como un posible desbordamiento por división o exponente, o por superar el tiempo o la capacidad de almacenamiento asignadas. El supervisor también era activado por distintos componentes del hardware. De esta manera, por ejemplo, los tambores y cintas magnéticas llamaban al supervisor cada vez que completaban la transferencia de un bloque de 512 palabras. Por último, ciertos fallos en el computador central, los periféricos o el almacenamiento provocaban una llamada al supervisor.
La parte del supervisor que más rápido y frecuente se activaba eran las rutinas de interrupción. Las rutinas de interrupción estaban diseñadas para atender las llamadas en el mínimo retraso y el menor tiempo posible.
Las rutinas Extracode del supervisor (S.E.R. en inglés) suponen las ramas del programa supervisor. Se activaban por rutinas de interrupción o por instrucciones de extracode en un programa objeto. Estaban protegidas contra interferencias de otros programas usando un espacio de almacenamiento subsidiario como espacio de trabajo. Estas ramas del supervisor pueden ser activadas a intervalos aleatorios. Además, pueden ser interrumpidas por rutinas de interrupción, y a su vez, iniciar un S.E.R. A pesar de que se pueden activar de forma simultánea varios S.E.R., solo 1 de ellos podía ser atendido a la vez, el resto eran detenidas o mantenidas a la espera. La activación de un S.E.R. siempre se producía mediante una rutina co-coordinante, que se aseguraba que una S.E.R. no fuera interrumpida por otra S.E.R. Una S.E.R. de baja prioridad no era interrumpida por una S.E.R. de alta prioridad, tenía que esperar a la finalización de la primera o a su interrupción. La principal diferencia entre las S.E.R. y las interrupciones es que las primeras no tenían límite de tiempo pero sí se podían interrumpir, al contrario que las segundas.
Los programas objeto eran inicializados por un S.E.R., que los introducía en la lista de programas objeto. Pese a que los programas objeto eran “subprogramas” del supervisor, podían estar funcionando durante largos periodos de tiempo, usando toda la capacidad de la computadora. Por esta razón, el programa supervisor se podía considerar como inactivo la mayor parte del tiempo, solo activándose durante una pequeña porción de todo el tiempo disponible.
Una gran variedad de errores podían ser detectados por el hardware y el supervisor. El supervisor detectaba errores en las conexiones con el uso del almacenamiento. Siempre que ocurría un error, se debía mandar información al supervisor con diferente información referente a la cantidad de almacenamiento que se requería, tiempo de ejecución. Esta información se mandaba antes de que se compilara el programa o se deducía tras la compilación. El supervisor mantenía un registro de los bloques de memoria usados por un programa y evitaba que superase el límite. Mediante una señal a intervalos, también comprobaba que no se superase el tiempo asignado para la ejecución. Las medidas adoptadas por el supervisor cuando se detecta un error del programa depende de las condiciones previamente establecidas por el programa. Algunos errores podían ser capturados por separado, causando retorno del control a una dirección preestablecida, el monitoreo del error para que permitiera imprimir un diagnóstico a un programa o compilado. Si no se establecía ninguna de estas acciones, por defecto, algunos datos del error eran impresos por el supervisor y el programa era suspendido, y por lo general objeto de dumping a la cinta magnética para permitir que otro programa ocupara el espacio que se había liberado.