Sistemas operativos:
Primera generación: Válvulas de vacio
1944.
Después de
los infructuosos esfuerzos de Babbage, se progresó poco en la construcción de
computadoras digitales hasta la Segunda Guerra Mundial. Alrededor de la mitad
de la década de los cuarenta, Howard Aiken en Hardvard, Jon Von Neumann en el
Instituto de Estudios Avanzados en Princeton, J. Presper Eckert y William
Mauchley en la Universidad de Pennsylvania y Konrad Zuse en Alemania, entre
otros, lograron construir máquinas de cálculo mediante bulbos. Estás máquinas
eras enormes y llenaban cuartos completos con decenas de miles de bulbos, eran
mucho más lentas que la computadora casera más económica en la actualidad.
En esos
primeros días, un grupo singular de personas diseñaba, construía, programaba,
operaba y daba mantenimiento a cada máquina. Toda la programación se realizaba
en lenguaje de maquina absoluto y con frecuencia se utilizaban conexiones para
controlar las funciones básicas de la máquina. Los lenguajes de programación se
desconocían (incluso el lenguaje ensamblador). Los primeros sistemas operativos
eran extraños (no se oía de los sistemas operativos). El modo usual de
operación consistía en que el programador firmaba para tener acceso a un bloque
de tiempo en la hoja de registro situada en la pared, después bajaba al cuarto
de máquinas, insertaba su conexión (tablero enchufable) en la computadora y
pasaba unas horas esperando que ninguno de los 20,000 tubos o más bulbos se
quemara durante la ejecución. La inmensa mayoría de los problemas eran cálculos
numéricos directos, como por ejemplo el cálculo de valores para tablas de senos
y cosenos.
A inicios de la década de los cincuenta, la rutina había
mejorado un poco con la introducción de la tarjetas perforadas. Ahora era
posible escribir los programas en
tarjetas y leerlos, en vez de utilizar tableros enchufables; por lo demás el
procedimiento era el mismo.
Segunda generación de Sistemas
Operativos: Transistores 1960.
La
introducción del transistor a mediados de la década de 1950 alteró el panorama
radicalmente. Las computadoras se hicieron
lo bastante confiables
como para poderse
fabricar y vender
a clientes comerciales con la
expectativa de que seguirían funcionando el tiempo suficiente para realizar
algo de trabajo útil. Por primera vez, había una separación clara entre
diseñadores, constructores, operadores, programadores y personal de
mantenimiento.
Estas
máquinas se encerraban en cuartos de computadora con acondicionamiento de aire
especial, con equipos de operadores profesionales para operarias. Sólo las
grandes empresas, o las principales dependencias del gobierno o universidades,
podían solventar el costo de muchos millones de dólares. Para ejecutar un
trabajo (es decir, un programa o serie de programas), un programador escribía
primero el programa en papel (en FORTRAN o ensamblador) y luego lo perforaba en
tarjetas. Después, llevaba el grupo de tarjetas al cuarto de entrada y lo
entregaba a uno de los operadores.
Cuando la
computadora terminaba el trabajo que estaba ejecutando en ese momento, un
operador acudía a la impresora,
separaba la salida
impresa y la
llevaba al cuarto
de salida donde
el programador podía recogerla después. Luego, el operador tomaba uno
de los grupos de
tarjetas traídos del cuarto de entrada y lo introducía en el lector. Si
se requería el compilador de FORTRAN, el operador tenía
que traerlo de
un archivero e
introducirlo en el
lector. Gran parte
del tiempo de computadora se desperdiciaba mientras los
operadores iban de un lugar a otro, en el cuarto de la máquina.
Dado el alto
costo del equipo, no es sorprendente que la gente pronto buscara formas de
reducir el desperdicio de tiempo. La solución que se adoptó generalmente fue el
sistema por lotes. El principio de este modo de operación consistía en juntar
una serie de trabajos en el cuarto de entrada, leerlos y grabarlos en una cinta
magnética usando una computadora pequeña y (relativamente) económica, como una
IBM 1401, que era muy buena para leer tarjetas, copiar cintas e imprimir
salidas, pero no para realizar cálculos numéricos. Otras máquinas, mucho más
costosas, como la IBM 7094, se usaban para la computación propiamente dicha,
ver Figura 2.
Tercera generación de sistemas
operativos: Circuitos integrados 1964-1970.
A principios
de la década de 1960, la mayoría de los fabricantes de computadoras tenían dos
líneas de producto distintas y totalmente incompatibles. Por un lado estaban
las computadoras científicas a gran escala, orientadas hacia las palabras, como
la 7094, que se usaban para cálculos numéricos en ciencias e ingeniería. Por el
otro, estaban las computadoras comerciales orientadas hacia los caracteres,
como la 1401, que los bancos y las compañías de seguros utilizaban amplia-
mente para ordenar e imprimir desde cinta.
La creación
y mantenimiento de dos líneas de producto totalmente distintas era una
situación costosa para los fabricantes. Además, muchos clientes de computadoras
nuevas necesitaban inicialmente una máquina pequeña que más adelante les
resultaba insuficiente, de modo que querían una máquina más grande que
ejecutara todos sus viejos programas, pero más rápidamente.
IBM trató de
resolver simultáneamente ambos problemas introduciendo la System/360. La 360
era una serie de máquinas de software compatible que iban desde tamaños
comparables a la 1401 hasta computadoras mucho más potentes que la 7094. Las
máquinas diferían sólo en el precio y el rendimiento (memoria máxima, velocidad
del procesador, número de dispositivos de E/S permitidos, etc.). Puesto que
todas las máquinas tenían la misma arquitectura y conjunto de instrucciones,
los programas escritos para una máquina podían ejecutarse en todas las demás,
al menos en teoría. Además, la 360 estaba diseñada para manejar computación tanto
científica como comercial. Así, una sola familia de máquinas podía satisfacer
las necesidades de todos los clientes. En años subsecuentes IBM produjo
sucesoras comparables a la línea 360, usando tecnología más moderna, conocidas
como series 370, 4300, 3080 y 3090.
A pesar de
su enorme tamaño y de sus problemas, OS/360 y los sistemas operativos de
tercera generación parecidos a él producidos por otros fabricantes de
computadoras lograron satisfacer a sus clientes en un grado razonable, y
también popularizaron varias técnicas clave que no existían en los sistemas
operativos de la segunda generación. Tal vez la más importante de ellas
haya sido la multiprogramación. En la 7094,
cuando el trabajo
actual hacía una
pausa para esperar
que se completara una
operación de cinta u otra
operación de E/S,
la CPU simplemente
permanecía ociosa hasta que la
E/S terminaba. En los cálculos científicos, con
gran uso de
CPU, la E/S es
poco frecuente, así que el tiempo
desperdiciado no es
significativo. En el procesamiento de datos comerciales, el tiempo de espera
por E/S puede ser el 80090% del tiempo total, de modo que algo debía hacerse
para evitar que la CPU estuviera ociosa tanto tiempo.
La solución
a la que se llegó fue dividir la memoria en varias secciones, con un trabajo
distinto en cada partición, como se muestra en la Figura 3. Mientras un trabajo
estaba esperando que terminara su E/S,
otro podía estar usando el CPU. Si se podían tener en la memoria principal
suficientes trabajos a la vez, el CPU podía mantenerse ocupada casi todo el
tiempo. Tener múltiples trabajos en la memoria a la vez requiere hardware
especial para proteger cada trabajo contra espionaje por parte de los demás,
pero la 360 y otros sistemas de tercera generación estaban equipados con este
hardware.
Cuarta generación de Sistemas
Operativos: Microprocesadores 1971-1988.
El
microprocesador (o simplemente procesador) es el circuito integrado central más
complejo de un sistema informático; a modo de ilustración, se le suele llamar
por analogía el «cerebro» de un computador.
Es el
encargado de ejecutar los programas, desde el sistema operativo hasta las
aplicaciones de usuario; sólo ejecuta instrucciones programadas en lenguaje de
bajo nivel, realizando operaciones aritméticas y lógicas simples, tales como
sumar, restar, multiplicar, dividir, las lógicas binarias y accesos a memoria.1
Puede
contener una o más unidades centrales de procesamiento (CPU) constituidas,
esencialmente, por registros, una unidad de control, una unidad aritmética
lógica (ALU) y una unidad de cálculo en coma flotante (conocida antiguamente
como «coprocesador matemático»).
El
microprocesador está conectado generalmente mediante un zócalo específico de la
placa base de la computadora; normalmente para su correcto y estable
funcionamiento, se le incorpora un sistema de refrigeración que consta de un
disipador de calor fabricado en algún material de alta conductividad térmica,
como cobre o aluminio, y de uno o más ventiladores que eliminan el exceso del
calor absorbido por el disipador. Entre el disipador y la cápsula del
microprocesador usualmente se coloca pasta térmica para mejorar la
conductividad del calor. Existen otros métodos más eficaces, como la
refrigeración líquida o el uso de células peltier para refrigeración extrema,
aunque estas técnicas se utilizan casi exclusivamente para aplicaciones
especiales, tales como en las prácticas de overclocking.
Quinta generación de Sistemas
operativos: Microelectronica 1984-1988.
Una
tecnología en microelectrónica se entiende como el conjunto de reglas, normas,
requisitos, materiales y procesos que aplicados en una secuencia determinada,
permite obtener como producto final un circuito integrado, que son dispositivos
electrónicos miniaturizados. Los más importantes son circuitos integrados de
Silicio corriente.La microelectrónica es la tecnología mediante la cual se
diseñan dispositivos electrónicos empacados en grandes densidades en una
pastilla única de semiconductor.
Sexta generación de Sistemas
operativos: Arquitecturas paralelas 1995- actualidad.
La
computación paralela es una forma de cómputo en la que muchas instrucciones se
ejecutan simultáneamente,1 operando sobre el principio de que problemas
grandes, a menudo se pueden dividir en unos más pequeños, que luego son
resueltos simultáneamente (en paralelo). Hay varias formas diferentes de
computación paralela: paralelismo a nivel de bit, paralelismo a nivel de
instrucción, paralelismo de datos y paralelismo de tareas. El paralelismo se ha
empleado durante muchos años, sobre todo en la computación de altas
prestaciones, pero el interés en ella ha decrecido últimamente debido a las
limitaciones físicas que impiden el aumento de la frecuencia.n. 1 2 Como el
consumo de energía —y por consiguiente la generación de calor— de las
computadoras constituye una preocupación en los últimos años.n. 2 3 la
computación en paralelo se ha convertido en el paradigma dominante en la
arquitectura de computadores, principalmente en forma de procesadores
multinúcleo.n. 3 4
Las
computadoras paralelas pueden clasificarse según el nivel de paralelismo que
admite su hardware: equipos con procesadores multinúcleo y multi-procesador que
tienen múltiples elementos de procesamiento dentro de una sola máquina y los
clústeres, MPPS y grids que utilizan varios equipos para trabajar en la misma
tarea. Muchas veces, para acelerar tareas específicas, se utilizan
arquitecturas especializadas de computación en paralelo junto a procesadores
tradicionales.
Los
programas informáticos paralelos son más difíciles de escribir que los
secuenciales,5 porque la concurrencia introduce nuevos tipos de errores de
software, siendo las condiciones de carrera los más comunes. La comunicación y
sincronización entre diferentes subtareas son algunos de los mayores obstáculos
para obtener un buen rendimiento del programa paralelo.
La máxima
aceleración posible de un programa como resultado de la paralelización se
conoce como la ley de Amdahl.