En un principio solo
existía el hardware del computador. Los primeros computadores eran
(físicamente) grandes maquinas que se operaban desde una consola. El
programador escribía un programa y luego lo controlaba directamente desde la
consola. En primer lugar, el programa se cargaba manualmente en la memoria,
desde los interruptores del tablero frontal (una instrucción en cada ocasión),
desde una cinta de papel o desde tarjetas perforadas. Luego se pulsaban los
botones adecuados para establecer la dirección de inicio y comenzar la
ejecución del programa. Mientras este se ejecutaba, el programador-operador lo
podía supervisar observando las luces en la consola, si se descubrían errores,
el programador podía detener el programa, examinar el contenido de la memoria y
los registros y depurar el programa directamente desde la consola. La salida
del programa se imprimía, o se perforaba en cintas de papel o tarjetas para su
impresión posterior.
Sin embargo, con este
procedimiento se presentaban ciertos problemas. Supongamos que un usuario se
había registrado para usar una hora de tiempo del computador dedicada a
ejecutar el programa que estaba desarrollando, pero se topaba con algún error
difícil y no podía terminar en esa hora. Si alguien más había reservado el
siguiente bloque de tiempo, usted debía detenerse, rescatar lo que pudiera y
volver mas tarde para continuar. Por otra parte, si el programa se ejecutaba
sin problemas, podría terminar en 35 minutos; pero como pensó que necesitaría
la maquina durante más tiempo, se registro para usarla una hora, y permanecería
inactiva durante 25 minutos.
Conforme transcurrió
el tiempo, se desarrollaron software y hardware adicionales; empezaron a
popularizarse los lectores de tarjetas, impresoras de líneas y cintas
magnéticas; se diseñaron ensambladores, cargadores y ligadores para facilitar
las tareas de programación, y se crearon bibliotecas de funciones comunes, de
manera que estas podían copiarse a un nuevo programa sin tener que escribirlas
de nuevo.
Las rutinas que
efectuaban operaciones de E/S tenían una importancia especial. Cada nuevo
dispositivo de E/S poseía sus propias características, lo que requería una
cuidadosa programación. Así mismo, para cada uno de ellos se escribía una
subrutina especial, la cual se denominaba manejador de dispositivos. Este sabe
como deben de usarse los buffers, indicadores, registros, bits de control y
bits de estado para cada dispositivo. Cada tipo de dispositivo tenía su propio
manejador. Una tarea sencilla, como leer un carácter de un lector de cinta de
papel, podía conllevar complicadas secuencias de operaciones específicas para
el dispositivo. En lugar de tener que escribir cada vez el código necesario,
bastaba usar el manejador de dispositivo de la biblioteca.
Más tarde aparecieron
los compiladores de FORTRAN, COBOL y otros lenguajes, lo que facilito la tarea
de programación, pero hizo más complejo el funcionamiento del computador. Por
ejemplo, al preparar la ejecución de un programa en FORTRAN, el programador
primero necesitaba cargar en el computador el compilador de FORTRAN, que
generalmente se conservaba en una cinta magnética, por lo que había que montar
la cinta adecuada en la unidad correspondiente. El programa se leía a través
del lector de tarjetas y se escribía en otra cinta. El compilador de FORTRAN
producía una salida en lenguaje ensamblador, que luego tenia que ensamblarse,
para esto era necesario montar otra cinta con el ensamblador, y su salida debía
enlazarse con las rutinas de apoyo de las bibliotecas. Finalmente, el programa
objeto, en código binario, estaba listo para ejecutarse; se cargaba en memoria
y se depuraba desde la consola como antes.
Los Sistemas
Operativos, al igual que el Hardware de los computadores, han sufrido una serie
de cambios revolucionarios llamados generaciones. En el caso del Hardware, las
generaciones han sido marcadas por grandes avances en los componentes
utilizados, pasando de válvulas (primera generación) a transistores (segunda
generación), a circuitos integrados (tercera generación), a circuitos
integrados de gran y muy gran escala (cuarta generación). Cada generación
Sucesiva de hardware ha ido acompañada de reducciones substanciales en los
costos, tamaño, emisión de calor y consumo de energía, y por incrementos
notables en velocidad y capacidad.
Generación Cero (década de 1940)
Los primeros sistemas
computacionales no poseían sistemas operativos. Los usuarios tenían completo
acceso al lenguaje de la maquina. Todas las instrucciones eran codificadas a
mano.
Primera Generación (década de 1950)
Los sistemas
operativos de los años cincuenta fueron diseñados para hacer mas fluida la
transición entre trabajos. Antes de que los sistemas fueran diseñados, se
perdía un tiempo considerable entre la terminación de un trabajo y el inicio
del siguiente. Este fue el comienzo de los sistemas de procesamiento por lotes,
donde los trabajos se reunían por grupos o lotes. Cuando el trabajo estaba en
ejecución, este tenia control total de la maquina. Al terminar cada trabajo, el
control era devuelto al sistema operativo, el cual limpiaba y leía e iniciaba
el trabajo siguiente.
Al inicio de los 50's
esto había mejorado un poco con la introducción de tarjetas perforadas (las
cuales servían para introducir los programas de lenguajes de máquina), puesto
que ya no había necesidad de utilizar los tableros enchufables.
Además el laboratorio
de investigación General Motors implementó el primer sistema operativo para la
IBM 701. Los sistemas de los 50's generalmente ejecutaban una sola tarea, y la
transición entre tareas se suavizaba para lograr la máxima utilización del
sistema. Esto se conoce como sistemas de procesamiento por lotes de un sólo
flujo, ya que los programas y los datos eran sometidos en grupos o lotes.
La introducción del
transistor a mediados de los 50's cambió la imagen radicalmente. Se crearon
máquinas suficientemente confiables las cuales se instalaban en lugares
especialmente acondicionados, aunque sólo las grandes universidades y las
grandes corporaciones o bien las oficinas del gobierno se podían dar el lujo de
tenerlas.
Para poder correr un
trabajo (programa), tenían que escribirlo en papel (en FORTRAN o en lenguaje
ensamblador) y después se perforaría en tarjetas. Enseguida se llevaría la pila
de tarjetas al cuarto de introducción al sistema y la entregaría a uno de los
operadores. Cuando la computadora terminara el trabajo, un operador se
dirigiría a la impresora y desprendería la salida y la llevaría al cuarto de
salida, para que la recogiera el programador.
Segunda Generación (a mitad de la década de 1960)
La característica de
los sistemas operativos fue el desarrollo de los sistemas compartidos con
multiprogramación, y los principios del multiprocesamiento. En los sistemas de
multiprogramación, varios programas de usuario se encuentran al mismo tiempo en
el almacenamiento principal, y el procesador se cambia rápidamente de un
trabajo a otro. En los sistemas de multiprocesamiento se utilizan varios
procesadores en un solo sistema computacional, con la finalidad de incrementar
el poder de procesamiento de la maquina.
La independencia de
dispositivos aparece después. Un usuario que desea escribir datos en una cinta
en sistemas de la primera generación tenia que hacer referencia especifica a
una unidad de cinta particular. En la segunda generación, el programa del
usuario especificaba tan solo que un archivo iba a ser escrito en una unidad de
cinta con cierto número de pistas y cierta densidad.
Se desarrollo
sistemas compartidos, en la que los usuarios podían acoplarse directamente con
el computador a través de terminales. Surgieron sistemas de tiempo real, en que
los computadores fueron utilizados en el control de procesos industriales. Los
sistemas de tiempo real se caracterizan por proveer una respuesta inmediata.
Tercera Generación (mitad de década 1960 a mitad década de
1970)
Se inicia en 1964,
con la introducción de la familia de computadores Sistema/360 de IBM. Los
computadores de esta generación fueron diseñados como sistemas para usos
generales. Casi siempre eran sistemas grandes, voluminosos, con el propósito de
serlo todo para toda la gente. Eran sistemas de modos múltiples, algunos de
ellos soportaban simultáneamente procesos por lotes, tiempo compartido, procesamiento
de tiempo real y multiprocesamiento. Eran grandes y costosos, nunca antes se
había construido algo similar, y muchos de los esfuerzos de desarrollo
terminaron muy por arriba del presupuesto y mucho después de lo que el
planificador marcaba como fecha de terminación.
Estos sistemas
introdujeron mayor complejidad a los ambientes computacionales; una complejidad
a la cual, en un principio, no estaban acostumbrados los usuarios.
Cuarta Generación (mitad de década de 1970 en adelante)
Los sistemas de la
cuarta generación constituyen el estado actual de la tecnología. Muchos
diseñadores y usuarios se sienten aun incómodos, después de sus experiencias
con los sistemas operativos de la tercera generación.
Con la ampliación del
uso de redes de computadores y del procesamiento en línea los usuarios obtienen
acceso a computadores alejados geográficamente a través de varios tipos de
terminales.
Los sistemas de
seguridad se han incrementado mucho ahora que la información pasa a través de
varios tipos vulnerables de líneas de comunicación. La clave de cifrado esta
recibiendo mucha atención; han sido necesario codificar los datos personales o
de gran intimidad para que; aun si los datos son expuestos, no sean de utilidad
a nadie mas que a los receptores adecuados.
No hay comentarios:
Publicar un comentario