Está en la página 1de 20

Planificación de procesos

Plani cación de procesos

Referencias

Revisión del módulo

Descarga en PDF
LECCIÓN 1 de 4

Planificación de procesos

Cuando dos o más procesos se encuentran en estado Listo, surge la


siguiente pregunta: ¿Cuál debe ser ejecutado por el procesador? Esta es la
función de un planificador de procesos: decidir cuál es el próximo proceso
que será ejecutado.

En general, existen dos grupos de procesos: los que están más orientados a
realizar cálculos y los que principalmente interactúan con dispositivos de
entrada/salida (E/S). El comportamiento de unos y de otros es claramente
diferente, como se observa en la Figura 1. Los procesos orientados a la CPU
consumen mucho tiempo de CPU y poco tiempo a la espera de un dispositivo
de E/S. Los procesos orientados a E/S hacen lo contrario: pasan más tiempo
esperando que procesando. Estos tiempos se incrementan con el tiempo
debido a que los procesadores mejoran su velocidad muchísimo más rápido
que los discos, a menos que se utilicen discos de estado sólido. Por el
momento, tiene mayor importancia la planificación del primer grupo de
procesos.

Figura 1: Procesos orientados a cálculos y a E/S


Fuente: Tanenbaum, 2009, p. 147.

Estos procesos deben planificarse en diversas circunstancias. Por ejemplo, si


un proceso es nuevo, hay que decidir si se debe ejecutar el padre o el hijo.

Si un proceso termina y hay muchos otros en estado Listo, ¿cuál deberíamos


elegir? ¿Qué proceso deberíamos elegir si el que se estaba ejecutando se
bloquea? Si hay una interrupción de E/S, ¿se debe ejecutar el proceso que
solicitó la interrupción u otro que quiere usar el mismo dispositivo de E/S pero
que estaba bloqueado y que ahora está listo? Para resolver todos estos
inconvenientes, existen diferentes algoritmos que pueden agruparse en dos
categorías.

No apropiativo: se elige un proceso para que se ejecute, y el tiempo


de ejecución de este termina cuando dicho proceso se bloquea.
Apropiativo: se elige un proceso para que se ejecute, pero se le
asigna un tiempo fijo. Si se llega al límite de tiempo, se selecciona
otro proceso.

La planificación también depende del tipo de ambiente. Los requerimientos


de un mainframe que utiliza procesamiento por lotes no son iguales que los
de un servidor para usuarios interactivos o sistemas con restricciones de
tiempo real. En el caso de los mainframes, como se ejecutan tareas que no
necesitan interacción humana, es preferible utilizar algoritmos no
apropiativos. En cambio, en un ambiente de servidor para múltiples usuarios,
es necesario que todos los usuarios obtengan respuesta en algún momento,
por lo que los algoritmos apropiativos corren con ventaja.

La planificación, además, busca cumplir con diversos objetivos, en función de


los ambientes donde se implemente el sistema operativo, aunque también
hay objetivos comunes para todos los sistemas, como se observa en la
Figura 2.

Figura 2: Objetivos para diferentes ambientes


Fuente: Tanenbaum, 2009, p. 150.

Planificación para procesamiento por lotes

Existen tres diferentes algoritmos para un sistema de procesamiento por


lotes (mainframes).

Primero en entrar, primero en ser atendido: existe una única fila,


donde los procesos van ingresando. El primero en entrar se ejecuta
y el resto debe esperar. El segundo solo podrá ejecutarse cuando el
primero se bloquee. La planificación es muy simple y esta es su
mayor ventaja. Sin embargo, su gran desventaja es que, cuando
hay procesos limitados a E/S, se desperdicia tiempo de CPU.

El trabajo más corto primero: aquí deben conocerse de antemano


los tiempos estimados de ejecución de cada proceso, los cuales,
además, deben estar todos listos al mismo tiempo. Ejecutar
primero el más corto baja el promedio de ejecución.

El menor tiempo restante a continuación: es una variante del


