domingo, 12 de octubre de 2014

2.6 TÉCNICAS DE ADMINISTRACIÓN Y DEL PLANIFICADOR.

Las disciplinas de planificación pueden ser:

• Expropiativas

• No Expropiativas

     Se denomina planificador al software del sistema operativo encargado de asignar los recursos de un sistema entre los procesos que los solicitan. Siempre que haya tomar una decisión, el planificador debe decidir cuál de los procesos que compiten por la posesión de un determinado recursos lo recibirá.

     Los algoritmos (técnicas) tienen distintas propiedades según los criterios en los que se basen para su construcción, lo cual se refleja en qué tipo de procesos se puede ver favorecido frente a otro en la disputa del procesador. Antes de realizar la elección de un algoritmo se debe considerar las propiedades de estos frente al criterio de diseño elegido.

Algunos de estos son:

a) Eficacia: Se expresa como un porcentaje del tiempo medio de utilización. Aunque puede parecer lógico intentar mantener este parámetro próximo al 100%, con un valor tan elevado otros aspectos importantes de medida del comportamiento del sistema pueden verse deteriorados, como por ejemplo el tiempo medio de espera.

b) Rendimiento: Es una medida del número de procesos completados por unidad de tiempo. Por ejemplo 10 procesos por segundo.

c) Tiempo de retorno o regreso: Es el intervalo de tiempo que transcurre desde que un proceso se crea o presenta hasta que completa por el sistema.

d) Tiempo de espera: Es el tiempo que el proceso espera hasta que se le concede el procesador. Puede resultar una medida más adecuada de la eficiencia del sistema, ya que se elimina de la media el tiempo que tarda en ejecutarse el mismo.

e) Tiempo de respuesta a un evento: Se denomina así el intervalo de tiempo que transcurre desde que se señala un evento hasta que se ejecuta la primera instrucción de la rutina de servicio de dicho evento. El criterio de selección de un algoritmo se suele basar en la maximización o minimización de una función de los parámetros anteriores.


Planificación a plazo fijo.

     En la planificación a plazo fijo, ciertos trabajos se planifican para ser terminados en un periodo específico. Estos trabajos tienen un alto valor si se entregan a tiempo y pueden carecer  de valor si se entregan después del límite.

La planificación a plazo fijo es compleja por muchas razones:
       ·         Los usuarios deben proporcionar por adelantado y en forma precisa las necesidades    de recursos de su trabajo. Tal información rara vez está disponible.

            ·         El sistema debe ejecutar el programa de plazo fijo sin una severa degradación de servicio para los otros usuarios.

               ·         El sistema debe planificar cuidadosamente las necesidades de recursos permitiendo un libre tránsito del plazo fijo. Esto puede ser difícil debido a la llegada de programas nuevos con demandas impredecibles.
  
           ·         Si se activan muchos trabajos de plazo fijo, la planificación puede llegar a ser tan compleja que necesite métodos de optimización sofisticados para asegurar que el plazo fijo se cumpla.


          ·         El manejo intenso de recursos requeridos por la planificación de plazo fijo puede generar una sobrecarga sustancial.

2.5 NIVELES, OBJETIVOS Y CRITERIOS DE PLANIFICACIÓN.

El Planificador es la porción del Sistema Operativo que decide y el Algoritmo de Planificación es el utilizado. Los principales “criterios” respecto de un buen algoritmo de planificación son la equidad, la eficacia, el tiempo de respuesta, el tiempo de regreso y el rendimiento.

     Cada proceso es único e impredecible, es decir que pueden requerir intensivamente operaciones de Entrada / Salida o intensivamente CPU; el planificador del Sistema Operativo no tiene la certeza de cuánto tiempo transcurrirá hasta que un proceso se bloquee, ya sea por una operación de Entrada / Salida o por otra razón.

     Para evitar que un proceso se apropie de la CPU un tiempo excesivo, los equipos poseen un dispositivo que provoca una interrupción en forma periódica, por ejemplo 60 Hz, o sea sesenta veces por segundo.

Planificación de Procesador:

     Planificación apropiativa: es la estrategia de permitir que procesos ejecutables (desde el punto de vista lógico) sean suspendidos temporalmente.

    Planificación no apropiativa: es la estrategia de permitir la ejecución de un proceso hasta terminar.

     Planificación del procesador: determinar cuándo deben asignarse los procesadores y a qué procesos, lo cual es responsabilidad del Sistema Operativo.

