Monografias.com > Computación > Software
Descargar Imprimir Comentar Ver trabajos relacionados

Planificación de procesos en monoprocesadores




Enviado por hisa



    1. Necesidad de la
      planificación
    2. Definición
    3. Niveles de
      planificación
    4. Algoritmos de
      planificación
    5. Criterios de la
      planificación a corto plazo
    6. Evaluación de
      algoritmos
    7. Modelos
      determinísticos
    8. Implementación

    Necesidad de la
    planificación

    En épocas pasadas de los sistemas de
    procesamiento por lotes (batch), la idea que existía sobre
    la planificación era bastante simple y
    consistía en aplicar un algoritmo
    secuencial. Esto producía un desaprovechamiento muy
    importante de las capacidades del procesador ya que
    la ejecución de un proceso
    alternaba entre dos estados de ejecución: utilizando la
    CPU o
    esperando a que se realice una operación de E/S, por lo
    que mientras se trabajaba con un dispositivo, el procesador se
    encontraba inactivo.

    Más tarde, surgieron los sistemas
    multiprogramados, en donde se intentó maximizar la
    utilización de la CPU. Esto se pudo conseguir manteniendo
    varios procesos en la memoria, y
    cuando un proceso tenía que esperar, el sistema operativo
    le quitaba la CPU y se lo asignaba a otro proceso que se
    encontraba en dicha memoria. Por lo
    tanto, la tarea de la planificación cobró gran
    importancia por su incidencia directa sobre el rendimiento del
    sistema, ya que
    el sistema operativo debía decidir qué proceso
    esperaría y qué proceso
    continuaría.

    Definición

    Podemos definir a la planificación como un
    conjunto de políticas
    y mecanismos incorporados al sistema operativo, a través
    de un módulo denominado planificador, que debe decidir
    cuál de los procesos en condiciones de ser ejecutado
    conviene ser despachado primero y qué orden de
    ejecución debe seguirse. Esto debe realizarse sin perder
    de vista su principal objetivo que
    consiste en el máximo aprovechamiento del sistema, lo que
    implica proveer un buen servicio a los
    procesos existentes en un momento dado. Un "buen" servicio
    podría traducirse en tiempo de
    respuesta aceptable, productividad y
    eficiencia del
    procesador.

    Niveles de planificación

    La planificación se hace en cuatro instantes de
    tiempo. De estas cuatro, una no la realiza el sistema operativo,
    sino que es externa al procesamiento, pero tiene una influencia
    enorme sobre la definición del procesamiento, dado que el
    sistema operativo queda determinado por las decisiones que se
    toman en este nivel. A esta instancia le daremos el nombre de
    "extra largo plazo" por ser en la escala de tiempo
    del ser humano.

    En la
    administración del procesador podemos distinguir tres
    niveles de planificación de acuerdo a la escala de tiempo
    en que se realiza la misma. El largo plazo en segundos, mediano
    plazo en milisegundos y el corto plazo en nanosegundos o
    microsegundos.

    Planificación a extra
    largo plazo

    Consiste en una planificación externa que se hace
    en el centro de cómputos y está estrechamente
    ligada a las políticas de funcionamiento del sistema, ya
    que se determina la importancia relativa de los usuarios. A
    través de procedimientos
    escritos se fijan las reglas que se aplicarán a los
    usuarios relativos al uso, seguridad,
    accesos, prioridades, etc, así como también las
    reglas en cuanto a modalidad de procesamiento, la
    operación, la política de backup,
    etc.

    Esta planificación busca satisfacer cuatro
    objetivos
    desde el punto de vista de los usuarios:

    1. Mayor velocidad de
      respuesta en sus trabajos con lo que disminuye el tiempo de
      espera de los usuarios.
    2. Existencia y disponibilidad de recursos que
      necesitan para ejecutar sus trabajos.
    3. Importancia de sus tareas.
    4. Seguridad de que sus trabajos sean completados
      correctamente.

    Por lo tanto, es responsabilidad del profesional de sistemas
    brindar un adecuado servicio de procesamiento de
    datos como también ocuparse del orgware y del
    peopleware para que todo funcione dentro de lo
    establecido.

    Planificación a largo
    plazo

    El planificador a largo plazo, scheduler o planificador
    de trabajos, es un administrador que
    se encarga de organizar la ejecución con un adecuado
    planeamiento
    de recursos para que el trabajo se
    ejecute ordenadamente y eficientemente según la modalidad
    de procesamiento.

    El sheduler se ejecuta con poca frecuencia, sólo
    cuando se necesita crear un nuevo proceso en el sistema, cuando
    termina un proceso, o ingresa un usuario en el sistema, por lo
    que tiene prioridad máxima para ejecutar. Es el
    responsable de controlar el nivel de multiprogramación del
    sistema y el balance de carga del sistema. Esto último
    implica la selección
    cuidadosa de trabajos para mantener un adecuado balance de carga
    de procesos que hacen uso de E/S intensivo (I/O bound) o uso de
    CPU intensivo (CPU bound).

    Procedamos a describir un poco su accionar ante un nuevo
    trabajo. Un
    software del
    sistema operativo, llamado monitor,
    recibe al nuevo trabajo y lo carga en la memoria central.
    Después de haber sido recibido el trabajo, el sheduler se
    encarga de preparar y crear procesos con sus respectivos bloques
    de control del
    proceso (PCB) para poder
    ejecutarlos. Si los recursos que solicita estuvieran disponibles,
    se le asignan y se lo ingresa a la cola de listos para
    ejecutar.

    Existen diferentes filosofías en el procesamiento
    de un trabajo. Todas ellas responden a ciertos criterios de
    planificación que se vuelcan en los respectivos algoritmos de
    planificación. Esto se conoce como la modalidad de
    ejecución o procesamiento. Los más importantes
    son:

    • Batch: Apunta estrictamente al exhaustivo
      uso del procesador en detrimento del usuario. Sus principales
      caracterísiticas son:
    1. La CPU es monoprogramada.
    2. No existe diferencia entre trabajo y
      proceso.
    3. El scheduler elige el trabajo, crea el proceso y lo
      ejecuta.
    4. Prácticamente hay un solo nivel de
      planificación.
    • Interactivo: Apunta al servicio del usuario
      en detrimento de la performance del procesador. Es
      multiprogramado pues se multiplexa la CPU entre varios
      programas.
    • Multiprocesado: Es un ambiente
      en el que existen varios procesadores para servir a los procesos en
      ejecución.
    • Procesamiento distribuido o en red: Es una
      forma de procesamiento en que se le presenta al usuario una
      máquina virtual y en que el procesamiento se realiza
      en distintas máquinas diseminadas
      geográficamente y conectadas por una red.

    En conclusión y siendo un poco más
    precisos, podríamos decir que las tareas que involucra
    este nivel de planificación son:

    • Mantener un registro de
      estado de
      todos los trabajos en el sistema (JBC).
    • Establecer una estrategia para
      el pasaje entre las colas de suspendidos y la de
      listos.
    • Asignar recursos (memoria central, dispositivos,
      procesadores, etc.) a cada trabajo.
    • Pedir (recuperar) los recursos cuando los trabajos se
      han completado.
    • Detectar y prevenir los conflictos
      de abrazo mortal o deadlock.
    • Dar entrada a nuevos trabajos.
    • Asignar prioridades a los procesos. Esto genera el
      orden de ejecución y viene determinado
      básicamente por el orden de procesos en la cola de
      listos, o sea, el orden en el que el dispatcher los
      seleccionará de esta cola para ponerlos en
      ejecución (generalmente el primero de la
      cola).
    • Implementar las políticas de asignación
      de recursos, razón por la que se le otorga la
      máxima prioridad en el sistema para que el dispatcher lo
      seleccione primero si está libre el procesador y se
      ejecuta cuando:
    1. Se pide o libera un recurso.
    2. Cuando termina un proceso.
    3. Cuando llega un nuevo trabajo al pool de procesos
      (lo ubica en la ready queue)
    4. Cuando llega un nuevo usuario al
      sistema.

    Planificación a mediano
    plazo

    Es el que decide sacar de memoria central y llevar a
    disco (swap-out) a aquellos procesos inactivos o a los activos cuyos
    estados sean bloqueado momentáneamente o temporalmente o
    los suspendidos y luego, cuando desaparezcan las causas de sus
    bloqueos, traerlos nuevamente a memoria (swap-in) para continuar
    su ejecución. Este tipo de planificador se encuentra solo
    en algunos sistemas especialmente en los de tiempo compartido, ya
    que permite mantener un equilibrio
    entre los procesos activos e inactivos.

    Este planificador puede ser invocado cuando quede
    espacio libre de memoria por efecto de la terminación de
    un proceso o cuando el suministro de procesos caiga por debajo de
    un límite especificado.

    En algunos casos suplanta al planificador de largo plazo
    y otros lo complementa: Por ejemplo en sistemas de tiempo
    compartido, el long-term scheduler puede admitir más
    usuarios de los que pueden caber realmente en memoria. Sin
    embargo, como los trabajos de estos sistemas están
    caracterizados por ciclos de actividad y ciclos de ociosidad,
    mientras el usuario piensa algunos procesos pueden ser
    almacenados y al recibir respuesta vueltos a poner en la cola de
    listos.

    Este tipo de planificación solo es usado en
    sistemas con mucha carga de procesos, ya que el procedimiento de
    swapping produce mucho overhead, haciendo bajar considerablemente
    el desempeño general.

    Planificación a corto
    plazo

    También llamado short-term scheduler o low
    scheduler, es el responsable de decidir quién,
    cuándo, cómo y por cuánto tiempo recibe el
    procesador un proceso que está preparado (ready queue)
    para ejecutar (los recursos a esta altura ya deben estar todos
    disponibles para este trabajo). Además en sistemas
    operativos con esquemas expropiativos (se quita el recurso
    procesador al proceso) verifica las interrupciones.

    El planificador a corto plazo es invocado cada vez que
    un suceso (interno o externo) hace que se modifique el estado
    global del sistema. Por ejemplo:

    • Tics de reloj (interrupciones basadas en el
      tiempo).
    • Interrupciones y terminaciones de E/S.
    • La mayoría de las llamadas operacionales al
      sistema operativo (en oposición a las llamadas de
      consulta).
    • El envío y recepción de señales.
    • La activación de programas
      interactivos.

    El low scheduler debe ser rápido y con poca carga
    para el procesador para que se mantenga el rendimiento, ya que se
    le debe sumar además el tiempo que toma el cambio de
    contexto. El cambio de contexto o context switch consiste
    en la conmutación de la CPU entre un proceso y otro y es
    overhead puro, por lo tanto debe ser lo más rápido
    posible. Algunos valores
    típicos oscilan entre 1 y 100 m seg que se conoce como dispatch
    latency.

    El context switch involucra:

    • Preservar el estado del viejo proceso (guardar en el
      stack su PCB).
    • Recuperar el estado del nuevo proceso (recuperar su
      PCB).
    • Bifurcar a la dirección donde había sido
      suspendido el nuevo proceso.

    El proceso nulo o
    vacío

    Un problema que debe resolver un sistema operativo
    multitarea es, qué debería hacer el sistema cuando
    no hay nada que ejecutar. Por ejemplo cuando la cola de listos se
    encuentra vacía.

    Este problema es resuelto en muchos sistemas
    operativos con el proceso NULO que es creado por el sistema
    en el momento de arranque. El proceso nulo nunca termina, no
    tiene E/S y tiene la prioridad más baja en el sistema. En
    consecuencia la cola de listos nunca está vacía,
    además la ejecución del planificador puede hacerse
    más rápida al eliminar la necesidad de comprobar si
    la cola de listos está vacía o no. Algunas de las
    tareas que se le pueden dar al proceso nulo, por ejemplo, es
    realizar estadísticas de uso de procesador, o
    asistencia de vigilancia de la integridad del sistema,
    etc.

    Algoritmos de
    planificación

    El planificador es el módulo del sistema
    operativo que decide qué proceso se debe ejecutar, para
    ello usa un algoritmo de planificación que debe cumplir
    con los siguientes objetivos:

    1. Imparcialidad.
    2. Política justa.
    3. Eficiencia: mantener la CPU ocupada en lo posible el
      mayor tiempo con procesos de usuario.
    4. Minimizar el tiempo de espera de
      usuarios.
    5. Maximizar el número de procesos ejecutados.
      (Rendimiento: trabajos que se procesan por hora).
    6. Tiempo de respuesta excelente (por ejemplo: minimizar
      el tiempo de respuesta para los usuarios
      interactivos).
    7. Predecibilidad en la ejecución.
    8. Equilibrio en el uso de los recursos.

    Antes de comenzar a describir los respectivos algoritmos
    de planificación, es importante conocer dos conceptos
    relacionados. Uno de ellos es la función de
    selección que determina qué proceso, de entre los
    listos, se elige para ejecutar a continuación. El otro es
    el modo de decisión o esquema de planificación, que
    especifica los instantes de tiempo en que se aplica la
    función de selección. Hay dos categorías
    generales:

    1. Nonpreemptive scheduling (apropiativo)
      También conocido como cooperative multitasking. Una vez
      que el proceso pasa al estado de ejecución,
      continúa ejecutando hasta que termina, se bloquean en
      espera de una E/S o al solicitar algún servicio del
      sistema. Esta política de ejecución para
      terminación fue implementada en los primeros sistemas de
      lote (batch).
    2. Preemptive scheduling (no apropiativo)
      Generalmente conocida como política de
      planificación por torneo. El proceso que se está
      ejecutando actualmente puede ser interrumpido y pasado al
      estado de listos por el sistema operativo. La decisión
      de sustituirlos por otro proceso puede llevarse a cabo cuando
      llega un nuevo proceso, cuando se produce una
      interrupción que lleva a un proceso bloqueado al estado
      listo o periódicamente, en función de una
      interrupción del reloj.

    Política vs.
    Mecanismo

    A veces ocurre que un proceso tiene muchos hijos
    ejecutándose bajo su control y es completamente posible
    que el proceso principal tenga una idea excelente de
    cuáles de sus hijos son los más importantes (o
    críticos respecto al tiempo), y cuáles los menos.
    Por desgracia, ninguno de los planificadores analizados hasta
    ahora acepta datos de los
    procesos del usuario relativos a decisiones de
    planificación. Como resultado, el planificador pocas veces
    hace la mejor elección.

    La solución a este problema es separar el
    mecanismo de planificación de la política de
    planificación. Lo que esto quiere decir es que el
    algoritmo de planificación queda parametrizado de alguna
    manera, pero los parámetros pueden ser determinados por
    medio de procesos del usuario.

    Supongamos que el kernel utiliza un algoritmo de
    planificación, pero que proporciona una llamada al sistema
    por medio de la cual un proceso puede establecer (y modificar) la
    prioridad de sus hijos. De esta forma, el padre puede controlar
    en detalle la forma de planificar sus hijos, incluso aunque
    él mismo no realice la planificación. En este caso,
    el mecanismo está en el kernel pero la política
    queda establecida por el proceso del usuario.

    Criterios de la planificación a corto
    plazo

    Generalmente, se fija un conjunto de criterios con los
    que evaluar las diversas estrategias de
    planificación. El criterio más empleado establece
    dos clasificaciones. En primer lugar, se puede hacer una
    distinción entre los criterios orientados al usuario y los
    orientados al sistema. Los criterios orientados al usuario se
    refieren al comportamiento
    del sistema tal y como lo perciben los usuarios o los procesos
    individuales. Los criterios orientados al sistema se centran en
    el uso efectivo y eficiente del procesador.

    Otra forma de clasificación es considerar los
    criterios relativos al rendimiento del sistema y los que no lo
    son. Los criterios relativos al rendimiento son cuantitativos y,
    en general, pueden evaluarse fácilmente. Los criterios no
    relativos al rendimiento son , en cambio, cualitativos y no
    pueden ser evaluados o analizados fácilmente.

    Todos estos criterios son dependientes entre sí y
    es imposible optimizar todos ellos de forma
    simultánea.

    CRITERIOS ORIENTADOS AL USUARIO, CRITERIOS
    DE RENDIMIENTO

    Tiempo de retorno Es el intervalo de tiempo
    transcurrido entre el lanzamiento de un proceso y su
    finalización. Es la suma del tiempo de ejecución
    real y el tiempo consumido en la espera de los recursos, incluido
    el procesador. Esta es una medida apropiada para trabajos por
    lotes.

    Tiempo de respuesta Para un proceso interactivo,
    es el intervalo de tiempo transcurrido desde que se emite una
    solicitud hasta que se empieza a recibir la respuesta. A menudo,
    un proceso empieza a generar alguna salida para el usuario
    mientras que continúa procesando la solicitud.

    Plazos Cuando se pueden especificar plazos de
    terminación de un proceso, la disciplina de
    planificación debe subordinar otras metas a la
    maximización del porcentaje de plazos
    cumplidos.

    CRITERIOS ORIENTADOS AL USUARIO, OTROS
    CRITERIOS

    Previsibilidad Un determinado trabajo se debe ejecutar
    aproximadamente en el mismo tiempo y con el mismo coste sin
    importar la carga del sistema.

    CRITERIOS ORIENTADOS AL SISTEMA, CRITERIOS
    RELATIVOS AL RENDIMIENTO

    Productividad La política de
    planificación debe intentar maximizar el número de
    procesos terminados por unidad de tiempo. Depende de la longitud
    media de cada proceso, pero también está influida
    por la política de planificación, que puede influir
    en el uso del procesador.

    Utilización del procesador Es el
    porcentaje de tiempo en el que el procesador está
    ocupado.

    CRITERIOS ORIENTADOS AL SISTEMA, OTROS
    CRITERIOS

    Equidad Los procesos deben ser tratados de igual
    forma y ningún proceso debe sufrir
    inanición.

    Prioridades Cuando se asignan prioridades a los
    procesos, la política de planificación debe
    favorecer a los de mayor prioridad.

    Equilibrio de recursos La política de
    planificación debe mantener ocupados los recursos del
    sistema. Se debe favorecer a los procesos que no utilicen
    recursos sobrecargados. Este criterio también afecta a la
    planificación a medio y largo plazo.

    Uso de
    prioridades

    (Algoritmo apropiativo) En vez de una simple cola de
    listos, se ofrece un conjunto de colas en orden de prioridad
    descendente. Cuando se vaya a realizar una selección de
    planificación, el planificador comenzará por la
    cola de listos de mayor prioridad. Si hay uno o más
    procesos en esta cola, se selecciona uno mediante alguna
    política de planificación. Si la cola de mayor
    prioridad está vacía, se examina la cola siguiente
    y así sucesivamente.

    Las prioridades pueden ser:

    Internas o dinámicas: modificables por el
    sistema operativo en ejecución mediante uno o más
    parámetros medibles.

    Externas o estáticas: puestas
    arbitrariamente por el centro de cómputos de acuerdo a
    factores externos al sistema.

    Un problema de los esquemas puros de
    planificación por prioridades es que los procesos de
    prioridad más baja pueden sufrir inanición
    (starvation). Este problema ocurre si siempre hay un flujo
    continuo de procesos listos de alta prioridad. Para superar este
    problema, la prioridad de un proceso puede cambiar en
    función de su edad o su historial de ejecución
    (aging).

    Primero en llegar, primero en
    ser servido (FCFS First come first served)

    (Algoritmo apropiativo) Con mucha diferencia, es el
    algoritmo de planificación más sencillo. Esto es,
    el primer proceso en solicitar la CPU es el primero en recibir la
    asignación de la misma. La implementación del FCFS
    se realiza fácilmente mediante una cola FIFO. Cuando un
    proceso entra en la cola de preparados o listos para la
    ejecución (ready queue), su PCB se enlaza al final de la
    cola.

    Cuando la CPU queda libre, ésta se le asigna al
    proceso situado al principio de la cola. Entonces el proceso en
    ejecución se elimina de la cola. El código
    para la planificación FCFS es sencillo de escribir y de
    comprender.

    FCFS rinde mucho mejor con procesos largos que con
    procesos cortos.

    Sin embargo, las prestaciones
    del FCFS son , con frecuencia, bastante pobres.

    Los problemas que
    presenta son:

    1. El tiempo medio de espera suele ser
      elevado.
    2. Bajo nivel de utilización de la
      CPU.
    3. Pobre tiempo de respuesta en procesos cortos en
      esquemas con mucha carga.
    4. Tiende a favorecer a los procesos con carga de CPU
      frente a los que tienen carga de E/S.
    5. Uso ineficiente de los dispositivos de
      E/S.

    Turno rotatorio (RR Round
    robin)

    (Algoritmo no apropiativo) El algoritmo de
    planificación round-robin fue especialmente
    diseñado para sistemas en tiempo compartido. Se define una
    pequeña unidad de tiempo común llamada quantum de
    tiempo o time slice, que generalmente tiene un valor entre 10
    y 100 milisegundos. La cola de listos se trata como una cola
    circular. El planificador de CPU recorre la cola asignando el
    procesador a cada proceso durante un intervalo de tiempo de hasta
    un quantum.

    Para implementar la planificación RR, la cola se
    mantiene como una cola de procesos FIFO. El planificador de la
    CPU selecciona el primer proceso de la cola, y únicamente
    puede salir del estado de ejecución por tres motivos: que
    termine su ejecución, se proceda al llamada a una E/S y el
    proceso se quede bloqueado o que se genere una
    interrupción por haber superado un quantum de
    ejecución del proceso.

    Si hay n procesos en la cola y el quantum de tiempo es
    q, entonces cada proceso obtiene 1/n del tiempo de CPU en
    fragmentos de al menos q unidades de tiempo cada vez. Cada
    proceso tiene que esperar no más de (n-1) x q unidades de
    tiempo hasta su quantum de tiempo siguiente.

    El conflicto
    surge en el momento de decidir la duración del quantum de
    tiempo para cada proceso. Si el quantum es muy pequeño,
    produce mucho overhead por la gran cantidad de cambios de
    contexto de ejecución que hace el sistema operativo. Si
    por el contrario, el quantum es muy grande produce un tiempo de
    reacción muy pobre porque los procesos en cola de listos
    esperan demasiado y si es infinito se convierte en FCFS. Es decir
    que para que sea eficiente, la duración del context switch
    debe ser mucho menor que el time slice.

    Una desventaja del turno rotatorio es el tratamiento que
    hace si existe una mezcla de procesos limitados por CPU y
    procesos limitados por E/S. En este caso, sucedería lo
    siguiente: un proceso limitado por E/S utiliza el procesador
    durante un periodo corto y después se bloquea en la E/S;
    espera a que se complete la operación de E/S y entonces
    vuelve a la cola de listos. Por otro lado, un proceso limitado
    por procesador generalmente hace uso de un cuanto de tiempo
    completo cuando se ejecuta e inmediatamente retorna a la cola de
    listos. Así pues, los procesos con carga de procesador
    tienden a recibir una porción desigual de tiempo de
    procesador, lo que origina un rendimiento pobre de los procesos
    con carga de E/S, un mal aprovechamiento de los dispositivos de
    E/S y un incremento de la variabilidad del tiempo de
    respuesta.

    Para solucionar este problema se implementa un algoritmo
    llamado VRR (virtual round-robin). La nueva característica
    consiste en una cola FCFS auxiliar a la que se desplazan los
    procesos una vez que son liberados de la espera por E/S. Al tomar
    una decisión sobre el siguiente proceso a expedir, los
    procesos de la cola auxiliar tienen preferencia sobre los de la
    cola principal de listos. Cuando se expide un proceso desde la
    cola auxiliar, no se puede ejecutar más que un tiempo
    igual al cuanto básico menos el tiempo total de
    ejecución consumido desde que fue seleccionado por
    última vez en la cola de listos.

    Primero el proceso más
    corto (SPN Shortest process next / SPF Shortest process
    first)

    (Algoritmo apropiativo) Este algoritmo consiste en
    seleccionar el proceso con menor tiempo esperado de
    ejecución. La mejora del rendimiento global es
    significativa en términos de tiempo de respuesta, sin
    embargo, se incrementa la variabilidad de los tiempos de
    respuesta, especialmente para procesos largos, reduciendo
    así la previsibilidad.

    Una dificultad que plantea SPN es la necesidad de
    conocer o estimar el tiempo exigido por cada proceso. Para ello,
    generalmente se toma el promedio exponencial que permite predecir
    valores futuros a partir de una serie de valores
    pasados.

    Sn+1 = a Tn + (1 – a )Sn

    Donde:

    Ti = Tiempo de ejecución en el
    procesador para el i-ésimo caso del proceso (tiempo total
    de ejecución para un trabajo por lotes; tiempo de
    ráfaga de procesador para trabajos
    interactivos).

    Si = Valor pronosticado para el caso
    i-ésimo.

    a = Factor constante
    de ponderación. (0 <= a <= 1) (generalmente se utiliza
    0,5)

    a determina el peso
    relativo dado a las observaciones más y menos recientes.
    Utilizando un valor constante de a , independiente del número de
    observaciones pasadas, se llega a una situación en la que
    se tienen en cuenta todos los valores
    pasados, pero los más distantes reciben un peso menor.
    Para verlo con más claridad, consideremos el siguiente
    desarrollo de
    la ecuación anterior:

    Sn+1 = a Tn + (1 – a )a Tn-1 + … + (1 –
    a
    )1a Tn-i + … + (1 –
    a
    )nS1

    S1 = Valor pronosticado para el primer caso;
    no calculado.

    La ventaja de emplear un valor a cercano a 1 es que la media
    reflejará rápidamente los cambios repentinos en la
    cantidad observada. La desventaja es que si se produce un breve
    aumento en los valores observados y después se vuelve a
    estabilizar en algún valor medio, el empleo de un
    valor grande a a
    generará cambios bruscos en la media.

    Un riesgo que existe
    en SPN es la posibilidad de inanición para los procesos
    largos mientras exista un flujo continuo de procesos más
    cortos. Por otro lado, aunque SPN reduce el sesgo favorable a los
    procesos largos, no es conveniente para entornos de tiempo
    compartido o de procesamiento de transacciones, debido a que es
    un algoritmo apropiativo.

    Otra observación importante es que se emplea una
    gran pérdida de tiempo para efectuar este cálculo
    por lo que no se utiliza este algoritmo.

    Menor tiempo restante (SRT
    Shortest remaining time first)

    Esta es la versión no apropiativa del SPN, en la
    que el planificador siempre elige al proceso que le queda menos
    tiempo esperado de ejecución. Por lo tanto, el
    planificador debe disponer de una estimación del tiempo de
    proceso para poder llevar a cabo la función de
    selección, existiendo el riesgo de inanición para
    procesos largos.

    El algoritmo SRT no presenta el sesgo favorable a los
    procesos largos del FCFS. Al contrario que el turno rotatorio,
    este algoritmo es más eficiente debido a que no se produce
    overhead muy frecuente debido a que las interrupciones no son
    producidos por el reloj del sistema. Por el contrario, se deben
    tener en cuenta los tiempos de servicio transcurridos, lo que
    contribuye a la sobrecarga. El SRT también debería
    producir tiempos de retorno mejores que los del SPN, puesto que
    los trabajos cortos reciben una atención inmediata y preferente a los
    trabajos largos.

    Primero el de mayor tasa de
    respuesta (HRRN Highest response ratio next)

    (Algoritmo apropiativo) Cuando el proceso actual termina
    o se bloquea, se elige el proceso listo con un mayor valor de R.
    Donde R es:

    R = (w + s) / s

    R = tasa de respuesta.

    w = tiempo consumido esperando al procesador.

    s = tiempo de servicio esperado.

    La decisión de planificación se basa en
    una estimación del tiempo de retorno normalizado. Lo que
    se intenta es reducir al máximo las proporciones de tiempo
    R.

    Este método es
    atractivo porque tiene en cuenta la edad del proceso. Aunque se
    favorece a los trabajos más cortos (un denominador menor
    produce una razón mayor), el envejecimiento sin que haya
    servicio incrementa el valor de la razón, de forma que los
    procesos más largos puedan pasar, en competición
    con los más cortos. El tiempo esperado de servicio debe
    estimarse antes de emplear la técnica de la mayor tasa de
    respuesta.

    Planificación con colas
    de múltiples niveles y
    realimentación

    En el caso en que no se pueda determinar el tiempo de
    ejecución, puede utilizarse este algoritmo.

    La planificación es de tipo no apropiativo por
    quantum de tiempo y un mecanismo de prioridades dinámico.
    Cuando llega un proceso nuevo, este es colocado en la cola de
    mayor prioridad, luego de su primer ejecución éste
    es colocado en la cola de prioridad siguiente menor y así
    sucesivamente hasta que llega hasta la última cola en
    donde se la vuelve a colocar en la misma nuevamente.

    Dentro de cada cola se utiliza el algoritmo de
    planificación FCFS, en el caso de la última se
    utiliza el algoritmo round robin.

    En este algoritmo puede llegar a ocurrir starvation en
    el caso de que entren frecuentemente procesos nuevos, debido a
    que al tener mayor prioridad, no llega a ejecutarse los procesos
    de las últimas colas. Para evitar esto, se utiliza un
    mecanismo de variación del quantum de tiempo de
    ejecución de los procesos de acuerdo a la cola en la que
    se encuentra. A la cola RQi se le asigna 2i quantum de
    tiempo, de esta forma se trata de que menos procesos lleguen
    hasta la última cola sin terminar su
    ejecución.

    En el caso de que ocurra starvation, en un proceso que
    se queda sin ejecución en la última cola, se lo
    puede enviar nuevamente hasta la cola de mayor prioridad para que
    continúe su ejecución.

    La idea de este algoritmo es separar los procesos con
    diferentes características en cuanto a sus ráfagas
    de CPU. Si un proceso gasta demasiado tiempo en CPU, se le
    pasará a una cola con menor prioridad. Este esquema deja a
    los procesos limitados por E/S y los procesos interactivos en las
    colas de más alta prioridad.

    En general, un planificador de colas multinivel con
    realimentación está definido por los siguientes
    parámetros:

    • El número de colas.
    • El algoritmo de planificación para cada
      cola
    • El método empleado para determinar
      cuándo se debe promover un proceso a una cola de mayor
      prioridad.
    • El método empleado para determinar
      cuándo se debe promover un proceso a una cola de menor
      prioridad.
    • El método empleado para determinar en
      cuál cola ingresará un proceso cuando necesite
      servicio.

    La definición de un planificador de colas
    multinivel con realimentación lo convierte en el algoritmo
    de planificación de la CPU más general, ya que se
    puede configurar para adaptarlo a cualquier sistema
    específico que se este diseñando. Desdichadamente,
    se requiere alguna forma de seleccionar valores para todos los
    parámetros de manera que se obtenga el mejor planificador
    posible.

    Aunque este esquema es el más general,
    también es el más complejo.

    Planificación por
    reparto equitativo (FSS Fair share scheduling)

    En un sistema multiusuario, si las aplicaciones o los
    trabajos de los usuarios pueden organizarse en forma de varios
    procesos (o hilos), se dispone de una estructura
    para el conjunto de procesos que no se identifica con
    ningún planificador tradicional. Desde el punto de vista
    del usuario, el interés no
    está en cómo se comporta un proceso en particular,
    sino en cómo se comporta el conjunto de procesos de
    usuario que constituyen una aplicación. Así pues,
    sería interesante poder tomar decisiones de
    planificación en función de estos grupos de
    procesos. Este enfoque se conoce generalmente como
    planificación por reparto equitativo.

    El término reparto equitativo hace referencia a
    la filosofía del planificador. Cada usuario tiene asignado
    algún tipo de ponderación, que indica la parte de
    los recursos del sistema para el usuario como una fracción
    de la utilización total de dichos recursos. En particular,
    cada usuario dispone de una parte del procesador.

    La planificación se lleva a cabo por prioridades,
    teniendo en cuenta la prioridad básica del proceso, su
    utilización reciente de la CPU y la utilización
    reciente de la CPU por parte del grupo al que
    pertenece. Cuanto mayor es el valor numérico de la
    prioridad, menor es ésta. Las fórmulas siguientes
    se aplican al proceso j del grupo k.

    CPUj(i) = CPUj(i – 1) /
    2

    GCPUk(i) = GCPUk(i – 1) /
    2

    Pj(i) = Basej + CPUj(i
    – 1) / 2 + GCPUk(i – 1) / (4 x
    Wk)

    Donde:

    CPUj(i) = Media ponderada de la
    utilización de la CPU del proceso j en el intervalo
    i.

    GCPUk(i) = Media ponderada de la
    utilización de la CPU del grupo k en el intervalo
    i.

    Pj(i) = Prioridad del proceso j al principio
    del intervalo i; los valores más bajos indican prioridades
    más altas.

    Basej = Prioridad de base del proceso
    j.

    Wk = Peso asignado al grupo k, con la
    restricción de 0 <= Wk <= 1 y
    S Wk =
    1.

    Cada proceso tiene asignada una prioridad de base. Esta
    prioridad desciende a medida que el proceso y el grupo al que
    pertenece utilizan la CPU. En el caso de la utilización
    del grupo, la media se normaliza dividiendo por el peso del
    grupo. Cuanto mayor es el peso asignado al grupo, menos afecta su
    utilización a la prioridad.

    Planificación con
    múltiples colas fijas

    Este algoritmo pertenece a una clase de
    algoritmos de planificación para situaciones en las que es
    fácil clasificar los procesos en diferentes
    grupos.

    Un algoritmo de planificación con colas de
    múltiples nivel divide la cola de procesos listos en
    varias colas distintas. Los procesos se asignan permanentemente a
    una cola, casi siempre con base en alguna propiedad del
    proceso, como ser tamaño de memoria, prioridad y tipo de
    proceso. Cada cola tiene su propio algoritmo de
    planificación.

    Además debe haber planificación entre las
    colas, lo cual por lo regular se implementa como una
    planificación expropiativa de prioridades fijas. Por
    ejemplo, la cola de primer plano podría tener prioridad
    absoluta sobre la cola de segundo plano, por lo tanto mientras no
    se vacía la cola de prioridad superior, los procesos de la
    cola inferior no se ejecutan.

    Otra posibilidad es dividir el tiempo entre las colas.
    Cada cola obtiene cierta proporción del tiempo de CPU, que
    entonces puede repartir entre los diversos procesos en su
    cola.

    Este algoritmo tiene la ventaja de que el gasto por
    planificación es bajo y la desventaja de ser
    inflexible.

    Planificación con
    múltiples colas dinámicas

    Es idéntico al anterior con la diferencia que los
    procesos se pueden mover de una cola a otra cola.

    El planificador se configura usando algunos de los
    siguientes criterios:

    • Número de colas
    • Algoritmo de planificación para cada
      cola.
    • Método o criterio para subir / bajar un
      proceso.
    • Criterio para determinar en qué cola se pone
      inicialmente a un proceso.
    • Es muy apropiado para esquemas client –
      server.

    Evaluación de algoritmos

    La selección del algoritmo de
    planificación adecuado comienza por definir los criterios
    que se utilizarán y ordenarlos de acuerdo al perfil
    buscado. Una vez definido esto el siguiente paso es evaluar los
    diversos algoritmos que se estén considerando. Existen
    varios métodos de
    evaluación, que se describirán en
    las secciones siguientes.

    Modelos determinísticos

    Una clase importante de métodos de
    evaluación se denomina evaluación analítica.
    Estos métodos utilizan el algoritmo dado y la carga de
    trabajo del sistema para producir una fórmula o
    número que califica el desempeño del algoritmo para
    esa carga de trabajo.

    Un tipo de evaluación analítica es el
    modelo
    determinista. Este modelo es simple y rápido. Da una
    visión precisa permitiendo comparar los algoritmos. Sin
    embargo, como entrada requiere números exactos y sus
    resultados se aplican sólo a esos casos, por lo que es
    demasiado específico para resultar útil en la
    mayoría de los casos.

    Los diagramas de
    Gantt de los distintos algoritmos nos permiten hacer un análisis del desempeño de cada uno
    viendo el tiempo en que finalizan la ejecución.

    Modelo de
    colas

    En muchos sistemas, los trabajos que se ejecutan
    varían diariamente, por lo que no hay un conjunto
    estático de trabajos (y de tiempos) como para utilizar un
    modelo determinístico. Sin embargo lo que si puede
    determinarse es la distribución de las ráfagas de CPU y
    de E/S. Sobre esta distribución pueden tomarse datos y
    luego aproximarla o simplemente estimarla. El resultado es una
    fórmula matemática
    que describe la probabilidad de
    una ráfaga de CPU concreta. Corrientemente se trata de una
    distribución exponencial, que puede describirse en
    términos de su media. Asimismo, debe darse la
    distribución de los tiempos en que los procesos llegan al
    sistema. A partir de estas dos distribuciones, es posible
    calcular el rendimiento promedio, el aprovechamiento, el tiempo
    de espera y demás para la mayor parte de los
    algoritmos.

    El sistema de computación puede describirse como una
    red de servidores. Cada
    servidor tiene
    una cola de espera. La CPU es un servidor con su cola de listos,
    así como el sistema de E/S lo es de su cola de
    dispositivos. Si conocemos los ritmos de llegada y de servicio,
    podemos calcular la utilización, la longitud media de la
    cola, el tiempo de espera medio, etc. Esta área de estudio
    recibe el nombre de análisis de redes de colas.

    Ahora se hará uso de fórmulas
    básicas de la teoría de
    colas para poder estudiar los diferentes algoritmos, para
    ello haremos la suposición de que las llegadas siguen una
    Poisson y los tiempos de servicio una función
    exponencial.

    En primer lugar, hay que observar que cualquier
    disciplina de planificación que elija el siguiente
    elemento a servir independientemente del tiempo de servicio
    cumple la siguiente relación:

    Tr / Ts = 1 / (1 –
    r )

    Donde:

    Tr = Tiempo de retorno o tiempo de estancia;
    tiempo total en el sistema, espera más
    ejecución.

    Ts = Tiempo medio de servicio; tiempo medio
    consumido en el estado de ejecución.

    r =
    Utilización del procesador.

    Más concretamente, un planificador basado en
    prioridades, en el que la prioridad de cada proceso se asigna
    independientemente del tiempo esperado de servicio, proporciona
    el mismo tiempo medio de retorno y tiempo medio de retorno
    normalizado que un simple FCFS. Es más, la presencia o
    ausencia de apropiación no marca diferencia
    entre las medias.

    De las diversas disciplinas de planificación
    vistas hasta ahora, gran parte de ellas hacen elecciones en
    función del tiempo esperado de servicio. Por desgracia,
    resulta bastante difícil construir modelos
    analíticos fiables para estas disciplinas. Sin embargo, es
    posible hacerse una idea del rendimiento relativo de dichos
    algoritmos de planificación en comparación con el
    FCFS, considerando una planificación por prioridades donde
    la prioridad está en función del tiempo de
    servicio.

    Si la planificación se hace en función de
    prioridades y si los procesos se asignan a una clase de prioridad
    según su tiempo de servicio, entonces aparecen
    diferencias.

    Fórmulas para colas de dos prioridades con un
    solo servidor:

    Suposiciones:

    1. La llegada sigue una Poisson.
    2. Los elementos de prioridad 1 se sirven antes que los
      de prioridad 2.
    3. Los elementos de igual prioridad se expiden
      según FIFO.
    4. Los elementos no son interrumpidos durante el
      servicio.
    5. Ningún elemento abandona la cola (se retrasan
      las pérdidas).

    Fórmulas generales

    l =
    l 1 +
    l
    2

    r 1
    = l
    1Ts1; r 2 = l 2Ts2

    r =
    r 1 +
    r
    2

    Ts = (l 1/l ) Ts1 + (l 2/l ) Ts2

    Tr = (l 1/l ) Tr1 + (l 2/l ) Tr2

    (l =
    tasa de llegada)

    Sin interrupciones; tiempo de servicio
    exponencial

    Tr1 = Ts1 + (r 1Ts1
    + r
    2Ts2) / (1 – r 1)

    Tr2 = Ts2 + (Tr1
    – Ts1) / (1 – r )

    Disciplina de colas de reanudación preferente;
    tiempo de servicio exponencial

    Tr1 = 1 + r 1Ts1 / (1 –
    r
    1)

    Tr2 = 1 + (1 / (1 – r )) (r 1Ts1 +
    r Ts / (1
    – r
    ))

    Nótese que las fórmulas son diferentes
    para la planificación no preferente y preferente. En el
    último caso, se supone que un proceso de menor prioridad
    es interrumpido inmediatamente cuando uno de mayor prioridad
    está listo.

    Modelos de
    simulación

    Se utilizan si se busca obtener una evaluación
    más exacta de los algoritmos de planificación. Una
    simulación implica programar un modelo del
    sistema de computación. Estructuras de
    datos en software representan los principales componentes del
    sistema. El simulador tiene una variable que representa un reloj;
    cuando se incrementa el valor de esta variable, el simulador
    modifica el estado del sistema de modo que refleje las
    actividades de los dispositivos, los procesos y el planificador.
    Conforme se ejecuta la simulación, se recopilan e imprimen
    datos estadísticos que indican el desempeño del
    algoritmo.

    Las simulaciones pueden ser costosas, y a menudo
    requieren horas de tiempo de computador.
    Finalmente, el diseño,
    codificación y depuración del
    simulador no es una tarea trivial.

    Implementación

    Incluso las simulaciones tienen una exactitud limitada.
    La única forma exacta de evaluar un algoritmo de
    planificación es codificarlo, colocarlo en el sistema
    operativo, y ver cómo funciona.

    El principal problema de este enfoque es el costo, ya que
    además de los gastos de
    codificación, adaptación del sistema operativo para
    que lo soporte, etc. existirá una reacción adversa
    de los usuarios, ya que estos no quieren el mejor sistema, sino
    que quieren que sus procesos se ejecuten y obtener sus
    resultados. El otro problema de cualquier evaluación de
    algoritmos es que el entorno en el que se usa el algoritmo
    cambiará. El cambio no será solo normal, a medida
    que se escriben nuevos programas y los tipos de problemas
    cambian, sino también el causado por el desempeño
    del planificador. Si se da prioridad a los procesos cortos, los
    usuarios tal vez dividan sus procesos grandes en grupos de
    pequeños procesos. Si se da prioridad a los procesos
    interactivos sobre los no interactivos, los usuarios
    podrían cambiar al uso interactivo.

    Bibliografía

    Sistemas Operativos – William Stallings

    Notas Sobre Sistemas Operativos – Carlos
    Neetzel

    Operating System Concepts – Silberschatz
    Galvin

    Sistemas Operativos – Andrew S.
    Tanembaum

     

    Vanesa Hisamatsu

    Silvina Gonzalez

    Ingeniería en Sistemas, Universidad
    Tecnológica Nacional (U.T.N), Fac. Reg. Bs. As.

    Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

    Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

    Categorias
    Newsletter