algoritmo anterior, que compara el tiempo que un proceso en cola
requiere para ejecutarse con el tiempo restante del proceso actual.
Si el primero es menor, entonces ese proceso pasa a ejecutarse.

Planificación en sistemas interactivos

Los sistemas interactivos están presentes tanto en servidores como en


computadoras personales. Los algoritmos empleados son diferentes a los
utilizados en mainframes, porque la naturaleza y los objetivos de estas
computadoras son diferentes.

Planificación por turno circular

Es un algoritmo simple, basado en la asignación de tiempos iguales para


todos los procesos. Si un proceso en ejecución llega al límite de tiempo,
entonces se procede a darle lugar a otro proceso. En cambio, si se bloquea o
termina antes de que su tiempo se agote, el planificador podrá elegir otro
proceso para ser ejecutado por el CPU.

Lo complicado aquí es establecer el tiempo máximo de ejecución,


denominado quantum. Si es muy corto, se desperdicia mucho tiempo de CPU
(overhead), porque la conmutación entre procesos también consume tiempo
de CPU. En cambio, si es muy grande, puede darse el caso de que haya una
larga cola de espera, y sin duda los últimos procesos en esa cola saldrán
perjudicados. Se debe, entonces, buscar una solución de compromiso entre
el overhead y el retardo a los usuarios.

Planificación por prioridad

Es sencillo darse cuenta de que, en ambientes de multiprogramación o


multiusuario, hay prioridades. No es lo mismo que un gerente ejecute algún
reporte a que un usuario regular busque información en la web. El algoritmo
anterior no contempla esta situación, por lo que todos los procesos tienen la
misma prioridad.

La planificación por prioridad, entonces, asigna prioridades a cada proceso,


pero se debe tener en cuenta que los procesos con mayor prioridad tampoco
deben abusar de su situación y monopolizar el uso del procesador. Para
evitar esto, es posible disminuir la prioridad de un proceso mientras este se
ejecuta; entonces, en un determinado momento, su prioridad será menor a la
de otro. También puede usarse un concepto del algoritmo anterior: el
quantum. Por más que un proceso tenga la más alta prioridad, si ya cumplió
con su tiempo asignado deberá dar lugar al siguiente.

La Figura 3 muestra un sistema con cuatro prioridades, en el que la prioridad


4 es la mayor. Mientras haya procesos allí, se ejecutarán cada uno por un
cuarto. Solo se podrán ejecutar los procesos de prioridad 3 cuando no
queden más de prioridad 4 en la cola. Será necesario un mecanismo de
ajuste de prioridades para que las menores no se queden sin tiempo de
procesamiento.

Figura 3: Sistema con cuatro prioridades

Fuente: Tanenbaum, 2009, p. 157.

El proceso más corto a continuación

Este algoritmo es similar al usado en mainframes. La estimación de la


duración de cada proceso se realiza mediante el cálculo de un promedio
entre el valor real medido y las estimaciones anteriores, lo cual se denomina
envejecimiento.

Planificación garantizada
Este tipo de planificación tiene como objetivo repartir equitativamente el
tiempo de CPU entre los diferentes procesos. Tiene en cuenta cuánto tiempo
de CPU ha consumido cada proceso desde que fue creado y, también, cuánto
tiempo requiere cada proceso. Dado que lo que se busca es ser equitativo, si
hay, por ejemplo, hay 10 procesos, cada uno de estos debería obtener el 10%
del tiempo total del CPU.

Con estos dos parámetros es posible determinar lo que se denomina


proporción, es decir, una relación entre el tiempo que necesita un proceso y el
tiempo que tuvo asignado. Aquellos procesos que tienen menor proporción,
es decir, que se han ejecutado por menos tiempo que el que necesitan, serán
ejecutados antes que los que tienen mayor proporción. De esta forma, al ser
ejecutados por más tiempo, estos procesos que tenían menor proporción
mejorarán ese parámetro y darán lugar a otros procesos que quedaron por
debajo.

Planificación por sorteo

Como su nombre lo indica, esta planificación asigna números a los procesos


y realiza un sorteo para determinar cuál de estos debe ejecutarse. Los
procesos más importantes corren con ventaja, ya que disponen de un mayor
número de boletos que pueden resultar ganadores del sorteo, por lo que
tienen mayor probabilidad de obtener tiempo de CPU.

Planificación por partes equitativas


Esta planificación tiene en cuenta un componente adicional para determinar
el tiempo de CPU que se asigna a cada proceso: el propietario del proceso.

Lo que se busca es ser más equitativo en un ambiente de múltiples usuarios,


ya que, de esta forma, se les puede garantizar a todos ellos un cierto
porcentaje de CPU, más allá de la cantidad de procesos que cada uno tenga
abierto.

Planificación en sistemas de tiempo real

Los sistemas de tiempo real manejan tareas que requieren ser procesadas
con urgencia, y de ahí su nombre. Las tareas pueden clasificarse en duras y
suaves. Las duras son aquellas que deben procesarse con urgencia o, de lo
contrario, ocasionarán un error. Las suaves, en cambio, pueden demorarse
más tiempo del recomendable, sin ocasionar errores.

La planificación de las tareas a corto plazo es de suma importancia para los


sistemas de tiempo real, ya que de ello dependerán tanto el comienzo como
la finalización a tiempo de las tareas duras.

Continúa leyendo sobre la planificación en sistemas de tiempo real en la


sección 10.4 del libro Sistemas Operativos de W. Stallings.

Otros conceptos
Los diferentes estados de los procesos tienen una relación directa con lo que
podemos denominar “prioridades” que son aquellas que el SO asigna a cada
proceso. De ellas dependerá que el proceso se ejecute en más o menos
tiempo.

Los programas que más se ejecutan, tienen prioridad sobre los que se
ejecutan eventualmente.

La “planificación” es una técnica empleada para indicar al procesador los


procesos que deben ejecutarse y los estados que estos deben adoptar. Para
ello se utilizan “algoritmos de planificación” que cuentan con características
como imparcialidad, equidad, eficiencia, tiempo de respuesta y rendimiento.

Una vez cargado el proceso (“preparado”) el “planificador” del SO le asignará


una prioridad respecto de los demás procesos en ejecución.

La planificación de procesos se refiere a cómo determina el


sistema operativo al orden en que irá cediendo el uso del
procesador a los procesos que lo vayan solicitando, y a las
políticas que empleará para que el uso que den a dicho tiempo
no sea excesivo respecto al uso esperado del sistema.

Hay tres tipos principales de planificación:


A largo plazo

Decide qué procesos serán los siguientes en ser iniciados. Este tipo de
planificación era el más frecuente en los sistemas de lotes …y multiprogramados
en lotes; las decisiones eran tomadas considerando los requisitos pre-
declarados de los procesos y los que el sistema tenía libres al terminar algún otro
proceso. La planificación a largo plazo puede llevarse a cabo con periodicidad de
una vez cada varios segundos, minutos e inclusive horas.
En los sistemas de uso interactivo, casi la totalidad de los que se usan hoy en día,
este tipo de planificación no se efectúa, dado que es típicamente el usuario quien
indica expresamente qué procesos iniciar. (Wolf, Ruiz, Bergero, Meza, 2014, p.
131)

Figura 4: Planificación a largo plazo


Fuente: Wolf, Ruiz, Bergero, Meza, 2014, p. 131

A mediano plazo

Decide cuáles procesos es conveniente bloquear en determinado momento, sea
por escasez/saturación de algún recurso (como la memoria primaria) o porque
están realizando alguna solicitud que no puede satisfacerse momentáneamente;
se encarga de tomar decisiones respecto a los procesos conforme entran y
salen del estado de bloqueado
(esto es, típicamente, están a la espera de algún evento externo o de la
finalización de transferencia de datos con algún dispositivo).
En algunos textos, al planificador a mediano plazo se le llama agendador
(scheduler). (Wolf, Ruiz, Bergero, Meza, 2014, p. 132).

Figura 5: Planificación a mediano plazo


