1.2 Historia y Evolución de los S.O.

 

HISTORIA

Es útil considerar el hecho de cómo se han desarrollado  los sistemas operativos con el tiempo. Existen diversos enfoques o versiones de cómo han ido evolucionando los Sistemas Operativos. En esta sección se presentan 3 diferentes descripciones de la evolución de los sistemas operativos.  

PRIMERA VERSIÓN:  

Procesamiento serial  

        Con las primeras computadoras, desde los últimos años cuarentas hasta la mitad de los años cincuentas, el programador interactuaba de manera directa con el hardware de la computadora; no había sistema operativo. Estas máquinas eran operadas desde una consola que tenía luces de exhibición, interruptores para activar y desactivar, alguna forma de dispositivo de entrada y una impresora. Los programas en código de máquina se cargaban mediante el dispositivo de entrada (por ejemplo, un lector de tarjetas). Si un error detenía el programa, las luces indicaban la condición de error. El programador podía proceder a examinar los registros y la memoria principal para determinar la causa del error. Si el programa proseguía hasta su terminación normal, la salida aparecía en la impresora.  

        Estos primeros sistemas presentaban dos problemas principales:  

    Planificación: la mayoría de las instalaciones usaba una solicitud para reservar el tiempo de máquina. De manera típica, un usuario podía solicitar un bloque de tiempo en múltiplos de media hora o algo así. Otro usuario podía solicitar una hora y finalizar en 45 minutos; esto daba como resultado que se desperdiciara el tiempo desocupado de la computadora. Por otra parte, el usuario podía tener problemas al no terminar en el tiempo asignado y ser obligado a detenerse antes de resolver el problema.

    Tiempo de puesta a punto: un solo programa, llamado un trabajo, podía implicar la necesidad de cargar el compilador y el programa de lenguaje de alto nivel (programa fuente) en la memoria, guardar el programa compilado (programa objeto) y después cargar y ligar juntos el programa objeto y las funciones comunes. Cada uno de estos pasos podía implicar montar o desmontar cintas o posicionar paquetes de tarjetas. Si ocurría un error, de manera típica, el desafortunado usuario tenía que regresar al principio de la secuencia de instalación. Por tanto, se gastaba mucho tiempo sólo en poner a punto el programa para correr.

 

Este modo de operación puede llamarse procesamiento serial, reflejado en el hecho de que los usuarios tenían derecho a la computadora en serie. Con el tiempo, se desarrollaron varias herramientas de software del sistema para intentar hacer mas eficiente el procesamiento serial. Éstas incluían bibliotecas de funciones comunes, ligadores, cargadores, depuradores así como rutinas de manejo de E/S que estaban disponibles como software común para todos los usuarios.

 

Sistemas por lotes simples  

          Las primeras máquinas eran muy caras, y por lo tanto, era importante maximizar el uso de máquina. El tiempo desperdiciado por causa del tiempo de planeación e instalación no era aceptable.

           Para mejorar el uso, se desarrolló el concepto de un sistema operativo por lotes. El primer sistema operativo por lotes (esto es, el primer sistema operativo de cualquier clase) fue desarrollado en la mitad de los años cincuentas por General Motors para usarlo en la IBM 701. El concepto se refinó después y lo implementaron en la IBM 794 varios clientes IBM. Al principio de la década de los setentas, varios vendedores habían desarrollado sistemas operativos por lotes para sus sistemas computacionales. IBSYS, el sistema operativo IBM para las computadoras 7090/7094, es notable en particular debido a su amplia influencia sobre otros sistemas.

           La idea central detrás del esquema de procesamiento por lotes simple fue el uso de una pieza de software conocida como monitor. Con el uso de este tipo de sistema operativo, el usuario ya no tenía acceso directo a la máquina. Mas bien, el usuario propone el trabajo en tarjetas o cinta a un operador de computadora, quien hace lotes de los trabajos reunidos de manera secuencial y coloca el lote completo en un dispositivo de entrada para que lo use el monitor. Cada programa esta construido para regresar al monitor cuando completa el procesamiento, en este punto el monitor carga el siguiente programa de manera automática.

           El monitor o sistema operativo por lotes, es solo un programa de computadora. Se basa  en la capacidad del procesador para buscar instrucciones desde varias partes de la memoria principal con el fin de obtener y entregar el control.

            Con un sistema operativo por lotes, el tiempo de máquina se alterna entre la ejecución de programas usuario y la ejecución del monitor. Se han sacrificado dos cosas: se le ha otorgado cierta memoria principal al monitor y éste consume algún tiempo de máquina. Estas dos son formas de sobrecarga. Aun con esta sobrecarga, el sistema por lotes simple mejora el uso de la computadora.  

 

