jueves, 27 de octubre de 2016

2.1 Gestión de servicios del sistema operativo y formas de proporcionar esos servicios


Un Sistema Operativo es un programa que actúa como interfaz entre el usuario de un computador y el hardware del mismo, ofreciendo el entorno necesario para que el usuario pueda ejecutar programas. Su principal cometido es facilitar el uso del sistema informático, siendo su objetivo secundario permitir la utilización del hardware del computador en modo eficiente. Así pues, un Sistema Operativo es el soporte lógico que controla el funcionamiento del equipo físico, la eficiencia, fiabilidad, facilidad de mantenimiento, y un pequeño tamaño serían las características deseables de este software.

El sistema operativo es una parte importante de todo sistema informático que engloba a:

- El hardware: CPU, memoria y dispositivos de entrada y salida (E/S).
- El sistema operativo.
- Los programas de aplicación (compiladores, sistemas de bases de datos, utilidades, videojuegos, programas de gestión, etc.).
- Los usuarios (personas, máquinas u otros computadores).

Un sistema operativo es un conjunto de programas que supervisan y controlan los programas de usuario para evitar errores y el uso inadecuado del computador. El sistema operativo controla así mismo las operaciones de E/S, podemos pues entender por sistema operativo a una colección de programas cuya principal misión es gestionar los recursos del computador, y en consecuencia será el soporte lógico que controla el funcionamiento del equipo físico (Hardware). Los objetivos buscados por un sistema operativo son dos: eficacia en la gestión de los recursos, y facilitar la gestión a los usuarios (interfase usuario/máquina de fácil manejo, por ejemplo, entornos gráficos tipo Windows). Estos objetivos no son fácilmente compatibles, si se consiguen se logra un buen sistema operativo




Los sistemas operativos cumplen varias funciones como por ejemplo:

Función
Descripción
Control de la ejecución de los programas
Para ello acepta los trabajos, administra la manera en que se realizan, les asigna los recursos y los conserva hasta su finalización
Administración de periféricos
Coordina y manipula los dispositivos conectados al ordenador
Gestión de permisos de usuarios
Adjudica los permisos de acceso a usuarios y evita que las acciones de uno afecten el trabajo que está realizando otro.
Control de concurrencia
Establece prioridades cuando diferentes procesos solicitan el mismo recurso
Control de errores
Gestiona los errores de hardware y la pérdida de datos.
Administración de memoria
Asigna memoria a los procesos y gestiona su uso
Control de seguridad
Proporciona seguridad tanto para los usuarios como para el software y la información almacenada en los sistemas


Manejo de software de control del sistema informático
 
Existen dos tipos de programas dentro de un sistema operativo:

1.         Programas de control
2.         Programas de proceso. 
 
Programas de Control
 
La función de los programas de control es la de controlar y mejorar el rendimiento en la forma de explotar un sistema. Existen programas que gestionan el sistema controlando el hardware. Otros programas que se encargan de encadenar los trabajes que se deben ejecutar y por último, hay programas para controlar la transmisión de datos entre la memoria y los periféricos.
 
 
Programas de Proceso
 
Los programas de proceso se encargan de facilitar las tareas de los programadores. Los programas de servicio, por ejemplo, resuelven  problemas reiterativos como la transferencia de datos entre periféricos. Los programas traductores sirven para que los programas escritos con lenguajes de alto nivel sean traducidos al lenguaje máquina. Esta traducción equivaldría a introducir una sucesión de ceros y unos, correspondiente a cada símbolo del programa escrito en lenguaje simbólico.
 
Esta tarea la efectúa el propio ordenador mediante la ejecución de unos programas llamados genéricamente traductores, que, utilizando como datos de entrada las sentencias de un programa escrito en caracteres inteligibles o simbólicos (programa fuente), dan como resultado el programa escrito en código máquina que le corresponde (programa objeto).
 
