Site hosted by Angelfire.com: Build your free website today!

2. CONCEPTOS FUNDAMENTALES SOBRE SISTEMAS OPERATIVOS. EVOLUCION DE LOS SISTEMAS OPERATIVOS.

 

Proceso en serie

 

En los primeros computadores, a fines de los 40 hasta mediados de los 50, el programador interactuaba directamente con el hardware; no había sistema operativo. La operación con estas máquinas se efectuaba desde una consola consistente en unos indicadores luminosos, unos conmutadores, algún dispositivo de entrada y una impresora. Los programas en código de máquina se cargaban a través del dispositivo de entrada. Si se detenía el programa por un error, la condición de error se indicaba mediante los indicadores luminosos. El programador podía examinar los registros y la memoria principal para determinar la causa del error. Si el programa continuaba hasta su culminación normal, la salida aparecería en la impresora.

       Estos sistemas presentaban dos problemas principales:

-         Planificación: la mayoría de las instalaciones empleaban un formulario de reserva de tiempo de máquina. Un usuario podía reservar una hora y terminar a los 45 minutos (produciendo un desperdicio del tiempo de computador) o, bien no alcanzarle el tiempo reservado (dejando trabajos inconclusos).

-         Tiempo de preparación: un programa sencillo cargaba un compilador y un programa fuente, salvaba el programa compilado (programa objeto) y luego montaba y cargaba el programa objeto junto con las funciones comunes. Cada uno de estos pasos podía implicar montar y desmontar cintas o preparar paquetes de tarjetas.

       Este modo de operación podría denominarse proceso en serie porque refleja el hecho de que los usuarios tenían que acceder al computador en serie.

 

Sistemas sencillos de proceso por lotes

 

Para mejorar el uso, se desarrolló el concepto de sistema operativo por lotes (batch). El primer S.O. por lotes fue desarrollado a mediados de los 50 por General Motors.

La idea central que está detrás del esquema sencillo de proceso por lotes es el uso de un elemento SW conocido como monitor. Para entender cómo funciona este esquema, se va a ver desde dos puntos de vista: el del monitor y el del procesador.

Desde el punto de vista del monitor, él es quien controla la secuencia de sucesos. Para que esto sea posible, gran parte del monitor debe estar siempre en memoria principal y disponible para su ejecución. Esta parte del monitor se conoce como monitor residente. El resto del monitor consta de utilidades y funciones comunes que se cargan como subrutinas en los programas de los usuarios al comienzo de cualquier trabajo que las necesite.

El monitor lee los trabajos uno a uno del dispositivo de entrada y, a medida que los lee, el trabajo actual se ubica en la zona del programa de usuario y toma el control. Cuando el trabajo termina, se devuelve el control al monitor, quien lee el siguiente trabajo. Los resultados de cada trabajo se imprimen y entregan al usuario.

Consideremos ahora desde el punto de vista del procesador. El procesador ejecuta las instrucciones del programa de usuario hasta que encuentre una condición de finalización o de error, tras lo cual va en búsqueda de la instrucción siguiente del programa monitor.

Debe quedar claro que es el monitor el que gestiona el problema de la planificación. Con respecto a la preparación de los trabajos, también el monitor se encarga de ello. Con cada trabajo se incluyen instrucciones de una forma primitiva de lenguaje de control de trabajos (JCL - Job Control Language), que es un tipo especial de lenguaje de programación empleado para dar instrucciones al monitor.

Durante la ejecución del programa de usuario, cada instrucción de entrada origina la lectura de una tarjeta de datos. La instrucción de entrada en el programa del usuario hace que se invoque una rutina de entrada, que forma parte del sistema operativo. La rutina de entrada se asegura de que el programa de usuario no ha leído accidentalmente una tarjeta JCL; si esto sucede, se produce un error y el control se transfiere al monitor.

Los sistemas sencillos por lotes también poseen las siguientes características:

-         Protección de memoria: mientras el programa del usuario esté ejecutándose, no debe modificar la zona de memoria en la que está el monitor. Si se hace un intento tal, el HW del procesador deberá detectar el error y transferir el control al monitor, quien abortará entonces el trabajo, imprimirá el mensaje de error y cargará el siguiente trabajo.

