jueves, 9 de diciembre de 2010

7.2 trabajo sobre sistemas operativo

En este tema se describe aquella parte del "software" de un ordenador que transforma el "hardware" en algo útil: el sistema operativo. Para los fines de este capítulo es importante considerar un ordenador como un conjunto de recursos, de tipo físico, lógico o una mezcla de ambos. Tomados como un todo estos recursos proporcionan facilidades para el tratamiento y la entrada/salida de datos, así como para otros aspectos del funcionamiento de un ordenador. 

 

CLASIFICACIÓN

 

Para comprender qué es un sistema operativo, es necesario entender cómo han sido desarrollados, en este apartado se esboza el desarrollo de los sistemas operativos desde los primeros hasta los actuales multiprogramados y de tiempo compartido. A medida que nos adentremos en las distintas etapas, veremos que los componentes de los sistemas operativos evolucionaron como soluciones naturales a los problemas de los primeros sistemas informáticos.

LOS PRIMEROS SISTEMAS


Inicialmente lo único que existía era el "hardware" del ordenador. Los primeros ordenadores eran máquinas muy grandes que ejecutaban su trabajo desde lo programado en una consola. El usuario escribía el programa y lo ejecutaba directamente desde la consola del operador, se debía de cargar manualmente en la memoria, bien fuera desde los conmutadores del panel frontal, desde cinta de papel o mediante tarjetas perforadas. Seguidamente se pulsaban los interruptores adecuados para cargar la dirección de inicio y para comenzar la ejecución del programa. Se supervisaba la ejecución por medio de los indicadores luminosos de la consola, si aparecía algún error se podía detener la ejecución, examinar el contenido de la memoria y de los registros y depurar el programa desde la consola. La salida generada se imprimía, o bien se almacenaba en cinta de papel o tarjetas perforadas para su procesado posterior.


Con el tiempo se perfeccionaron tanto el "hardware" como el "software", aparecieron los lectores de tarjeta, impresoras de línea y cintas magnéticas. Se diseñaron programas ensambladores, cargadores y enlazadores para facilitar la tarea de programación.


Más tarde aparecieron compiladores para los lenguajes FORTRAN y COBOL, haciendo más sencillo el manejo del ordenador por parte del usuario, pero más compleja su forma de operar. Por ejemplo para trabajar con un programa en FORTRAN, el programador había de cargar primero en la máquina el compilador FORTRAN, que estaba normalmente en una cinta magnética que se tenía que montar en un lector de cinta. El programa se leía a partir de tarjetas perforadas. A continuación de la compilación se generaba una salida en ensamblador que para ensamblarse requería la carga desde otra cinta del lenguaje ensamblador. A su vez el código generado era frecuente que se tuviera que enlazar con otro existente en librerías. Finalmente el programa en binario, quedaba listo para su ejecución y podía cargarse en memoria y si fuera necesario proceder a su depuración.


Como se ha indicado, la ejecución de un programa podía implicar previamente un tiempo de preparación considerable. Además si se producía un error en cualquier paso lo más probable era que habría que comenzar desde el principio.


MONITOR SIMPLE


Durante el tiempo de montaje de las cintas o mientras se operaba en la consola, la CPU del ordenador permanecía inactiva. Además los ordenadores eran muy caros, como ejemplo si se considera un IBM 7094, que costaba dos millones de dólares y su esperanza de vida era de cinco años, el coste del inmovilizadoxxx-large era de 45.66 dólares por hora, trabajando 24 horas al día y 365 días al año. Además se han de considerar los costes de funcionamiento por energía, refrigeración, papel, programadores, etc. Todo ello en una época en la que el salario mínimo era de un dólar por hora. Está claro que el tiempo de ordenador era muy valioso, y los propietarios deseaban sacarle el máximo rendimiento. Para rentabilizar su inversión debían maximizar la cuota de uso.