El proceso de traducción se ejecuta una sola vez y el programa objeto obtenido puede guardarse indefinidamente para utilizarlo cuantas veces se requiera. Existen tres tipos de programas traductores de acuerdo al lenguaje en el que se ha escrito el programa fuente.
 
·         Ensambladores
·         Compiladores
·         Interpretes
 
ENSAMBLADORES: Ya hemos visto que un programa puede ser escrito utilizando el conjunto de mnemónicos de un lenguaje ensamblador. La traducción del programa fuente la realiza un programa que se llama también ensamblador. Este traduce una instrucción del programa fuente en una única instrucción en código máquina que forma parte del programa objeto.
 
COMPILADORES: Los compiladores son programas encargados de traducir el programa fuente escrito en lenguaje de alto nivel, en programa objeto (lenguaje maquina). Cada instrucción del programa fuente genera una o varias instrucciones  en lenguaje maquina los programas compiladores, cuando traducen una instrucción del programa fuente, analizan su sintaxis y su semántica y, si encuentran algún error, lo indican cuando termina de ejecutarse. 
 
INTERPRETES: Son programas que traducen una instrucción de programa fuente justo en el momento en que va a ser ejecutada. La diferencia con los compiladores estriba en que estos traducen de una sola pasada el programa fuente y obtienen un programa objeto y los interpretes no generan ningún programa objeto previo a la ejecución, sino que van generando el código maquina a medida que cada instrucción va a ejecutarse. Por esta razón, los programas traducidos con intérpretes son más lentos a la hora de ejecución que los objetos producto de una compilación o ensamblaje.
 
PROGRAMAS DE SERVICIO: Sirven para resolver problemas complejos y reiterativos, como por ejemplo, los programas de transferencia de datos de un soporte a otro o programas de clasificación.



En un sistema de monoprogramación todos los recursos del ordenador. CPU, memoria, E/S, etc. Se abocan a la ejecución de un solo programa a la vez. Esto conlleva a una baja utilización de los recursos, por ejemplo; Cuando el programa en ejecución realiza una operación de E/S se introduce la orden precisa en el registro de órdenes. El controlador responde a esto traduciendo esas órdenes al dispositivo, y poniendo a uno el bit de ocupación para indicar que el dispositivo está ocupado realizando una operación de E/S. Cuando termine la operación, el controlador pone a cero este bit para indicar que la operación concluyó, y el dispositivo está desocupado. Para saber cuándo termina la E/S, el programa, después de mandar la orden, tiene que ejecutar un ciclo del siguiente estilo:

·         Leer el registro de estado
·         Mientras (el bit de ocupación esté a uno)
·         Leer el registro de estado
·         Fin Mientras



Esto nos conlleva a que en un  momento dado la CPU este realizando una acción sin ocupar la E/S y esta última quede ociosa o bien la E/S este siendo ocupada y la CPU revisando la finalización de algún ciclo; cómo podemos ver en la imagen (grafico), donde los rectángulos rellenos a trazas representan el ciclo de comprobación. Para dar una medida de la infrautilización de los recursos que conlleva esta forma de realizar las E/S, piénsese que en el tiempo en que una impresora imprime una línea, la CPU, en lugar de ejecutar el ciclo de comprobación que aparece líneas más arriba, podría ejecutar millones de instrucciones de otro programa. A esta forma de realizar la E/S de los sistemas de monoprogramación se le llama E/S controlada por programa.

Los sistemas monoprogramables se pueden dar de tres formas:

Sistemas monoprogramables lineales: se caracterizan por tener una cola de atención sin prioridades y un proceso no finaliza hasta terminar de ejecutarse.


Sistemas monoprogramables con prioridades: Tienen una cola de atención por prioridades y al igual que el anterior un proceso no termina hasta finalizar su ejecución.



Sistemas monoprogramables con prioridades y tiempo de salida. Tienen una cola de atención por prioridades y un proceso puede terminar al completar su ejecución o al terminar el intervalo de tiempo de atención prefijado, en este caso se devolverá a la cola de atención.


