CSI V: Evolución de los SO (II)
En el capítulo anterior... la II Guerra Mundial impulsó toda una serie de nuevas tecnologías y dio un notable empujón a la ciencia de la computación. A finales de los años 70 ya existían sistemas capaces de compartir los recursos físicos de las máquinas de cómputo a varios procesos en ejecución, para los cuales se empezaban a crear cada vez más sofisticados lenguajes de programación. Cada proceso actuaba como si fuese el único que se estaba ejecutando y el intercambio de procesos era tan rápido que permitía al usuario interaccionar con el sistema.
Y no sólo eso, el tiempo compartido abrió la posibilidad a que varios usuarios pudiesen ejecutar sus programas sobre la misma máquina. Hasta entonces sólo un usuario podía interactuar con ella, sentado frente a un terminal. Con la opción de multiusuario se extendían las posibilidades.
Todo esto conllevaba grandes retos: como los programas se almacenaban en disco, es necesario una gestión de memoria de modo que se puedan traer procesos de dondequiera que estén almacenados a la memoria principal que gasta el procesador. La solución consistió en crear jerarquías de memoria, donde las más pequeñas son las más rápidas y están más cerca del procesador. Las técnicas que se emplearon crearon el concepto de memoria virtual. La memoria virtual permite, en esencia, que el programa sea más grande que la memoria física.
Como los programas escribían sus resultados en disco en vez de directamente en impresora o cinta, era necesario inventar alguna gestión de archivos. Los sistemas de archivos se encargaron de organizar e indexar todos los distintos archivos que estaban en en los discos. Y, si hay varios discos, ¡también tiene que encargarse de mantener y ofrecer una visión coherente por encima de estos!.
Y como hay muchos trabajos o tareas que se ejecutan "a la vez" entonces tenemos que incluir un sistema de gestión de tareas. Porque aunque cada una piense que ella es la única, muchas veces requiere de los resultados de otra. De quién le da igual; de eso se tienen que ocupar los esquemas de planificación de la CPU. Ordenar la ejecución de muchas tareas estableciendo un orden y una asignación de recursos tal que no se produzcan interbloqueos es otra de las muchas tareas del sistema operativo moderno. Todas estas funciones son complejas de realizar, pero muy fáciles de explicar y algún día las veremos.
Pero volvamos a la historia, que aún no ha terminado. Porque hasta ahora no hemos hablado del trasto que tenemos junto a nosotros, al cual llamamos PC1 (o pasokon si por casualidad hablamos japonés).
Aquí hay dos caminos distintos. Por una lado la evolución de lo que es la propia máquina. En ese sentido podemos decir que los computadores personales descienden de las calculadoras. La historia de la creación de los PC es muy entretenida por ese camino: hay bancarrotas, ladrones de ideas, oportunistas, genios de las computadoras y genios de las promociones. Algún día la contaré, aunque no se estudia directamente en la carrera.
Por otro lado está la evolución del sistema operativo. Los sistemas operativos de los PC no eran multiusuario ni multitarea cuando nacieron. El bajo coste del hardware no urgía de un aprovechamiento exhaustivo de éste y su reducido tamaño justificaba el uso de un sólo usuario. Algunas de las características de sistemas grandes no se aplicaron a los computadores personales. Por ejemplo, en principio se pensó que no era necesario un sistema de protección de archivos en computadores personales. Los virus chungos (que los informáticos llamamos programas maliciosos) demostraron lo contrario.
Pero otras muchas características de los macrocomputadores sí fueron utilizadas para gestionar PCs. El ejemplo más claro de esto es el sistema operativo MULTICS, desarrollado entre 1965 y 1970 en el MIT, que se ejecutaba en un monstruo (GE 645). Muchas de las ideas fueron tomadas de MULTICS cuando Dennis Ritchie y Ken Thompson desarrollaron UNIX para un "mini" computador PDP. A lo largo de los años 80 UNIX incorporó mecanismos de seguridad, multitarea y multiusuario que han sido tomados por muchos sistemas posteriores. Hay más de 100 sistemas operativos basados en UNIX en los últimos 20 años.
Por otro lado, IBM modernizó su primer sistema operativo para PCs, MS-DOS, y creó OS/2, lo que terminó en una crónica de un fracaso en la lucha contra Microsoft. OS/2 incorporaba ya multitarea. Microsoft, que mantuvo los derechos sobre su código para el primer PC de IBM, realizó su carrera en solitario en los 80. Tanto Windows 1.0 como 2.0 eran poco más que aplicaciones corriendo sobre MS-DOS, permitiendo, eso sí, la multitarea (MS-DOS no era multitarea ni multiusuario). Windows 3.0 ya incorporó gestión de memoria virtual. Hoy en día Windows acapara cerca del 90% de sistemas operativos del mundo.
Otro tipo de sistemas
Pero no nos perdamos. Los sistemas operativos están para más cosas que para bajarse música. Los hay que tienen que gestionar cálculos extremadamente grandes. Una solución consiste en utilizar muchos procesadores juntos. Un sistema con muchos procesadores incrementa sus prestaciones, pero requiere de una gestión mucho más compleja. A veces los sistemas paralelos comparten memoria u otros periféricos. A veces no. Hay que gestionar con cuidado las escrituras y lecturas de memoria cuando hay varios procesadores que las gastan porque, por ejemplo, podríamos leer una copia de un dato que actualmente está siendo modificado por otro procesador.
A veces hay muchos ordenadores distantes, cada uno con sus cosillas, ejecutando una tarea conjunta. A esto se le llama sistemas distribuidos. Los sistemas distribuidos suelen tener un sistema operativo "normal", pero por encima de él hay una capa de servicios relacionados con la gestión del sistema distribuido.
Otras veces es necesario imponer serias restricciones al tiempo en que deben ejecutarse ciertas tareas, como en entornos industriales. Para esto existen sistemas de tiempo real. A veces nos interesa que los errores que se puedan producir no detengan el sistema, sino que lo degraden de forma aceptable: buscamos sistemas tolerantes a fallos. En fin, las distintas necesidades determinan el tipo sistema que gastaremos.
Y yo no necesito más que Windows pirateado. Y por eso gasto Windows. Queda pues, contestada la pregunta que me hacía yo mismo.
1 Jamás entenderé por qué la RAE acepta cederrón y no pecé
Posts relacionados