El siguiente documento hace un resumen de las décadas de los sistemas operativos de las décadas del 40 al 90, es sus aspectos generales. Documento realizadopor el docente Arvey Barahona Gómez
1. Década de los 40. La primera generación de computadores (1940-1955) se dio
en una época de tecnología de tubos al vacío (bulbos) y de computadores de
tamaño de salones de clase. Cada máquina era única en estructura y
propósito. No utilizaban software estándar de S.O., su uso estaba restringido a
algunos profesionales que estaban familiarizados con el hardware.
Los programadores operaban desde consolas con el control total, utilizando
tarjetas indicando a cada parte del sistema la función a realizar( cuando
empezar a trabajar, cuando almacenar información, cuando utilizar un
dispositivo de salida). Para eliminar errores de un programa detenían el
procesador, leían el contenido de cada registro, efectuaban las correcciones en
las localizaciones de memoria y reanudaban la operación. Para correr
programas, se reservaba la máquina el tiempo que se estimaban que tardaría
la ejecución del mismo. La máquina se utilizaba de manera deficiente. El CPU
trabajaba poco tiempo, sólo procesaba la información y efectuaba cálculos.
Con el paso del tiempo, el hardware y el software de cómputo se hicieron más
estándares y la ejecución de un programa requería menos pasos y
conocimientos de los mecanismos internos del computador.
Los sistemas operativos rudimentarios empezaron a tomar forma con la
creación de macro, programas de videoteca, subrutinas estándares y
programas de utilería Las unidades de dispositivos E/S contenían subrutinas
estandarizadas. Su desventaja radicaba en la utilización conservadora de los
recursos a costa de la comprensión ( muchas instrucciones utilizaban una
lógica complicada, sólo comprensible por el programador original).
Década de los 50. Los computadores de segunda generación (1955-1965) se
desarrollaron para satisfacer necesidades del mercado de los negocios. Se
daba importancia a la efectividad en costos del sistema. Era necesario
maximizar la producción para que fuese rentable el sistema. (costo/beneficio).
Se inicia el proceso de contratación de operadores de computadores facilitando
la operación de cada máquina y la programación de tareas. Aparecen los
compiladores en FORTRAN, el cual permitía que varios programas trabajasen
mientas estuviese residente en memoria. o bien se realizaban todas las tareas
del misto tipo (todas las lecturas de las tarjetas y luego las de cinta)
Este proceso introdujo el control de tarjetas, que definían la naturaleza exacta
de cada programa y sus requerimientos. Esto fue uno de los primeros usos de
un lenguaje de control de tareas (JCL) . Sin embargo, seguían presentando
problemas en el tiempo entre el CPU y los dispositivos E/S. Por ejemplo, una
tarea que significaba leer 1600 tarjetas, podía representar 79 segundos en el
lector de tarjetas y sólo 5 segundos de uso del CPU para ensamblar
(compilar). Esto significaba que el CPU estaba 94% del tiempo libre y solo
trabajaba 6% en dichas tareas.
Para mejorar el rendimiento del CPU intervinieron. Primero, la velocidad de los
dispositivos E/S (tambores, discos, unidades de cinta) fue más rápida.
Segundo, para utilizar más área de almacenamiento disponible en estos
dispositivos, los registros se bloqueaban antes de su recuperación o
2. almacenamiento (bloquear significa que varios registros lógicos se agrupan en
un registro físico). Tercero, para reducir la diferencia de velocidad entre entras
y salidas del CPU, se colocó una interfaz conocida como “ unidad de control”
entre ellas para ejecutar la función de almacenamiento temporal en el buffer.
Un buffer es un área temporal de almacenamiento que funciona como sigue:
conforme un dispositivo de entrada lento lee un registro. la unidad de control
coloca cada uno de los caracteres del registro en el buffer. Cuando éste se
llena, todos los registros se transmiten rápidamente al CPU. El proceso es
justo el opuesto para dispositivos de salida: El CPU coloca en el buffer todo el
registro , mismo que pasa por la unidad de control a la velocidad más lenta,
requerida por el dispositivo de salida. En algunos casos se utilizaba dos
buffers, el cual permitía el doble de velocidad.
Además del uso del buffer, se desarrolló una forma primitiva de efectuar
operaciones periféricas simultáneas, realizando operaciones de lectura,
impresión y perforación de tarjetas fuera de línea. Hoy día, esta forma de
operar se le nombra SPOOL que son las siglas en ingles de operación
periférica simultánea de línea (Simultaneous Peripheral Operations On Line). El
modo SPOOL funciona de la misma manera que un buffer pero, el dispositivo
periférico no está conectado directamente al CPU en tanto que el buffer es
parte del hardware de la máquina. Se desarrollan las interrupciones de tiempo
para proteger al CPU de ciclos infinitos en programas que por error tenían
instrucciones de ejecutar ciclos infinitos y permitir el trabajo compartido. Se
asigno una cantidad fija de tiempo de ejecución a cada programa al entrar al
sistema , lapso vigilado por el sistema operativo.
Durante la segunda generación, los programas seguían siendo operados en
modo de lotes seriales – uno por uno. El siguiente paso hacia un mejor uso de
los recursos del sistema fue pasar al procesamiento compartido.
Década de los 60. Las computadoras de tercera generación provienen de
mediados del decenio de los 60. Fueron diseñadas con CPU más rápidas, pero
su velocidad causó problemas cuando interactuaban con dispositivos E/S
relativamente lentos. La solución fue la MULTIPROGRAMACIÓN, que introdujo
la idea de cargar muchos programas de una vez y compartir la atención de un
CPU.
Los primeros sistemas de multiprogramación permitían que se diera servicio a
cada programa por turno, uno después de otro. El mecanismo más común para
implementar la multiprogramación fue introducir el concepto de interrupción ,,
que es cuando se notifica al CPU cuáles sucesos necesitan los servicios del los
sistemas operativos. Por ejemplo, cuando un programa emite un comando de
E/S, genera una interrupción que solicita los servicios del procesador de E/S
libera al CPU para que inicie la ejecución de la tarea siguiente. Esto se conoció
como multiprogramación pasiva, ya que el sistema operativo no controlaba la
interrupción, sino que esperaba a que cada tarea terminara una secuencia de
ejecución. Sin embargo, si el programa era muy largo debía terminar por
completo para que se iniciara la siguiente tarea. A fin de compensar este
defecto, diseñan la multiprogramación activa, que permitía que cada
programa nada más usara una tajada preestablecida del tiempo del CPU.
Cuando expiraba el plazo, la tarea se interrumpía y se iniciaba otra tarea. La
3. tarea interrumpida debía esperar su turno para continuar la ejecución. La idea
de dividir el tiempo se hizo común en muchos sistemas de tiempo compartido.
La clasificación de los trabajos en grupos y la carga selectiva de los mismos
por prioridad o requerimientos de memoria permitieron hacer uso eficiente del
recurso de memoria principal. Además de planificar los trabajos, de manejar las
interrupciones, y asignar memoria, los sistemas operativos tenían que resolver
conflictos cuando dos tareas solicitaban un dispositivo al mismo tiempo.
Los sistemas operativos de las máquinas tercera generación consistían en
muchos módulos entre los cuales podía seleccionar el usuario, por lo que todo
el sistema operativo se personalizaba para adecuarse a necesidades
particulares. Los módulos de mayor uso se hacían residentes en el núcleo y
los menos utilizados residían en un almacenamiento secundario y eran
llamados sólo cuando hacían falta.
Década de los 70´s. A fines de los 70 los computadores tenían CPU más
rápidas, lo que aumentó la disparidad entre su velocidad de procesamiento y el
tiempo de acceso más lento de las E/S. El esquema de multiprogramación
estaba limitado por la capacidad física de la memoria principal, que era costoso
y limitado.
Una solución fue el desarrollo de la memoria virtual, que aprovechó el hecho
de que el CPU sólo podía procesar una instrucción a la vez. Con ella, no era
necesario que todo el programa residiera en la memoria antes de iniciar la
ejecución. Un sistema con memoria virtual dividiría los programas en
segmentos, los mantendría en almacenamiento secundario y traería cada
segmento a la memoria conforme fuese necesario.
También se existía software de administración de base de datos, el cual
permitía organizar los datos de una manera integral, minimizaba la redundancia
y simplificaba la actualización e el acceso a los datos. Se obligó el crecimiento
de terminales y un software de comunicación de datos
Se inicia la estandarización del software y los programas con palabras típicas
del ingles y estructura modular permitiendo el mantenimiento del mismo en
forma fácil y rápida.
Década del 80. El desarrollo en este decenio mejoró de una manera dramática
la relación costo/rendimiento de los componentes de los computadores. El
hardware era más flexible, con funciones lógicas incorporadas en tarjetas de
fácil reemplazo. También era menos costosa, por lo que más funciones del
sistema operativo se hicieron parte del hardware. Esto dio lugar a un nuevo
concepto el firmware, término utilizado para indicar que un programa está
contenido de manera permanente en ROM. El software del sistema
desempeñaba muchas funciones de programación. EL programador no
dependía tanto del hardware.
4. La industria se pasó al multiprocesamiento, en el cual existía más de un
procesador, diseñándose lenguajes más elaborados para coordinar las
actividades de los diversos procesadores que daban servicio a la tarea.
La evolución de los computadores personales y de las comunicaciones de alta
velocidad originó el cambio al procesamiento distribuido y los sistemas en red.
Exigiendo un nuevo hardware y un sistema operativo capaz de administrar
varios conjuntos de subsistemas. Los sistemas operativos en permitían trabajar
en una máquina con tareas y programas de otra (acceso remoto). La
desventaja de un sistema operativo de este tipo era la necesidad de algoritmos
más complicados de programación de procesadores. Además, los retardos de
comunicación dentro de la red significaban que algunas veces los algoritmos de
programación tenían que operar con información incompleta o desactualizada.
Década del 90. A mediados de los 90 la demanda generalizada de
capacidades de Internet originó la proliferación de capacidades de red. Hoy, la
accesibilidad a web y el intercambio de correo electrónico son características
comunes en casi todo sistema operativo. Sin embargo, el crecimiento de la red
también ha creado mayor demanda de seguridad, a fin de proteger el hardware
y el software.
Igualmente, proliferaron las aplicaciones de multimedios que demandan
potencia, flexibilidad y compatibilidad de dispositivos adicionales para la
mayor parte de los sistemas operativos. Este requiere que SO controle
dispositivos hardware especializados y una gran capacidad de almacenamiento