-         Uso de temporizador: impide que un solo trabajo monopolice el sistema. El temporizador se larga al comenzar cada trabajo y si expira el tiempo, se producirá una interrupción y el control volverá al monitor.

-         Instrucciones privilegiadas: ciertas instrucciones son designadas como privilegiadas y pueden ser ejecutadas sólo por el monitor. Si el procesador, al ejecutar el programa del usuario, encuentra una instrucción tal, entonces se produce una interrupción de error.

En un S.O. por lotes, el tiempo de máquina se reparte entre la ejecución de programas de usuario y la ejecución del monitor. Así se tienen dos pérdidas: se entrega al monitor cierta cantidad de memoria principal y éste consume cierto tiempo de máquina.

 

Sistemas por lotes con multiprogramación

 

Aún con el secuenciamiento automático de los trabajos ofrecido por un S.O. por lotes, el procesador está desocupado a menudo. El problema es que los dispositivos de E/S son lentos comparados con el procesador.

Esta ineficiencia no es necesaria. Se sabe que hay memoria suficiente para almacenar el S.O. (el monitor residente) y un programa de usuario. Supóngase que hay espacio suficiente para el sistema operativo y dos programas usuarios. Ahora, cuando un trabajo necesite esperar una E/S, el procesador puede cambiar al otro trabajo que probablemente no estará esperando a la E/S. Además se podría ampliar la memoria para almacenar tres, cuatro o más programas y conmutar entre todos ellos. Este proceso es conocido como multiprogramación o multitarea. Éste es el punto central de los sistemas operativos modernos.

 

Sistemas de tiempo compartido

 

Con el uso de la multiprogramación, el tratamiento por lotes puede llegar a ser bastante eficiente. Sin embargo, para muchas tareas, es conveniente suministrar un modo en que el usuario interactúe directamente con el computador.

Al igual que la multiprogramación permite al procesador manejar varias tareas por lotes al mismo tiempo, la multiprogramación puede también utilizarse para manejar varias tareas interactivas. En este último caso, la técnica se conoce como tiempo compartido, porque refleja el hecho de que el tiempo del procesador es compartido entre los diversos usuario. La técnica básica de un sistema de tiempo compartido es tener a varios usuarios utilizando simultáneamente el sistema mediante terminales, mientras que el sistema operativo intercala la ejecución de cada programa de usuario en ráfagas cortas de cómputo (quantum). De esta manera si hay n usuario que solicitan el servicio a la vez, cada usuario sólo dispondrá, en promedio, de 1 / n de la atención efectiva del computador, sin contar con la sobrecarga del sistema operativo.

Uno de los primeros sistemas de tiempo compartido que se desarrollaron fue el Sistema Compatible de Tiempo Compartido (CTSS, Compatible Time-Sharing System) en 1961. Su funcionamiento básico es fácil de explicar. El sistema se ejecutaba en una máquina con una memoria de 32 K palabras de 36 bits, con un monitor residente que consumía 5 K del total. Cuando había que asignar el control a un usuario interactivo, el programa del usuario y los datos eran cargados en los restantes 27 K de la memoria principal. Un reloj del sistema generaba interrupciones a razón de aprox. una cada 0,2 segundos. En cada interrupción del reloj, el S.O. se adueñaba del control y le podía asignar el procesador a otro usuario. De esta manera, a intervalos regulares, el usuario en curso era expulsado y se cargaba otro usuario en su lugar. Para conservar el estado del usuario anterior, para su reanudación posterior, los programas del usuario anterior y sus datos eran escritos en el disco antes de leer los programas del nuevo usuario y sus datos. En consecuencia, el espacio de memoria del usuario anterior debía ser restaurado cuando le llegara de nuevo su turno.

 

Sistemas distribuidos

 

Un sistema de procesamiento de datos en que todas las funciones están centralizadas en una CPU y un S.O. se llama procesamiento centralizado.

En cambio, un procesamiento distribuido es aquel en que se ejecutan los datos en distintos nodos, dispersos geográficamente, interconectados mediante una red. Las características principales de un sistema distribuido son:

-         Fragmentación de los elementos que componen una aplicación, en dos o más sistemas interconectados, de igual o diferente arquitectura operativa.

-         Los recursos de los sistemas se controlan y administran en forma independiente