La multiprogramación es un modo de trabajo distinto en el que se pueden ejecutar varios programas simultáneamente con el fin de aprovechar al máximo los recursos de la computadora. Los trabajos realizados en una computadora, desde el punto de vista de ocupación de tiempo de procesador y de los dispositivos periféricos, se pueden agrupar en dos bloques:

· Trabajos limitados por procesos: aquellos que consumen la mayor parte de su tiempo en el tratamiento de la información y muy poco en operaciones de entrada/salida.
· Trabajos limitados por operaciones de E/S: aquellos que dedican la mayor parte del tiempo a operaciones de E/S, haciendo poco uso del procesador, que se mantiene inactivo durante grandes períodos de tiempo.

Obviamente, un proceso particular puede estar decantado hacia un lado u otro, o bien situado en una situación intermedia.

El segundo tipo de procesos dio lugar a una nueva técnica denominada multiprogramación. Esta técnica consiste en aprovechar la inactividad del procesador durante la ejecución de una operación de E/S de un proceso, para atender a otro proceso. Desde el punto de vista del usuario, los procesos que se están ejecutando en la computadora están corriendo en paralelo, en realidad lo que sucede es que se están utilizando pequeños tiempo de CPU (ráfagas) para cada uno de los procesos que se ejecutan. En estas condiciones nos encontraremos con varios problemas:

·      El acceso al procesador deberá seguir algún tipo de reglas, o políticas de trabajo, que permitan la realización de las distintas tareas que implica la ejecución de los programas.
·      Se hace necesario algún tipo de administración de la memoria, ya que tiene que ser compartida por los distintos trabajos que se están ejecutando.
·      Varios trabajos pueden necesitar la utilización de un mismo recurso al mismo tiempo, dando lugar a un problema de concurrencia conocido como “abrazo mortal”.


En este modo de trabajo la organización no se realiza por trabajos, sino por sesiones. Una sesión es todo el conjunto de trabajos que se realizan desde que un usuario se conecta a la computadora hasta que se despide de la misma. Durante estas sesiones se pueden realizar multitud de operaciones controladas por un proceso, denominado interprete de órdenes, que mantiene el diálogo entre el usuario y el sistema operativo.

Durante su sesión el usuario cree tener todos los recursos de la computadora, aunque existan otros usuarios con sus sesiones activadas simultáneamente. Los sistemas de tiempo compartido se caracterizan por:

·         Ser interactivos.
·         Atender a varios usuarios simultáneamente.
·         Ofrecer unos tiempos de respuesta relativamente cortos.
·         Poseer una fuerte gestión de archivos.
·         Utilizar técnicas de buffering y spooling.
·         Gestionar memoria virtual.


Uno de los problemas actuales ha sido la aparición de aplicaciones que manejan gran cantidad de datos, que un solo procesador no es capaz de procesar en el tiempo requerido.

Podemos citar el caso de sistemas expertos, donde el volumen de datos es extremadamente grande y se necesitan unos tiempos de respuesta muy pequeños.

El multiproceso se basa en la posibilidad de descomponer el algoritmo que se está ejecutando en varios subalgoritmos, de tal forma que estos puedan ser tratados por varios procesadores en paralelo. Al finalizar se deben unir los resultados parciales y obtener un resultado final en la computadora. Evidentemente el tiempo de ejecución es mucho menor que si solo dispusiéramos de un procesador.


El tiempo real es otra posibilidad de los sistemas operativos multiprogramados en los que se necesita un tiempo de respuesta pequeño ante cualquier petición.

Suele emplearse en aplicaciones dedicadas a sistemas de control, que utilizan sensores como elementos de entrada y donde es necesaria una respuesta rápida sobre el sistema a controlar.


Podemos decir que un sistema trabaja en tiempo real si el tiempo de respuesta permite controlar y regular al medio sobre el que opera.

2 comentarios: