Los inicios del software y los sistemas operativos

Los primeros sistemas utilizados para realizar operaciones matemáticas valiéndose de máquinas no tenían nada que ver con los sistemas actuales.
En aquellos primeros sistemas, las tareas eran a menudo tediosas y rutinarias empleándose además una gran cantidad de personal en el desarrollo de trabajos que hoy se considerarían triviales.

tarjetaperforada_01.jpgEl primer tipo de estos sistema, se denominó “modalidad batch” y consistía básicamente en la carga manual del programa en memoria desde interruptores, cinta de papel, tarjetas perforadas. Cuando se comenzó a trabajar en tarjetas perforadas, esas tarjetas, que contenían el programa y los datos, formaban un lote que se procesaba de manera secuencial, en su totalidad, desde su comienzo hasta el final. A esta modalidad se la llamó batch. (Nota: Se llama batch a la modalidad de trabajo, no a que el programa residiera en tarjetas perforadas).

Considérese que los sistemas aún admiten la modalidad de trabajo batch, aunque hace tiempo que las tarjetas perforadas no se utilizan.
En estos sistema, existía una interacción directa del programador con su programa. El acceso a la computadora era por un esquema de reservas es decir, se solicitaban turnos para trabajar en ella. Se desarrollaba hardware y software adicional: lectores de tarjetas, impresoras de líneas y cintas magnéticas; ensambladores, cargadores y linkeditores, bibliotecas de funciones comunes, manejadores de dispositivo (almacenados en bibliotecas). Por entonces aparecen los compiladores (FORTRAN, COBOL y otros).



El programador debía entonces:
1. Cargar el compilador FORTRAN, normalmente en cinta.
2. Leer el programa desde las tarjetas y escribirlo en otra cinta
3. El compilador FORTRAN producía una salida ensamblada que debía ser ejecutada por el ensamblador
4. Luego del ensamblador se enlazaban las rutinas de apoyo de las bibliotecas y ahí se generaba el programa objeto que se cargaba en memoria y se depuraba como antes.

La carga y descarga de cintas, con su puesta online y offline, la decisión sobre el orden de los programas (pues una vez que se ponía el lote de trabajos no podíamos alterar su orden), sumado a los tiempos propios que consume la actividad cuando es manual, exigieron encontrar la manera de optimizar esta tarea.

El inconveniente de este esquema era que la CPU permanecía inactiva durante la preparación de trabajos y la intervención manual de usuarios no especializados.
Se consideraron alternativas válidas para solucionar este problema:
La contratación de un operador profesional (eliminación de la lista de reservaciones) y la agrupación de trabajos en lotes. Para superarlo se desarrolló la secuencia automática de trabajos.

Surgen los primeros sistemas operativos rudimentarios: el monitor residente que siempre reside en memoria. O sea, software que maneja automáticamente los trabajos y que se carga al encender la máquina.

El método para darle instrucciones al monitor sobre cómo trabajar es a través de las tarjetas de control. Estas tarjetas intercaladas en el lote del programador, que comenzaban con caracteres especiales para no confundirse con las tarjetas de programa o datos, instruían sobre las características del trabajo, donde comenzaba y finalizaba el programa o los datos, qué tipo de salida tenía asociada este trabajo, dónde finalizaba el lote. El intérprete de las tarjetas de control lee y realiza las instrucciones de las tarjetas. Invoca por intervalos al cargador para cargar los programas de sistema y aplicaciones.

La diferencia de velocidad de la CPU con respecto a la de los dispositivos de entrada-salida siempre fue superior. Se buscaba un método de entrada y salida que agilizara esta gestión y permitiera disminuir el tiempo de CPU ocioso. Se sustituyeron los lectores de tarjetas e impresoras de línea por las unidades de cinta magnéticas. Normalmente en esta época los sistemas eran por lotes leyendo de tarjetas perforadas y escribiendo en impresoras de línea o perforadoras. Entonces se implementó leer las tarjetas y almacenarlas en una cinta (esto se hacía en una pequeña computadora que sólo tenía esa función) y posteriormente llevar a la CPU (a la computadora de mayor capacidad de proceso) la cinta y recién allí ejecutar. Esto fue llamado procesamiento fuera de línea.

No había necesidad de cambiar los programas de aplicación para usarlo pues lo que cambiaba era la referencia desde el JCL (Job Control Language). Se implementó a través de lo que se llama una unidad lógica: al inicio del lote se especificaba que la unidad de dispositivo número y en el cambio de la asignación del dispositivo, por ejemplo, a cintas, el programa no se modificaba. A esto se lo llamó independencia del dispositivo, posible de implementar pues el programa hacia referencia a dispositivos lógicos.

Almacenamiento temporal – Buffers y spoolers
Un buffer es un área de memoria, que utilizamos temporalmente para el almacenamiento de información de entrada o salida. Gracias a la creación de estas áreas intermedias permitió solapar la E/S con el procesamiento, disminuyendo el tiempo de CPU ociosa. Por ejemplo: se puede ir leyendo un registro y almacenando en el buffer, mientras se está procesando el registro anterior. Lo mismo ocurre con la salida.
Si la CPU termina de trabajar antes que culmine la E/S, entonces tendrá que esperar. Si termina antes la E/S entonces deberá esperar o continuar leyendo otro registro, si hay lugar en el buffer (normalmente hay capacidad para varios registros). Nota: en la entrada, en el buffer están los registros leídos, no procesados.

300px-cintas_video.JPGEl surgimiento de sistemas con disco magnético superaron la operación fuera de línea. La secuencialidad, característica en los sistemas por lotes de tarjetas y por cinta, se vé aventajada por los discos, qie permiten la posibilidad de mover la cabeza lectora a diferentes lugares del medio.
Gracias a la nueva tecnología surge el almacenamiento temporal con spoolers (Simultaneous peripheral operation on-lune). Se usa tanto para trabajo local como para remoto. El spooler hace simultánea la E/S de un trabajo con el procesamiento de otro trabajo.

A lo largo de la evolución de los sistemas, la mayor funcionalidad exige mejores recursos: se debe incrementar el espacio de memoria y disco para permitir el almacenamiento necesario para el spool y las tablas de asignación. A través del spooler se logró el job pool, el depósito de trabajos. Así, el sistema operativo podía seleccionar que trabajo ejecutar, lo que llevó a a hacer posible la planificación de trabajos y con ello a los sistemas multiprogramados.

FUENTES GRAFICAS:
www.teclas.org
Wikipedia

Valora esta noticia: 1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (0 votos, media: 0,00 de 5)
Loading ... Loading ...