Sistemas por lotes multiprogramados  

            Aun con la secuenciación de trabajo automático proporcionado por un sistema operativo por lotes simples, con frecuencia el procesador está desocupado.  

            Su desventaja es que los dispositivos de E/S son lentos comparados con el procesador.  

            La siguiente figura muestra esta situación: el procesador gasta cierto tiempo ejecutando hasta que alcanza una instrucción de E/S. Después debe esperar hasta que la instrucción de E/S concluya antes de proseguir.

 

 

            Este caso no es necesario. Ya que debe existir suficiente memoria para contener el sistema operativo (monitor residente) y un programa de usuario. Suponiendo que existe espacio para el sistema operativo y dos programas de usuario. Ahora, cuando un trabajo necesita esperar una E/S, el procesador puede continuar a otro trabajo, el cual es probable que no espera una E/S. Como se muestra en la siguiente figura:

 

 

Además este proceso, se podría ampliar también la memoria para contener tres, cuatro o más programas y conmutar entre todos ellos. El proceso se le conoce como multiprogramación o multitarea. Ilustrado en la siguiente figura.

 

 

Como un sistema por lotes simple, un sistema por lotes de multiprogramación es un programa que debe basarse en ciertas características del hardware de la computadora. La característica adicional más notable que se usa para la multiprogramación es el hardware que soporta interrupciones de E/S y DMA.

Con E/S manejada por interrupción o DMA, el procesador puede emitir un comando de E/S para un trabajo y seguir con la ejecución de otro trabajo mientras el dispositivo controlador realiza la E/S. Una vez que la operación de E/S se completa, el procesador se interrumpe y se pasa el control a un programa manejador de interrupción en el sistema operativo. Después, el sistema operativo pasará el control a otro trabajo.  

Los sistemas operativos de multiprogramación son muy sofisticados comparados con los sistemas de uniprogramación o de programa único. Para tener varios trabajos preparados para correr, deben mantenerse en la memoria principal y requieren cierta forma de administración de memoria. Además, si varios trabajos están preparados para correr, el procesador debe decidir cuál correr, lo cual requiere cierto algoritmo para planificación.

   

Sistemas de tiempo compartido  

        Con el uso de la multiprogramación, el procesamiento por lotes puede ser bastante eficiente. No obstante, para muchos trabajos, es deseable proporcionar un modo en el que el usuario interaccione en forma directa con la computadora.

En realidad, para algunos trabajos, como el procesamiento de transacciones, es esencial un modo interactivo.

           Hoy, el requisito para una facilidad de computación interactiva puede cumplirse y con frecuencia lo hace, al usar una microcomputadora dedicada. Esa opción no estaba disponible en los años sesentas, cuando la mayoría de las computadoras eran grandes y costosas. Para cambiar esto se descubrió el tiempo compartido.        

De la misma manera que la multiprogramación permite al procesador manejar trabajos por lotes múltiples a la vez, la multiprogramación puede usarse para manejar trabajos interactivos múltiples. En el último caso, la técnica se denomina tiempo compartido, reflejando el hecho que múltiples usuarios comparten el tiempo del procesador. La técnica básica para un sistema de tiempo compartido es tener múltiples usuarios que usan al mismo tiempo el sistema por medio de las terminales, con el sistema operativo intercalando la ejecución de cada programa usuario en una ráfaga corta o quantum de computación. Por lo tanto, si existen n usuarios que, de manera activa, solicitan servicio a la vez, cada usuario vera en promedio solo 1/n de la velocidad efectiva de computadora, sin contar la sobrecarga del sistema operativo. No obstante, como las reacciones humanas son lentas, el tiempo de respuesta en un sistema diseñado en forma apropiada, deberá ser comparable al de una computadora dedicada.  

Tanto la multiprogramación por lotes como el tiempo compartido usan la multiprogramación.

Las diferencias se listan a continuación :

 

Uno de los primeros sistemas operativos de tiempo compartido desarrollados fue el Sistema de Tiempo Compartido Compatible (compatible time-sharing system o CTSS), desarrollado en el Instituto Tecnológico de Massachussets por un grupo conocido como proyecto MAC (machine-aided cognition, múltiple-access computers o Conocimiento Ayudado por Máquina, Computadoras de Acceso Múltiple). El sistema se desarrolló primero para la IBM 709 en 1961 y después se transfirió a una IBM 7094.  

Comparado con sistemas posteriores, el CTSS era bastante primitivo, pero funcionaba. Era muy simple, lo cual minimizaba el tamaño del monitor. Como siempre se cargaba un trabajo en las mismas posiciones en la memoria, no había necesidad de técnicas de relocalización durante la carga. La técnica de escribir sólo lo que era necesario minimizaba la actividad del disco. Corriendo en la 7094, CTSS soportaba un máximo de 32 usuarios.  

