Monitores
simples
La solución a la dificultad antes indicada tuvo
dos vías o camino. La primera consistió de disponer
de operadores profesionales y la segunda en procesar los trabajos
en forma de lotes (Batch).
Lo antes indicado implico un mejoramiento de la
eficiencia (aunque el programador perdió la posibilidad de
eliminar los errores en línea) pero no obstante
existía una perdida de tiempo en el cambio de un trabajo a
otro( terminara en forma normal o anormal).
La solución a esta perdida de tiempo
consistió en delegar en el propio equipo el cambio
automático, de los trabajos y con esto surgieron los
primeros y más rudimentarios sistemas de
operación.
Estos pequeños programas que permitían
transferir el control de un trabajo a otro, recibieron el nombre
de monitor residente. Permanecían en memoria todo el
tiempo.
El monitor residente le entregaba el control de
ejecución a un programa y cuando éste terminaba se
lo devolvía, estando en condiciones de volver a repetir la
operación en forma automática. Es decir, el monitor
residente transfería el control de un programa a otro y de
un trabajo a otro.
Para el logro de este secuenciamiento se requería
informar al monitor residente las acciones que se debían
realizar. Esta información se suministraba mediante
tarjetas perforadas que se llamaban Tarjetas de
Control.
En los monitores residentes se identificaban claramente
cuatro partes componentes (Fig 1.2):
? Vectores de interrupción y
trampas.? Manejadores de dispositivos.
? Cargador.
? Interprete de las tarjetas de
control.
Con las soluciones antes explicadas se daba respuesta a
las perdidas de tiempo provocadas en el secuenciamiento entre los
trabajos, pero permanecían las existentes a consecuencia
de las diferencias de velocidades entre el procesador central y
los dispositivos de E/S (dado su carácter
mecánico).
Lo antes indicado implicaba que el CPU frecuentemente se
encontraba inactivo esperando por una lenta E/S. Por otro lado,
cuando el CPU trabajaba, los equipos de E/S estaban
desocupados.
Una solución a la dificultad antes indicada
consistió en sustituir las lectoras de tarjetas y las
impresoras de líneas por bandas magnéticas, las que
brindaban entradas y salidas a una mayor velocidad, mejorando la
proporción de uso del CPU.
Las bandas que soportaban las entradas eran creadas a
partir de lectoras de tarjetas, pero fuera de línea. De
igual forma las bandas magnéticas que recibían las
salidas de la computadora eran impresas también fuera de
línea.
Otra solución a la lentitud de los dispositivos
de entrada salida consistió en el uso de buffers. El uso
de estos almacenes temporales es un intento por mantener al CPU y
los periféricos ocupados
simultáneamente.
La idea es simple. Por ejemplo en la entrada, cuando un
conjunto de datos ha sido leído se le ordena al
dispositivo de lectura proceda con la siguiente y la vaya
almacenando en un área de la memoria (Buffer), mientras el
CPU va procesando la anterior.
Si se logra (lo que es muy difícil) que en el
momento que el CPU quede libre ya el dispositivo de entrada haya
leído los próximos datos, entonces el CPU comienza
a procesarlos mientras el periférico inicia la
próxima transferencia.
En la práctica, rara vez el uso de la
técnica de buffers, logra que el CPU y los dispositivos de
entrada salida se mantengan ocupados todo el tiempo.
El surgimiento de los discos eliminó
rápidamente la preparación de lotes de trabajo
fuera de línea, pasándose a sistemas basados en
discos. Este dispositivo permitía se pudiera realizar
lecturas y escrituras simultáneas en diferentes zonas del
soporte (simplemente moviendo el cabezal).
La forma de procesamiento utilizada en los sistemas
basados en discos fue la conocida como SPOOLING
(Simultaneus Peripheral Operation On-Line).
En este tipo de procesamiento, de forma continua se van
leyendo directamente del lector de tarjetas los diferentes
trabajos que se almacenan en el disco. Cada vez que uno de ellos
es introducido, se anota en una tabla (y el área donde se
encuentra). Cuando el trabajo es ejecutado, sus solicitudes de
entrada se satisfacen leyendo en el disco. De forma similar,
cuando el trabajo solicita la impresora para imprimir, la
acción se realizará en un área del disco y
la impresión realmente se hará con
posterioridad.
El sistema de operación se encargará,
mediante la tabla antes indicada, de llevar el control de las
entradas y las salidas pertenecientes a cada trabajo.
Mientras el uso de buffers solapa la entrada/salida de
un trabajo con sus propios cálculos, el SPOOLING
permite igual acción con la entrada, salida y
cálculos de trabajos diferentes.
La técnica del SPOOLING constituye un
elemento consustancial de los sistemas operativos que funcionan
en computadoras grandes (mainframes) y que realizan
procesamientos en lotes.
La técnica del SPOOLING brinda
adicionalmente una importante estructura de datos, la piscina de
trabajos (Job Pool). Es decir, en un momento dado existen varios
trabajos leídos y listos para ser ejecutados. Esta
característica brinda la posibilidad al sistema operativo
de seleccionar cuál es el trabajo más conveniente a
procesar en cada momento con vistas a elevar el uso del CPU
(hasta ese momento se corrían en el orden, primero que
llega es el primero que se sirve).
La posibilidad de seleccionar para su ejecución a
un trabajo entre varios almacenados en un dispositivo de acceso
directo se le conoce como planificación de trabajos (Job
Scheduling).
Multiprogramación
El aspecto más importante que ofrece el "Job
Scheduling" es la posibilidad de la multiprogramación
(también nombrada como procesamiento
multitarea).
La multiprogramación (Fig1.6) es un intento de
incrementar la utilización del CPU, tratando de que
siempre tenga algo que hacer. La idea consiste en mantener varios
trabajos en memoria simultáneamente y cuando el que
está activo (utilizando el procesador) va a provocar una
espera (por ejemplo, al tener que esperar por una
entrada/salida), entonces se le quita el CPU y se le asigna a
otro que está listo para ejecutar.
A un trabajo que se le quitó el CPU (bloqueado),
eventualmente se le volverá a entregar siempre y cuando ya
haya ocurrido el evento que provocó la primera
acción.
Los trabajos que se mantienen en memoria se toman de la
piscina y la cantidad que en un momento puedan recibir y competir
por el CPU dependerá del diseño de la
administración de memoria (Memory Management).
Los sistemas de operación que permiten la
multiprogramación son algo complejos y este concepto ha
sido el motor impulsor del desarrollo de la teoría
alrededor de esta materia. La multiprogramación es el
aspecto central de los sistemas de operación
modernos.
Tiempo
compartido
El desarrollo de la multiprogramación
brindó la posibilidad de que los sistemas operativos
pudieran soportar en forma eficiente la posibilidad de atender en
forma interactiva a varios usuarios, trabajando cada uno en una
terminal y compartiendo entre todos el tiempo del procesador y
los restantes recursos existentes.
A los sistemas de operación que brindan la
posibilidad antes indicada se les conoce como Sistemas de Tiempo
Compartido.
Cada usuario tiene un programa separado en memoria.
Cuando a uno de ellos se le asigna el procesador, éste
ejecutará solamente por un período breve de tiempo
(en un medio interactivo los procesamiento son generalmente
cortos) antes de terminar o realizar una entrada/salida. Debido a
que el hombre que trabaja en la terminal es lento con respecto al
CPU, al producirse la entrada/salida se le retirará el CPU
y se comenzará la atención de otro
usuario.
En muchos esquemas de tiempo compartido se establece
adicionalmente que un usuario en posesión del CPU solo lo
retendrá durante una ranura o quantun de tiempo,
transcurrido éste lo perderá.
Debido a que el sistema cambia de un usuario a otro
rápidamente da a todos la impresión de estar
trabajando con una computadora propia.
Tiempo
Real
Los sistemas operativos de tiempo real también
hacen uso de la multiprogramación y atienden varios puntos
de acción, pero en su trabajo existen restricciones de
tiempo y el procesamiento se tiene que hacer dentro de estas
restricciones.
Este tipo de sistemas es generalmente utilizado para
controlar procesos físicos (experimentos
científicos, equipos industriales, equipos médicos,
etc).
Generaciones de
los sistemas operativos
Algunos autores (por ejemplo Tanembaun) para analizar la
evolución histórica de los sistemas operativos lo
hace asociando estos a las distintas generaciones de los sistemas
de cómputo. Por supuesto, esta estructuración no se
aleja de los aspectos antes estudiados.
La primera generación (1945-1955) corresponde a
los primeros equipos, construidos con válvulas de
vacío. En esta etapa no existieron sistemas
operativos.
La segunda generación (1955-1965) corresponde a
la etapa a los equipos que estaban basados en el uso de los
transistores. Eran más confiables y más duraderos.
Desde el punto de vista de los sistemas operativos se tiene el
uso de monitores simples (lo que implica procesamiento en
lote).
Sistemas de Operación de esta etapa son el FMS
(Fortran Monitor System) y el IBSYS de la 7094.
La tercera generación (1965-1980) se
caracterizó por la utilización de circuitos
integrados. Los sistemas operativos vinculados a esta etapa
introdujeron los conceptos de SPOOLING y en especial el
uso de la multiprogramación. También corresponde a
esta etapa la aparición del tiempo compartido.
En esta etapa no pueden dejar de mencionarse los
sistemas de operación OS/360 y Multics. Aquí surgen
las primeras versiones del Unix.
La cuarta generación (1980-1990) surge con los
circuitos integrados de alta integración y por ello
aparecen en el mercado las computadoras personales.
Esta etapa la dominan sistemas operativos MS-DOS y el
Unix (y en un inicio el CP/M).
El actual desarrollo de los sistemas operativos basados
en GUI (Graphic User Interface) y la incorporación de
orientación a objetos así como el soporte de la
multimedia, es suficientemente fuerte para hablar de la quinta
generación de los sistemas operativos.
En esta etapa la competencia se centra entre el Unix, el
Windows, Macintoch, y el OS/2 (al menos en las
microcomputadoras).
Sistemas
multiprocesadores
La mayoría de los sistemas de cómputo
existentes son monoprocesadores, es decir disponen de un solo
procesador central. El término multiprocesamiento
está referido a la existencia en un sistema de
cómputo de 2 ó más CPU que comparten la
memoria y los periféricos.
La principal ventaja de este tipo de
estructuración es el incremento de la potencia de
computación y la posibilidad de una programación
paralela real.
Los sistemas de cómputo más comunes con
esta organización disponen de un procesador maestro que
controla a otros (esclavos) que realizan tareas
específicas.
Los sistemas operativos que operan en estas condiciones
reciben el nombre de sistemas operativos de multiprocesador. La
imagen de estos sistemas se corresponde con la de los
uniprocesadores, es decir, la de un único sistema y por
ello su diseño e instrumentación son similares a la
de estos, excepto que se tienen que tener en cuenta
consideraciones especiales en el uso de los componentes que
pueden ser accedidos simultáneamente por más de un
procesador.
Bibliografia:
? Operating System Concepts, Peterson y
Silberschatz, pag 1-37.? Operating System:Design and Implementation,
Tanembaun, pag 1-13.
Autor:
Msc. Maykel J. Mena Hernández
Página anterior | Volver al principio del trabajo | Página siguiente |