Fuente: Wolf, Ruiz, Bergero, Meza, 2014, p. 132

A corto plazo

Decide cómo compartir momento a momento al equipo entre todos los procesos
que requieren de sus recursos, especialmente el procesador. La planificación a
corto plazo se lleva a cabo decenas de veces por segundo (razón por la cual debe
ser código muy simple, eficiente y rápido); es el encargado de planificar los
procesos que están listos para ejecución.
El planificador a corto plazo es también frecuentemente denominado
despachador (dispatcher). (Wolf, Ruiz, Bergero, Meza, 2014, p. 132).

Figura 6: Planificación a corto plazo


Fuente: Wolf, Ruiz, Bergero, Meza, 2014, p. 312

1 El planificador a largo plazo se encarga de admitir un nuevo


proceso: la transición de nuevo a listo.

2 El planificador a mediano plazo maneja la activación y bloqueo de


un proceso relacionado con eventos, esto es, las transiciones entre
en ejecución y bloqueado, y entre bloqueado y listo.

3 El planificador a corto plazo decide entre los procesos que están


listos para ejecutarse y determina a cuál de ellos activar, y detiene
a aquellos que exceden su tiempo de procesador -Implementa las
transiciones entre los estados listo y en ejecución. (Wolf, Ruiz,
Bergero, Meza, 2014, p. 133).

Algoritmos de planificación

A LG O RI T M O D E RO U N D - RO BI N A LG O RI T M O FI FO O FC FS ( FI RS T . . .

Asigna rotativamente tiempos de ejecución a los diferentes procesos. Se llama


también algoritmo de rueda pues la asignación de tiempos a los procesos a
ejecutar es siempre la misma y de forma secuencial.

La selección de los procesos se asigna mediante una cola FIFO y es el algoritmo


generalmente utilizado en SO multiusuario y multitarea.

A LG O RI T M O D E RO U N D - RO BI N A LG O RI T M O FI FO O FC FS ( FI RS T . . .

En este caso, los tiempos asignados (ciclos de procesador) se asignan en función


de una cola FIFO. Cada proceso dispone del tiempo necesario para ejecutarse
completamente, una vez finalizado se asigna tiempo al proceso siguiente. Es el
algoritmo más utilizado en colas de impresión.
C O NT I NU A R
LECCIÓN 2 de 4

Referencias

Tanenbaum, A. (2009). Sistemas Operativos Modernos. México: Pearson


Education.

Wolf, G., Ruiz, E., Bergero, F., Meza, E. (2014). Fundamentos de sistemas
operativos. Universidad Nacional Autónoma de México. Recuperado de
https://docplayer.es/35139633-Fundamentos-de-sistemas-operativos.html
LECCIÓN 3 de 4

Revisión del módulo

Hasta acá aprendimos

Procesos

En un ambiente de multiprogramación, múltiples programas se encuentran
simultáneamente en ejecución y, recordemos, cada uno de ellos tendrá un
proceso activo que guarda información vital para su funcionamiento. Cada
proceso tendrá su propia información y, al momento de ejecución de cada uno, el
sistema operativo deberá copiar toda la información en los registros del
procesador.

Hilos

Todo proceso posee dos características: tiene recursos y una prioridad de
activación frente a otros procesos, es decir, la planificación del sistema
operativo. El denominado Thread (hilo) se activa para distinguir entre estas dos
características.
Concurrencia

Los procesos e hilos pueden requerir transferir datos entre ellos, depender uno
de otro y, además, competir por el uso del procesador.
Gestionar estas tres características y evitar interferencias entre procesos o hilos
son funciones que le corresponden al sistema operativo.

Planificación de procesos

Cuando dos o más procesos se encuentran en estado Listo, surge la siguiente
pregunta: ¿Cuál debe ser ejecutado por el procesador? Esta es la función de un
planificador de procesos: decidir cuál es el próximo proceso que será ejecutado.
LECCIÓN 4 de 4

Descarga en PDF

Módulo 2 - Lectura 4.pdf


324 KB

También podría gustarte