Niveles de planificación del procesador:

     Planificación de alto nivel: También se denomina Planificación de trabajos.

     Determina a qué trabajos se les va a permitir competir activamente por los recursos del sistema, lo cual se denomina Planificación de admisión.

   Planificación de nivel intermedio: Determina a qué procesos se les puede permitir competir por la CPU.

     Responde a fluctuaciones a corto plazo en la carga del sistema y efectúa “suspensiones” y “activaciones” (“reanudaciones”) de procesos. Debe ayudar a alcanzar ciertas metas en el rendimiento total del sistema.

    Planificación de bajo nivel: Determina a qué proceso listo se le asigna la CPU cuando esta queda disponible y asigna la CPU al mismo, es decir que “despacha” la CPU al proceso.

     La efectúa el Despachador del Sistema Operativo, el que opera muchas veces por segundo y reside siempre en el almacenamiento primario.

Objetivos de la planificación.

     Una estrategia de planificación debe buscar que los procesos obtengan sus turnos de ejecución apropiadamente, conjuntamente con un buen rendimiento y minimización de la sobrecarga del planificador mismo. En general, se buscan cinco objetivos principales:

     1.    Justicia o Imparcialidad: Todos los procesos son tratados de la misma forma, y en algún momento obtienen su turno de ejecución o intervalos de tiempo de ejecución hasta su terminación exitosa.
     2.    Maximizar la Producción: El sistema debe de finalizar el mayor número de procesos en por unidad de tiempo.
    3.    Maximizar el Tiempo de Respuesta: Cada usuario o proceso debe observar que el sistema les responde consistentemente a sus requerimientos.
    4.    Evitar el aplazamiento indefinido: Los procesos deben terminar en un plazo finito de tiempo.
    5.   El sistema debe ser predecible: Ante cargas de trabajo ligeras el sistema debe responder rápido y con cargas pesadas debe ir degradándose paulatinamente. Otro punto de vista de esto es que si se ejecuta el mismo proceso en cargas similares de todo el sistema, la respuesta en todos los casos debe ser similar.

Criterios de planificación:

  • Equidad: Garantizar que cada proceso obtiene su proporción justa de la CPU.
  • Eficacia: Mantener ocupada la CPU el ciento por ciento del tiempo.
  • Tiempo de respuesta: Minimizar el tiempo de respuesta para los usuarios interactivos.
  • Tiempo de regreso: Minimizar el tiempo que deben esperar los usuarios por lotes para obtener sus resultados.
  • Rendimiento: Maximizar el número de tareas procesadas por hora.

2.4 CONCURRENCIA Y SECUENCIABILIDAD.

Es la existencia de varias actividades ejecutándose simultáneamente, y necesitan sincronizarse para actuar conjuntamente. Se trata, en este caso, de un concepto lógico, ya que sólo hace referencia a las actividades, sin importar el número de procesadores presentes.

     Para que dos actividades, sean concurrentes, es necesario que tengan relación entre sí, como puede ser la cooperación en un trabajo determinado o el uso de información compartida.

La concurrencia puede presentarse en tres contextos diferentes:
Varias aplicaciones: (multiprogramación) para permitir que el cpu sea compartido entre varios trabajos.
Aplicaciones estructuradas: Como ampliación del diseño modular y la programación estructurada, algunas aplicaciones pueden implementarse eficazmente como un conjunto de procesos concurrentes.
Estructura del sistema operativo: Las mismas ventajas de estructuración son aplicables a los sistemas operativos que están implementados como un conjunto de procesos.
Tipos de procesos concurrentes:
     Proceso independiente: El que se ejecuta sin cooperación de otros. Ejemplo: varias ventanas de una misma aplicación de forma simultánea.
  Procesos cooperantes: Los que están diseñados para trabajar conjuntamente, deben comunicarse e interactuar.
(Aplicaciones en red)
Tipos de interacción:
• Motivada porque los procesos comparten o compiten por el acceso a recursos. Ejemplo: dos procesos independientes compiten por el acceso a disco o para modificar una base de datos.
• Motivada porque los procesos se comunican y sincronizan entre sí para alcanzar un objetivo común. Ejemplo: compilador con varios procesos que trabajan conjuntamente para obtener un solo archivo de salida.
Aspectos de un sistema operativo para  gestionar la concurrencia.
1. Debe  seguir la pista de los distintos procesos activos, por medio de PBC’s
2. Debe asignar y quitar recursos a cada proceso activo:
• Tiempo de procesador.
• Memoria: (virtual, swapping)
• Archivos
• E/S:
 3. Debe proteger datos y recursos de cada proceso contra injerencias no intencionadas de otros procesos. 
Beneficios de la Concurrencia:
·                     Trata de evitar los tiempos muertos de la UCP
·                     Comparte y optimiza el uso de recursos
·                     Permite la modularidad en las diferentes etapas del proceso
·                     Acelera los cálculos
·                     Da mayor comodidad
Desventajas de la Concurrencia:
·                     Inanición e interrupción de procesos
·                     Ocurrencia de bloqueos
·                     Que dos o más procesos requieran el mismo recurso (no apropiativo).

2.3 PROCESOS LIGEROS: HILOS O HEBRAS.

Procesos ligeros.
     Los procesos ligeros son programas en ejecución son básicamente procesos pero a diferencia de éstos últimos que solo tienen un hilo de ejecución los primeros tienen el hilo principal más hilos secundarios o hijos, en éste caso todos los procesos hijos comparten la información del hilo principal pero además puede cada hilo tener su información privada.

Dentro de la información propia tenemos:
    ·         Contador de programa
    ·         Pila.
    ·         Registros.
    ·         Estado del proceso ligero.

Dentro de la información compartida tenemos:
    ·         Variables globales.
    ·         Archivos abiertos.
    ·         Señales.
    ·         Semáforos.
    ·         Contabilidad.

     Los hilos o procesos ligeros son una parte de código o mini programa que puede ser ejecutada independientemente, de forma que una aplicación o un applet puede tener varios hilos ejecutándose simultáneamente y efectuando distintas tareas; estos hilos se encuentran dentro de un programa y son parte de él. 

     Los hilos, a veces también llamados contextos de ejecución, pueden ser utilizados para la implementación de algoritmos paralelos o procesos concurrentes, sin ser necesario disponer de equipos con estructura de multiprocesador. En el caso de un solo procesador, los procesos ligeros incorporan mecanismos para compartirlo, estableciéndose prioridades
entre ellos y también facilidades de sincronización, cuando es necesario. 


     Multiproceso se refiere a dos programas que se ejecutan "aparentemente" a la vez, bajo el control del sistema operativo.

     Multihilo se refiere a que dos o más tareas se ejecutan "aparentemente" a la vez, dentro de un mismo programa.

     Dentro de un proceso puede haber uno o más hilos de control cada uno con:

·                      Un estado de ejecución (en ejecución, listo, bloqueado).
·                      Un contexto de procesador, que se salva cuando no esté ejecutándose.
·                      Una pila de ejecución.
·                      Algún almacenamiento estático para variables locales.
·                      Acceso a la memoria y a los recursos de ese trabajo que comparte con los otros hilos.

     Los beneficios clave de los hilos se derivan de las implicaciones del rendimiento: se tarda menos tiempo en crear un nuevo hilo de un proceso que ya existe, en terminarlo, y en hacer un cambio de contexto entre hilos de un mismo proceso. Al someter a un mismo proceso a varios flujos de ejecución se mantiene una única copia en memoria del código, y no varias.


     Un ejemplo de aplicación que podría hacer uso de los hilos es un servidor de ficheros de una red de área local. Cada vez que llega una solicitud de una operación sobre un fichero, se puede generar un nuevo hilo para su gestión. El servidor gestiona multitud de solicitudes, por tanto, se pueden crear y destruir muchos hilos en poco tiempo para dar servicio a estas peticiones. Si el servidor es un multiprocesador, se pueden ejecutar varios hilos de un mismo proceso simultáneamente y en diferentes procesadores.

2.2 ESTADOS Y TRANSICIONES DE LOS PROCESOS.

Durante su vida, un proceso puede pasar por una serie de estados discretos, algunos de ellos son:

·                   En ejecución: El proceso ocupa la CPU actualmente, es decir, se está ejecutando.
·                  Listo o preparado: El proceso dispone de todos los recursos para su ejecución, sólo le falta la CPU.
·             Bloqueado: Al proceso le falta algún recurso para poder seguir ejecutándose, además de la CPU. Por recurso se pueden entender un dispositivo, un dato, etc. El proceso necesita que ocurra algún evento que le permita poder proseguir su ejecución.

En estos tres estados son posibles cuatro transiciones:

     Transición 1: Ocurre cuando un proceso descubre que no puede continuar. En algún sistema el proceso debe ejecutar una llamada al sistema, BLOCK, para entrar en estado bloqueado.

     Transición 2: Ocurre cuando el planificador decide que el proceso en ejecución ya ha corrido el tiempo suficiente y es tiempo de permitir que otro proceso tome tiempo de CPU.

     Transición 3: Ocurre cuando todos los procesos han utilizado su parte del tiempo y es hora de que el primer proceso vuelva a correr.

     Transición 4: Ocurre cuando aparece el evento externo que estaba esperando un proceso (como el arribo de alguna entrada). Si ningún otro proceso corre en ese instante, la transición  3 se activará de inmediato y el proceso iniciara su ejecución, de lo contrario tendrá que esperar, en estado listo.

Un proceso puede variar entre 5 distintos estados:

New: cuando el proceso está siendo creado.
Running: cuando el proceso se está ejecutando.
Waiting: cuando el proceso está esperando que se cumpla algún otro evento.
Ready: cuando el proceso esta pronto para ejecutar, esperando por la CPU.
Terminated: cuando el proceso está terminado.

     Estado de los Procesos. Los bloques de control de los procesos se almacenan en colas, cada una de las cuales representa un estado particular de los procesos, existiendo en cada bloque, entre otras informaciones. Los estados de los procesos son internos del sistema operativo y transparente al usuario.

Los estados de los procesos se pueden dividir en dos tipos: activos e inactivos.

1.- Estados activos: Son aquellos que compiten con el procesador o están en condiciones de hacerlo. Se dividen en:

Ejecución. Estado en el que se encuentra un proceso cuando tiene el control del procesador. En un sistema monoprocesador este estado sólo lo puede tener un proceso.

Preparado. Aquellos procesos que están dispuestos para ser ejecutados, pero no están en ejecución por alguna causa (Interrupción, haber entrado en cola estando otro proceso en ejecución, etc.).

Bloqueado. Son los procesos que no pueden ejecutarse de momento por necesitar algún recurso no disponible (generalmente recursos de entrada/salida).

2.- Estados inactivos: Son aquellos que no pueden competir por el procesador, pero que pueden volver a hacerlo por medio de ciertas operaciones. En estos estados se mantiene el bloque de control de proceso aparcado hasta que vuelva a ser activado. Se trata de procesos que no han terminado su trabajo que lo han impedido y que pueden volver a activarse desde el punto en que se quedaron sin que tengan que volver a ejecutarse desde el principio. 

Son de dos tipos: 

     Suspendido bloqueado. Es el proceso que fue suspendido en espera de un evento, sin que hayan desaparecido las causas de su bloqueo.

     Suspendido programado. Es el proceso que han sido suspendidos, pero no tiene causa para estar bloqueado.

Transiciones de estado de los procesos

     A continuación se dan ejemplos de eventos que pueden provocar transiciones de estado en un proceso en este modelo de tres estados. La mayoría de estos eventos se discutirán con profundidad a lo largo del curso:

·         De ejecución á Bloqueado: al iniciar una operación de E/S, al realizar una operación WAIT sobre un semáforo a cero.
·                      De Listo á en ejecución: cuando lo requiere el planificador de la CPU (veremos el planificador de la CPU en el tema de planificación de procesos).
·                De Bloqueado á Listo: se dispone del recurso por el que se había bloqueado el proceso. Por ejemplo, termina la operación de E/S, o se produce una operación SIGNAL sobre el semáforo en que se bloqueó el proceso, no habiendo otros procesos bloqueados en el semáforo.


     La única iniciada por el proceso de usuario es el bloqueo, las otras tres son iniciadas por entidades externas al proceso.