El tiempo compartido y la multiprogramación originan muchos nuevos problemas para el sistema operativo. Si están múltiples trabajos en la memoria, entonces deben protegerse de interferir uno con otro por medio de, por ejemplo, modificar los datos de cada uno. Con múltiples usuarios interactivos, el sistema de archivos debe protegerse de manera que únicamente los usuarios autorizados tengan acceso a un archivo particular. Debe manejarse la concatenación de recursos, tal como impresoras y dispositivos de almacenamiento masivo.  

 

SEGUNDA VERSIÓN:

           Una evolución del S.O. como una consecuencia del desarrollo del hardware es la siguiente:  

En los 40's, se introducen los programas bit a bit, por medio de interruptores mecánicos y después se introdujo el lenguaje máquina que trabajaba por tarjetas perforadas.

Con las primeras computadoras, desde finales de los años 40 hasta la mitad de los años 50, el programador interactuaba de manera directa con el hardware de la computadora, no existía realmente un Sistema Operativo; las primeras computadoras utilizaban bulbos, la entrada de datos y los programas se realizaban a través del lenguaje máquina (bits) o a través de interruptores.  

Durante los años 50's y 60's. (A principio de los 60's), la compañía General's Motors implantó el primer sistema operativo para su IBM 170. Empiezan a surgir las tarjetas perforadas las cuales permiten que los usuarios (que en ese tiempo eran programadores, diseñadores, capturistas, etc.), se encarguen de modificar sus programas. Establecían o apartaban tiempo, metían o introducían sus programas, corregían y depuraban sus programas en su tiempo. A esto se le llamaba trabajo en serie. Todo esto se traducía en pérdida de tiempo y tiempos de programas excesivos.  

En los años 60's y 70's se genera el circuito integrado, se organizan los trabajos y se generan los procesos Batch (por lotes), lo cual consiste en determinar los trabajos comunes y realizarlos todos juntos de una sola vez.

En esta época surgen las unidades de cinta y el cargador de programas, el cual se considera como el primer tipo de Sistema Operativo.  

En los 80's, inició el auge de la INTERNET en los Estados Unidos de América. A finales de los años 80's comienza el gran auge y evolución de los Sistemas Operativos.

Se descubre el concepto de multiprogramación que consiste en tener cargados en memoria a varios trabajos al mismo tiempo, tema principal de los Sistemas Operativos actuales.

                                                                       

En los 90's entramos a la era de la computación distribuida y del multiprocesamiento a través de múltiples redes de computadoras, aprovechando el ciclo del procesador.

Se tiene una configuración dinámica con un reconocimiento inmediato de dispositivos y software que se añadan o eliminen de las redes a través de procesos de registro y localizadores.

La conectividad se facilita gracias a estándares y protocolos de sistemas abiertos por organizaciones como la organización. Interna. de normas, fundación de software abierto, todo estará mas controlado por los protocolos de comunicación OSI y por la red de servicios digital ISDN.  

 

TERCERA VERSIÓN:  

           Otra manera de describir la evolución de los sistemas operativos es a través de las generaciones o etapas de la computación:  

1a. Etapa (1945-1955) : Bulbos y conexiones.

                                                                     

Después de los infructuosos esfuerzos de Babbage, hubo poco progreso en la construcción de las computadoras digitales, hasta la Segunda Guerra Mundial. A mitad de la década de los 40's, Howard Aiken (Harvard), John Von Newman (Instituto de Estudios Avanzados, Princeton), J. Prespe R. Eckert y Williams Mauchley (Universidad de Pennsylvania), así como Conrad Zuse (Alemania), entre otros lograron construir máquinas de cálculo mediante bulbos. Estas máquinas eran enormes y llenaban cuartos completos con decenas de miles de bulbos, pero eran mucho más lentas que la computadora casera más económica en nuestros días.

 

Toda la programación se llevaba a cabo en lenguaje de máquina absoluto y con frecuencia se utilizaban conexiones para controlar las funciones básicas de la máquina. Los lenguajes de programación eran desconocidos (incluso el lenguaje ensamblador). No se oía de los Sistemas Operativos, el modo usual de operación consistía en que el programador reservaba cierto período en una hoja de reservación pegada a la pared, iba al cuarto de la máquina, insertaba su conexión a la computadora y pasaba unas horas esperando que ninguno de los 20,000 ó más bulbos se quemara durante la ejecución. La inmensa mayoría de los problemas eran cálculos numéricos directos, por ejemplo, el cálculo de valores para tablas de senos y cosenos.

 

A principio de la década de los 50's la rutina mejoró un poco con la introducción de las tarjetas perforadas. Fue entonces posible escribir los programas y leerlas en vez de insertar conexiones, por lo demás el proceso era el mismo.  

 

2a. Etapa. (1955-1965) : Transistores y Sistemas de Procesamiento por lotes.

 

 

 

La introducción del transistor a mediados de los años 50's modificó en forma radical el panorama. Las computadoras se volvieron confiables de forma que podían fabricarse y venderse a clientes, con la esperanza de que ellas continuaran funcionando lo suficiente como para realizar un trabajo en forma.  

Dado el alto costo del equipo, no debe sorprender el hecho de que las personas buscaron en forma por demás rápida vías para reducir el tiempo invertido. La solución que, por lo general se adoptó, fue la del sistema de procesamiento por lotes.

 

3ra Etapa (1965-1980 ) : Circuitos integrados y multiprogramación.

                                                            

 

La 360 de IBM fue la primera línea principal de computadoras que utilizó los circuitos integrados, lo que proporcionó una gran ventaja en el precio y desempeño con respecto a las máquinas de la segunda generación, construidas a partir de transistores individuales. Se trabajó con un sistema operativo enorme y extraordinariamente complejo. A pesar de su enorme tamaño y sus problemas el sistema operativo de la línea IBM 360 y los sistemas operativos similares de esta generación producidos por otros fabricantes de computadoras realmente pudieron satisfacer, en forma razonable a la mayoría de sus clientes. También popularizaron varias técnicas fundamentales, ausentes de los sistemas operativos de la segunda generación, de las cuales la más importante era la de multiprogramación.

Otra característica era la capacidad de leer trabajos de las tarjetas al disco, tan pronto como llegara al cuarto de cómputo. Así, siempre que concluyera un trabajo el sistema operativo podía cargar un nuevo trabajo del disco en la partición que quedara desocupada y ejecutarlo.

 

4ta Etapa (1980-Actualidad) : Computadoras personales.  

Un interesante desarrollo que comenzó a llevarse a cabo a mediados de la década de los ochenta ha sido el crecimiento de las redes de computadoras personales, con sistemas operativos de red y sistemas operativos distribuidos.  

En los sistema operativo de red, los usuarios están conscientes de la existencia de varias computadoras y pueden conectarse con máquinas remotas y copiar archivos de una máquina a otra. Cada máquina ejecuta su propio sistema operativo local y tiene su propio usuario.  

Por el contrario, un sistema operativo distribuido es aquel que aparece ante sus usuarios como un sistema tradicional de un solo procesador, aun cuando esté compuesto por varios procesadores. En un sistema distribuido verdadero, los usuarios no deben ser conscientes del lugar donde su programa se ejecute o de lugar donde se encuentren sus archivos; eso debe ser manejado en forma automática y eficaz por el sistema operativo.     

 

EVOLUCIÓN DE UN SISTEMA OPERATIVO

 

 

Un sistema operativo importante evolucionará con el tiempo por varias razones:  

§        Mejoras en el hardware además de nuevos tipos de hardware: Por ejemplo, las primeras versiones de UNIX y OS/2 no empleaban un mecanismo de paginación porque corrían sobre máquinas sin hardware de paginación.

Las versiones mas recientes se han modificado para explotar las capacidades de paginación. También, el empleo de terminales gráficas y terminales de modo página, en lugar de terminales de modo de desplazamiento de una línea cada vez, pueden afectar el diseño del sistema operativo. Por ejemplo, una terminal así puede permitir al usuario ver varias aplicaciones al mismo tiempo mediante “ventanas” en la pantalla. Esto requiere un soporte más sofisticado en el sistema operativo. 

§        Nuevos servicios: En respuesta a demandas del usuario o las necesidades de administradores de sistema, el sistema operativo se ampliará para ofrecer nuevos servicios. Por ejemplo, si se encuentra que es difícil obtener un buen desempeño para usuarios con las herramientas de medición y control al sistema operativo. Otro ejemplo son las nuevas aplicaciones que requieren el uso de ventanas en la pantalla de exhibición. Esta característica requerirá mejoras importantes al sistema operativo.  

§          Reparaciones: el sistema operativo por supuesto también tiene fallas que se descubrirán con el tiempo y será necesario hacer arreglos. Por supuesto, los arreglos pueden introducir nuevas fallas...

 

La necesidad de cambiar un sistema operativo de manera regular coloca ciertos requisitos en su diseño. Un enunciado obvio es que el sistema deberá ser modular en construcción, con interfaces entre los módulos definidas con claridad y que deberá estar bien documentado. Para programas grandes, como el sistema operativo contemporáneo típico, podría decirse que la modularización directa no es adecuada. Esto es, debe hacerse mucho más que sólo dividir un programa en subrutinas.

       

Hosted by www.Geocities.ws

1