La solución fue doble, en primer lugar se contrataron operadores de ordenador profesionales, el programador entonces ya no tenía que tocar la máquina. Tan pronto como se terminaba un trabajo el operador ponía en marcha el siguiente y se eliminaban los tiempos de inactividad basándose en el sistema de reservas. Además al tener los operadores más experiencia en los procesos implicados, como por ejemplo el montaje de cintas, los tiempos se redujeron. Por supuesto que los operadores no podían depurar los problemas que surgieran en los programas, por lo que en caso necesario se volcaban a un sistema de almacenamiento y se entregaban al programador. El segundo ahorro de tiempo fue debido a la reducción del tiempo de preparación. Los trabajos con necesidades similares se incluyeron en lotes y se ejecutaban en le ordenador como un grupo. Por ejemplo si se recibían programas en diversos lenguajes como FORTRAN y COBOL, no se ejecutaban en el orden de recepción, sino que se procesaban primeramente todos los de un lenguaje y a continuación todos los del otro, con el consiguiente ahorro al cargar una sola vez cada compilador.


Pero aún había problemas, por ejemplo si un trabajo se detenía, los operadores tenían que darse cuenta observando la consola, determinar por qué se había detenido la ejecución y obrar en consecuencia según el problema planteado. Durante este proceso la CPU volvía a estar inactiva. Para solventar esta inactividad se introdujo el secuenciamiento automático de trabajos y con él se crearon los primeros y rudimentarios sistemas operativos. Fueron los programas residentes denominados monitores residentes, que secuenciaban automáticamente todos los programas que se ejecutaban en el ordenador. Para facilitar la secuenciación sin necesidad de la intervención de un operador se introdujeron las tarjetas de control, cuya idea es muy simple, además del programa o datos de un trabajo, se incluyen tarjetas especiales que son directivas para el monitor residente, indicándole qué programa tiene que ejecutar. Por ejemplo para indicar que un programa está en FORTRAN, se acostumbraba a poner una tarjeta de control con el texto $FTN, y para terminxxx-largear un trabajo se pondría otra con $END. Los sistemas así configurados son conocidos como batch o procesos por lotes.


PRESTACIONES


Los ordenadores, en especial los grandes, han sido máquinas muy caras, por lo que es lógico obtener las máximas prestaciones posibles. Los procesos por lotes mejoraron las prestaciones, sin embargo aunque el trabajo realizado por los operadores se redujo, había una parte del proceso que era muy lenta en comparación con la velocidad de la CPU, este problema era originado por los sistemas de entradas y salidas, siendo el caso más representativo el acceso a las cintas magnéticas, pues al ser dispositivos mecánicos la velocidad es muy baja comparada con los procesos electrónicos. Por ejemplo al trabajar para la ejecución de un programa, que como es lógico se cargaba desde cinta, se tenía la CPU inactiva el 93% del tiempo que duraba todo el proceso.


OPERACIONES "OFF-LINE"


Con el tiempo se crearon dispositivos de entrada/salida más rápidos, pero las velocidades de las CPU's crecieron aún a un ritmo mayor, por lo que el problema aumentó.


Una solución fue la de reemplazar las lentas lectoras de tarjetas e impresoras de líneas, por unidades de cinta magnética. La mayoría de los sistemas de los años 1950 y 1960 trabajaban por lotes, que leían de tarjetas y escribían en impresoras. Sin embargo en lugar de hacer que la CPU leyera directamente tarjetas, estas se copiaban previamente en una cinta magnética, y cuando estaba llena se llevaba al ordenador. Si un programa necesitaba una entrada de una tarjeta, se leía de la cinta, análogamente las salidas se llevaban a cintas y se imprimían posteriormente.


Se desarrollaron dispositivos especializados con salida o entrada directa a cinta magnética. Incluso se llegaron a crear pequeños ordenadores para realizar dichas funciones, que eran satélites del equipo principal.


Otra solución a la lentitud de los procesos de entrada/salida fue el denominado "buffering". Este sistema trata de mantener continuamente ocupados tanto a la CPU como a los dispositivos de E/S. La idea es muy sencilla, una vez que se han leído los datos y que la CPU va a operar con ellos, el dispositivo de entrada ejecuta inmediatamente la siguiente lectura. La CPU y el dispositivo de entrada permanece ocupado. Con suerte, cuando la CPU esté libre para el siguiente grupo de datos, el dispositivo de entrada habrá acabado de leerlos. La CPU podrá iniciar el proceso de los últimos datos leídos, mientras que el dispositivo de entrada iniciará la lectura de los datos que siguen. Para la salida se puede realizar un proceso análogo. (La palabra buffer, en castellano se puede traducir como tampón).


