CSI IV: Evolución de los SO
Yo gasto Windows. Uf, ¡que vergüenza para un informático!, ¿no?. Se supone que debería saber gastar alguno tipo UNIX, de código libre, haber añadido un par de llamadas al sistema y compilarlo... Pues no, no sé, por más que se haga en la carrera. Y gasto Windows porque... porque... porque aceptamos Windows como sistema operativo.
Y de eso va el tema de hoy en Cosas que SÍ se enseñan en Informática: qué es y para qué sirve un SO. Y lo haremos a través de su historia.
Un Sistema Operativo es aquello que da sentido al cacharro lleno de cables, tarjetas y discos que tenemos como ordenador. Sabemos que tenemos una CPU dentro, un monitor, un ratón, uno o varios discos duros, lector de DVDs... un montón de cosas que se llaman Hardware. Sabemos que tenemos la mula descargando Pitch Black (yo no), el reproductor sonando, la sesión del hermano abierta... un montón de cosas que llamamos Software. ¿Quién se encarga de repartir los recursos limitados de la maquinaria entre todos los programas que se están ejecutando?. No, no es Aitor Menta, aunque podría. Es el Sistema Operativo.
Pero esto no ha sido siempre así...
Buceemos un poquito en el pasado. La informática remotamente parecida a lo que conocemos nació en los años 40. Había una guerra y era necesario calcular las trayectorias de los misiles. Parece que hay pocas cosas como la guerra para agudizar el ingenio. Las grandes máquinas de calcular solían diseñarse para un único propósito. Para el resto estaban las calculadoras. Los datos de entrada de los computadores se proporcionaban mediante tarjetas perforadas y el resultado se escribía en cintas magnéticas o imprimía. Existía la sensación de que algo más podía hacerse con esos trastos tan grandes.
Pero entre las muchas personas trabajando en los EE.UU. había un luminaria: John von Neumann1. A él se le atribuye una idea magistral al colaborar en el diseño de una gran computadora, el EDVAC: cada máquina podrá entender una serie de operaciones y tomará como entrada una serie de instrucciones (programa) a ejecutar secuencialmente. Casi simultáneamente otro genio que condujo a su país a reventar la superioridad alemana en las transmisiones lleva un tiempo pensando en eso. Su nombre es Alan Turing2. A finales de los 40 en un congreso en Manchester afirmó: "Estamos intentando construir una máquina que haga todo tipo de cosas diferentes simplemente programándola, en vez de añadiendo aparatos extra".
Bien, a ello se le llamó programa residente: la máquina ejecuta un código proporcionado desde fuera en algún lenguaje. Si en la memoria de la máquina se encuentran tanto los datos que necesite el programa como el código a ejecutar, se llama Arquitectura von Neumann y hoy subsiste como la base de la informática moderna. Hay quien opina que von Neumann inventó el concepto de software, aunque esto quizá sea ir demasiado lejos.
Los programas de entonces solían ser cálculos matemáticos, junto con algunas instrucciones sencillas: ahora calcular, ahora detenerse, ahora escribir en una cinta el resultado, ahora leer más datos. El usuario introducía unas tarjetas perforadas que el computador leía. Cuando en los años 50 apareció el lenguaje FORTRAN (el padre de todos los lenguajes), esta técnica mejoró mucho, pero seguía siendo muy pesada y requería al dos personas: el programador y el técnico. En seguida se dieron cuenta que podían acelerar el proceso agrupando las tareas en lotes con necesidades similares. A estos sistemas se les conoce como sistemas por lotes sencillos. El sistema operativo -monitor residente- se limitaba a transferir el control de un proceso al siguiente.
Uno de sus problemas era que el tiempo en que tardaban en leerse las tarjetas y en escribir resultados era demasiado lento. Los dispositivos de E/S son infinitamente más lentos que los procesadores y más si los primeros son mecánicos. La cosa mejoró con la introducción de discos magnéticos. Así, las tarjetas se escribían en discos y el sistema operativo creaba una "tabla" para cada proceso en disco. Lo mismo se hizo con la salida: en vez de escribir a la cinta o impresora se escribía en disco. Luego, al finalizar el trabajo, se escribía todo el resultado. A esto se le llamó spooling.
El spooling dio origen a algo mucho más interesante: la reserva y planificación de trabajos. En disco podían mantenerse varias tareas esperando a ser ejecutadas. Es decir, pueden ejecutarse en un orden distinto y variable. Algo así permite que mientras un proceso realiza una larga operación de entrada o salida, otro esté ejecutándose. Por tanto el "SO" ya tiene más curro: escoger una tarea para ejecutar. Esto incluye escoger las tareas para copiar a memoria si hay muchas y escoger de entre las tareas listas en memoria cual ejecutar. Como podemos tener potencialmente muchas tareas es necesario también gestionar la memoria. De nombre le pusieron sistemas por lotes multiprogramados.
Tomemos nota que en este punto el usuario tenía un papel pasivo: ¡no podía hacer nada nada mientras los programas se ejecutaban!. El tiempo de respuesta de los sistemas por lotes multiprogramados solía ser largo, pero ¿y si se deseaba realizar muchas acciones cortas? ¿Y si el usuario necesitara interactuar, proporcionar datos al programa mientras se ejecutaba?. Bien, esto sólo se pudo hacer cuando la conmutación entre trabajos se hizo mucho más frecuente, tanto, que daba la imagen de que todas las tareas se ejecutaban "al mismo tiempo". A esto se le conoce como sistemas multitarea o de tiempo compartido.
De este modo se genera la ilusión de que un programa puede estar esperando al usuario, cuando en realidad pasan otras muchas cosas por la CPU en ese instante. La idea de tiempo compartido ya había surgido en los años 60, pero no fue hasta principios de la década de los 70 cuando pudo ponerse en marcha. El OS/360 de IBM de 1964 (IBM fue pionera en el desarrollo de grandes computadores) era originalmente un sistema por lotes, el cual se modificó para añadir la opción de tiempo compartido.
Y aquí lo dejamos por el momento. Por supuesto: continuará...
1 Aunque me gustaría hablar de lo extraordinario que era John von Neumann, ya lo han hecho otros, y seguro que mejor que yo. Aquí lo hace Omalaled. Y aquí. Y aquí.
2 Lo mismo que antes. Sin embargo aquí se ha quedado un poco corto en la importancia que tuvo y su triste muerte. A ver si algún día hablo de Alan Turing y cuento más cosas.
0 cosillas:
Publicar un comentario