Al introducirse como sistemas de almacenamiento los basados en disco, el sistema off-line se fue eliminando progresivamente, y se introdujo el sistema conocido como "spooling" (Simultaneous Operation On-Line), que consiste en usar el disco como tampón, cuya principal ventaja es que solapa la entrada/salida de un proceso con la computación de otros.


MULTIPROGRAMACIÓN


El aspecto más importante de la planificación de trabajo es la capacidad de multiprogramación. Las operaciones descritas previamente para procesos de E/S tienen sus limitaciones, un usuario, no puede en general mantener la CPU o los dispositivos de E/S ocupados todo el tiempo. La multiprogramación es un método para incrementar el empleo de CPU, disponiendo en todo momento de algo que la CPU pueda ejecutar. La idea ea la siguiente, el sistema operativo toma uno de los trabajos de un grupo de ellos y empieza a ejecutarlo, eventualmente el trabajo tendrá que esperar por algún motivo, como por ejemplo para montar una cinta, en un sistema sin multiprogramación la CPU quedaría inactiva


Esta idea es bastante frecuente en otras situaciones, un abogado no tiene un solo cliente en un cierto momento, por el contrario, varios clientes pueden estar en situación de recibir atención al mismo tiempo. Mientras un caso espera para ir a juicio, el abogado puede trabajar en otro caso. Con un número suficiente de clientes un abogado nunca estará ocioso (Los abogados ociosos tienden a convertirse en políticos del PP, por lo que hay interés social en mantenerlos ocupados). 


Los sistemas operativos multiprogramados son bastante sofisticados. Tener varios trabajos dispuestos para su ejecución, supone mantenerlos simultáneamente en memoria, y tener varios programas en memoria al mismo tiempo requiere una gestión de la memoria. Además, si hay varios trabajos dispuestos para ejecución, hay que tomar alguna decisión para elegir entre ellos, mediante una planificación adecuada de la CPU. La multiprogramación es el tema central de los sistemas operativos modernos.


Los aspectos fundamentales a considerar son:
Gestión de la memoria
La memoria total del ordenador se ha de compartir de forma adecuada entre todos los programas y datos que en cierto momento tenga cada usuario del equipo.

Planificación de la CPU

Entre todas las tareas demandadas por los usuarios es posible establecer preferencias, lo cual implica que la CPU se planifique dando más tiempo a algunos trabajos o a los usuarios en función de unos niveles de privilegios establecidos.

Control de concurrencia.

El sistema operativo ha de gestionar adecuadamente todos los recursos del ordenador y ordenar la concurrencia de demandas de una forma adecuada. Por ejemplo si varios usuarios solicitan al mismo tiempo el acceso a un disco, se habrá de gestionar de forma correcta esta concurrencia para evitar bloqueos o situaciones impredecibles.

Protección

En un sistema donde acceden muchos usuarios es lógico que exista un sistema de protección que permita asegurar que a los trabajos de uno no pueden acceder los otros usuarios, ya sea por motivos de seguridad (por ejemplo para evitar pérdidas de información) o de confidencialidad.

Abrazo mortal

Es un problema que no se plantea solamente en un entorno de sistemas operativos, sino que puede aparecer en la vida real. Por ejemplo si dos personas han de cruzar un río, saltando entre piedras puestas en él, y con la condición de apoyar un solo pie, se llega al abrazo mortal cuando dos personas empiezan a cruzar desde orillas opuestas y se encuentran en el medio, llega este momento cuando los dos intentan pisar la misma piedra. En general esta situación se produce cuando un sistema consta de un número finito de recursos para distribuir entre un número dado de procesos en competencia.
TIEMPO COMPARTIDO

Cuando se desarrollaron los sistemas por lotes estos se definían por la agrupación de trabajos similares, que sólo permitían el acceso secuencial a la información. Al disponerse de discos, se hizo posible el acceso inmediato a todas las aplicaciones.


Un sistema por lotes tiene algunos inconvenientes, para el usuario, el principal es que los usuarios no pueden interactuar con sus trabajos mientras se están ejecutando, lo cual crea problemas caso de necesitar depurar un programa. Como consecuencia posteriormente a estos sistemas aparecieron los conocidos como interactivos o "hands-on", en los que el usuario da y recibe las instrucciones de forma inmediata. En consecuencia se puede experimentar fácilmente con cualquier programa. 


Un sistema operativo de tiempo compartido utiliza la planificación de la CPU y la multiprogramación para dotar a cada usuario de una pequeña parte del ordenador compartido. Un sistema operativo en tiempo compartido permite que muchos usuarios compartan el ordenador. Como cada acción o comando suele ser breve, basta con un tiempo de CPU corto para cada usuario. Dado que el sistema cambia rápidamente entre usuarios, estos tienen la impresión de que cada uno de ellos dispone de su propio ordenador, cuando realmente un solo ordenador es compartido entre muchos usuarios. Esta idea fue expuesta en 1960, pero al ser difíciles de construir estos sistemas, no se difundieron hasta principios de los 70.


TIEMPO REAL


Otro tipo de sistemas son los conocidos como en tiempo real, que se utilizan frecuentemente como dispositivos de control en aplicaciones especializadas. Por ejemplo unos sensores proporcionan datos al ordenador, que los analiza y en consecuencia ajusta unos controles para modificar las entradas al sensor. Ejemplos de este tipo son en aplicaciones científicas, médicas e industriales.


Un caso típico de equipo que funciona bajo tiempo real, es un "controlador miniatura", que consiste en un pequeño ordenador, diseñado en una placa de circuito impreso, que se embebe en una máquina o cualquier otro dispositivo, con finalidad de control. Estos dispositivos se usan en maquinaria de fabricación, comprobación de equipamientos, telecomunicaciones, sistemas de control y seguridad, ventilación y aire acondicionado, monitorización del medio ambiente e investigación científica. Algunos ejemplos reales se citan seguidamente:
  • Hornos
  • Control de señales de tráfico
  • Control de satélites
  • Equipos musicales
  • Verificación de componentes de automoción
  • Control de riego agrícola
Comparado con un PC, un ordenador de este tipo es menor, gasta menos energía y disipa menos calor. La propiedad más importante es que pueden trabajar en ambientes hostiles.

El sistema operativo es parte fundamental de cualquier ordenador. A grandes rasgos un sistema informático se puede dividir en:

  • Hardware
  • Sistema operativo o de explotación
  • Programas de aplicación
  • Usuarios

El hardware facilita los recursos básicos de computación, mientras que los programas de aplicación definen cómo hay que utilizar estos recursos para resolver los problemas de los usuarios. Puede haber muchos usuarios diferentes tratando de resolver problemas distintos. Consecuentemente es habitual la existencia de distintos programas de aplicación. El sistema operativo controla y coordina el uso del hardware por parte de los distintos programas de aplicación de los diversos usuarios.









Un sistema operativo es similar a un gobierno. Los recursos básicos de un sistema informáticos son el hardware, el software y los datos. El sistema operativo facilita los medios para el uso adecuado de estos recursos durante la operación del sistema informático, al igual que un gobierno, el sistema operativo no realiza por sí mismo una función útil, simplemente crea el entorno en el que otros programas puedan hacer un trabajo..

También se puede considerar un sistema operativo como un asignador de recursos. Un sistema informático tiene muchos recursos susceptibles de ser requeridos para resolver problemas. El sistema operativo actúa como gestor asignando los recursos a programas y usuarios específicos, según las necesidades, para que realicen sus tareas.


Otra concepción ligeramente diferente de un sistema operativo se basa en la necesidad de controlar distintos dispositivos de entrada/salida y los programas de usuario. Un sistema operativo es un programa de control.


En general no existe una definición completamente adecuada de un sistema operativo. Existen por que son una vía razonable para resolver el problema de crear un sistema informático manejable. En general es más fácil definir los sistemas operativos por lo que hacen mas que por lo que son.

Los sistemas operativos se pueden clasificar en cuatro grupos:

Por lotes (batch)
Son los primitivos, de la época en que se manejaban tarjetas perforadas.

Interactivos monousuarios
Permiten que el que esté usando el equipo pueda interaccionar en cualquier momento con el proceso que esté ejecutando. Sólo permiten que trabaje un usuario en un momento dado.

Tiempo compartido
Permiten el acceso al ordenador de un número variable de usuarios de forma concurrente, y dada la gran velocidad del ordenador, es como si estuviera trabajando simultáneamente para todos ellos.

Tiempo real
Se utilizan ampliamente en aplicaciones industriales y de control. El sistema responde de forma inmediata a entradas del exterior.

No hay comentarios:

Publicar un comentario