You are on page 1of 48

Administración del procesador

(Scheduling)
La idea principal de la administración del procesador tiene que ver con el
tiempo que permanecerá un proceso en el procesador, ¿que proceso
corre en que momento?.
En un Computador personal es mas difícil encontrar el caso que un
usuario necesite ejecutar dos procesos al mismo tiempo, enviar un correo
y escribir un texto.
Mientras que en un servidor esta clase de ejecuciones es constante.

Para eso se necesita realizar planificación del procesador.


Planificación del procesador


La tarea del  planificador es hacer que un proceso dentro del
procesador pase a la “Lista de Procesos Listos”.

La “Lista de procesos Listos” no es una FIFO.

El planificador se ejecuta cuando:

− Se crea o se termina un proceso.


− Un proceso realiza una llamada al sistema (syscall). Pasa de
‘corriendo’ a ‘esperando’.
− Un proceso pasa de ‘corriendo’ a ‘listo’. (Ej: Interrupción de
hardware).
− Un proceso pasa de ‘esperando’ a ‘listo’ . (Ej: Interrupción de
hardware).
Tipos de planificación

SO no expropiativo (non-premptive): El planificador se ejecuta en los
puntos 1 y 2 solamente. -> Si un proceso entra en un lazo cerrado, el
SO no responde. (DOS).

SO exporpiativo(preemptive): Es en el que el planificador se ejecuta
en cualquiera de los puntos 1,2,3 ó 4), y se programa un timer externo
al procesador para que realice una interrupción cada cierto período.

Un SO preemptive (UNIX, WinNT, etc). debe proporcionar mecanismos
de sincronización a los procesos, ya que estos pueden ser
interrumpidos en cualquier momento. (Ejemplo: memoria compartida).

Syscall: Preemptive?: en la mayoría de UNIX no: Se deshabilita el
manejo de interrupciones mientras se maneja la syscall. En Linux,
desde Linux 2.6 es kernel es preemptive.
− Ventajas: Realtime: tiempo de respuesta.
− Desventajas: Complejidad.
Niveles de planificación
Planificación a largo plazo (planificador de trabajos): es el encargado
de crear los procesos y decide cual es el próximo trabajo que se va a
ejecutar. Sólo existe en los sistemas de procesamiento por lotes. En
los de tiempo compartido su misión es cargar los programas en
memoria.
Planificación a medio plazo (planificador de procesos inactivos o
swapping): decide si un proceso que está suspendido o bloqueado
debe ser extraído temporalmente de la memoria, para reducir el grado
de multiprogramación. Sólo existe en los sistema de tiempo
compartido.
Planificación a corto plazo (planificador del procesador): tiene la
responsabilidad de decidir el cómo y cuando un proceso preparado va
a acceder al procesador (funciones de la multiprogramación). Está
siempre residiendo en la memoria y se ejecuta con mucha frecuencia
(20 ms) y debe ser de ejecución muy rápida. Es importante que de un
buen servicio a los procesos para que el usuario no perciba que está
compartiendo el sistema con otros.
Despachador

Una vez que el Planificador seleciona el proceso a


correr, pasa el control a despachador. Este se encarga
de:
− Cambiar de Contexto (context switch).
− Cambiar de Kernel a User mode.
− Saltar a la dirección donde el proceso se estaba
ejecutando. (context switch).
Criterios de planificación
− Utilización del Procesador: Porcentaje de tiempo en que el
procesador esta ocupado.
− Rendimiento (Throughput): Número de procesos ejecutados por
unidad de tiempo.
− Tiempo de Servicio(T): Tiempo tomado para procesar una petición
(un proceso, un programa). excluyendo el tiempo gastado en la lista
de procesos ‘esperando’.
− Tiempo de Ejecución(t): Tiempo de servicio menos tiempo de
espera.
− Tiempo de Espera (E): Tiempo que un proceso esta en la lista de
procesos ‘esperando’.
− Tiempo de Respuesta: Velocidad con la que el ordenador da
respuesta a una petición. (depende de los dispositivos de E/S).
− Latencia. Básicamente, mide el tiempo transcurrido entre la
realización de una petición y el comienzo de la visualización o
ejecución de los resultados. Se mide en unidades de tiempo
(segundos, milisegundos...)
Objetivos de la planificación

Justicia, sin favorecer, ni perjudicar a ninguno de los procesos.

Máxima capacidad de ejecución, disminuyendo el número de
cambios entre procesos.

Máximo número de usuarios interactivos.

Predictibilidad, intentando conocer de antemano como será la
ejecución de un proceso.

Minimización de la sobrecarga, ya que a menor sobrecarga se
consigue mayor velocidad de procesamiento (los cambios de
contexto deben minimizarse).

Equilibrio en el uso de recursos, procurando que sean usados
equitativamente el mayor tiempo posible.

Seguridad de las prioridades, a mayor prioridad ejecución más
rápida.
Algoritmos de planificación
Primero en llegar, primero en ser atendido:
FCFS (FIRST COME, FIRST SERVED):

Se procesan hasta terminar, el resto de procesos en cola esperando,


sencillo pero de pobre ejecución, hacen esperar mucho a los tiempos
cortos, es no expropiativa.
Algoritmos de planificación
El Proceso mas corto primero (No expropiativo):
SJF (Short Job First):

En este caso es necesario PREDECIR los tiempos que demora el proceso


en ejecutarse. Esto se puede hacer suponiendo los ciclos anteriores.
Cuando llega un proceso nuevo su tiempo total se compara con el tiempo
que falta para que el proceso termine de ejecutarse, si es menor se cede
el procesador al nuevo proceso.
Algoritmos de planificación
El tiempo mas corto restante (Expropiativo):
SRT (Short Remaing Time):

Cuando un proceso nuevo llega, su tiempo total de ejecución es


comparado y si este es menor que el proceso que se esta ejecutando el
viejo proceso se detiene para dar paso al nuevo, hay que predecir el
tiempo de los procesos una vez mas, si se calcula mal el tiempo, el SO
aborta el proceso.
Algoritmos de planificación
Asignación cíclica:
RR (Round Robin) q=1

Se concede a cada proceso un periodo de tiempo de ejecución fijo, q


(quantum), si se supera el proceso es pasado a la cola de espera y es
atendido por mecanismo FIFO o por prioridades, si los valores de q son
muy altos se convierte en FCFS, si el valor tiende a 0 sobrecarga el
sistema, en la práctica 10<q<100ms, si un proceso es creado cuando
acaba el q del otro se supone que el anterior llego primero.
Algoritmos de planificación
Asignación cíclica:
RR (Round Robin) q=3
Incrementando q el tiempo de servicio se mantiene cte. y el
tiempo de espera crece en función de ejecución.
Baja sobrecarga sin los Procesos están en memoria.
Es la política más utilizada en tiempos de espera compartidos.
Es un método bastante justo y no ex-propiativo.
El tamaño de q depende de:
el tipo de sistema
el nº de procesos
Algoritmos de planificación
Asignación cíclica:
RR (Round Robin) q=3
Incrementando q el tiempo de servicio se mantiene cte. y el
tiempo de espera crece en función de ejecución.
Baja sobrecarga sin los Procesos están en memoria.
Es la política más utilizada en tiempos de espera compartidos.
Es un método bastante justo y no ex-propiativo.
El tamaño de q depende de:
el tipo de sistema
el nº de procesos
Algoritmos de planificación
Prioridades:
Se asigna al procesador el proceso con mayor prioridad.
Las prioridades pueden ser asignadas interna o externamente.
El problema principal en estos casos son los procesos con baja prioridad
Puede ser expropiativo o noexpropiativo.
Algoritmos de planificación
Colas Multiples
Multilevel Queue (MQ):
Es posible conseguir mayor flexibilidad en
la planificación de los Procesos si creamos varias
colas y cada una con distinta planificación.
Los Procesos se asignan a una u otra dependiendo de sus
necesidades y tipo.
Para conocer que cola suministrará el Proceso al
procesador se utiliza un algoritmo no-expropiativo de prioridad fija.
Algoritmos de planificación
Colas Multiples
Multilevel Queue (MQ):
Algoritmos de planificación
Colas Multiples con retroalimentación
Multilevel Queue Feedback (MQF):
Como es difícil determinar el trato justo que ha de recibir cada proceso a
priori, se opta por favorecer a:
Los procesos cortos
Los procesos limitados por E/S
Este método divide a los procesos en varias colas de manera que la
numeración más baja corresponde a una mayor prioridad.
Cuando el proceso consume su quantum, entra el primero de la cola
de mayor prioridad (nivel más bajo).
Una vez que un proceso haya consumido un tiempo determinado en una
cola, será colocado al final de la cola inmediatamente inferior en prioridad.
Es expropiativa y adaptable (gestión de colas con RR y FCFS)
Algoritmos de planificación
Colas Multiples con retroalimentación
Multilevel Queue Feedback (MQF):
Planificación para
Multiprocesamiento
Este tema esta dado por la capacidad de paralelismo de los
procesadores.
Se puede hacer una división clara del paralelismo dado por el nivel de
sincronización que se puede tener entre los procesos permitiendo esto
tener un nivel de granularidad distinto sobre los procesos que pueden ser
ejecutados:
Grano Fino paralelismo: Paralelismo definido en una sola
instancia, no necesariamente involucra al SO, no hay una alta
tasa de sincronización.
Grano medio: Paralelismo potencial de una aplicación puede
ser implementada por múltiples hilos en un solo proceso, el nivel
de coordinación a veces es dado por un programador.
Grano Grueso: Multiprocesamiento concurrente de procesos
en un ambiente de multiprogramación
Planificación para
MultiProcesamiento
Grano muy grueso: La sincronización es distribuida en una red
distribuida.
Paralelismo independiente: Múltiples procesos no relacionados.
Asignación de Procesos al
Procesador

Asignación Master/slave: Las funciones del Kernel siempre corren
sobre un procesador. Otro procesador ejecuta procesos de usuarios.
− Ventaja: Los conflictos de recursos se ven simplificados a un solo
procesador.
− Desventaja: Falla del procesador Master?, el procesador principal
hace la asignación==> cuello de botella.

Por asignación: SO se puede ejecutar sobre cualquier procesador.
Cada procesador aplica su propios algoritmos para los procesos. Es
similar a como funciona SOLARIS Y (SMP).
Despacho de procesos

Después de la asignación, el despachador debe
decidir de la cola de procesos en espera que proceso
debe ser despachado.

Estrategias de multiprogramación basados en un
solo procesador (contador productivo) pueden ser
establecidas acá.

Prioridades e histórico de procesos no es suficiente.
Despacho de procesos (cont)

Una cola simple de procesos o una cola de multiprioridades
puede ser usado.

Modelos de colas multiservidores: Múltiples cola vs una sola
cola, el análisis de desempeño de los procesos siendo
asignados a distintas colas dado el número de procesos
puede no ser la mejor opción.

Conclusión: La recomendación puede ser usar FCFS sobre
uno de los procesadores combinado con el uso de una cola
de prioridades y que sobre el otro procesador se atiendan el
resto de procesos.
Planificación de hilos

Si una aplicación es implementada para que funciones con un


conjunto de hilos y que compartan por supuesto una dirección única
de memoria por proceso, se puede seguir alguno de estos metodos:

Balanceo de cargas: Sabemos que si un proceso esta formado por
distintos hilos un buen método es permitir que la planificación del
SO sea la que se encargue de decidir cuales hilos van a que
procesador, desventaja, como puede un hilo repetir el mismo
procesador (cache), muchos procesadores buscando procesos con
una única dirección de memoria pueden presentarse para este
método.

Planificación por grupos: Grupos de hilos se ejecutan juntos, si
son procesos íntimamente relacionados los tiempos se reducen
considerablemente. Desventajas son dadas por la consideración de
operar todos los hilos como un todo deja algunos procesadores
ociosos si no se usa un buen algoritmo de planificación.
Planificación de hilos (cont)


Asignación de procesadores dedicados: Consiste en
dedicar procesadores durante toda la duración de la
ejecución de la aplicación, este método es bueno si: hay
muchos procesadores, si se puede controlar el número de
hilos por aplicativo.

Planificación dinámica: Dependerá de si el lenguaje que
programa el aplicativo o el SO permiten controlar
dinámicamente el número de procesos sobre el procesador,
un método es examinar si algún procesador esta ocioso de
ser así asignarles grupos de hilos.
Planificación en tiempo real

La computación en tiempo real se puede definir como aquella


en la que la corrección del sistema depende no solo del
resultado lógico de la computación sino también del momento
en el que se producen resultados.
Un sistema en tiempo real duro: Tiene un tiempo para la
ejecución de las tareas.
Un sistema en tiempo real suave: Tiene un tiempo limite
deseable pero no obligatorio.
Características de sistemas
operativos en tiempo real
− Determinismo.
− Reactividad
− Control de usuario
− Fiabilidad
− Operación de fallo suave
Determinismo
Un SO es determinista en el sentido de ejecutar
operaciones en instantes de tiempos fijos
predeterminados o dentro de intervalos de tiempos
predeterminados, es difícil que en un sistema operativo
sea determinista, para SO en tiempo real el
determinismo esta dado por eventos externos y
temporizaciones. El determinismo esta dado en los
tiempos en que atiende las interrupciones y si puede
atender todos los requerimientos. En SO no-RT esta
demora puede estar en el orden de 10’s y 100’s de
milisegundos, en SO RT esta dado en pocos
microsegundos hasta 1 milisegundo.
Reactividad

Depende de cuanto tarda el SO después que


reconoce la interrupción, se incluyen algunos
aspectos como:
− Tiempo para manejar la interrupción y comenzar
a ejecutar la rutina de servicio de interrupción.
− La cantidad de tiempo necesario para la
ejecución de la interrupción.
− El tiempo cuando hay mas de una interrupción
por ejecutarse.
Control de usuario

El usuario tiene control sobre:


− Prioridades.
− Paginación o swapping.
− Algoritmos de transferencias de disco.
− Tiempo real de tipo suave o duro.
− Etc.
Fiabilidad

En SO no RT el fallo de los procesadores, no


cumplimiento de las tareas, etc, es mas sencillo
de ser solventado que en SO RT, en estos están
de por medio tareas como datos financieros,
manejo de equipos en hospitales, etc.
Operación de fallo suave

Capacidad de fallar de forma tal que se


preserven tantos datos como sea posible.
Requerimientos de tiempo real
− Rápido cambio de contexto.
− Capacidad de almacenamiento rápido.
− Planificación no-expropiativa.
− Respuesta rápida a interrupciones.
La meta es completar la mayor cantidad de tareas en el
menor tiempo posible.
Algoritmos para tiempo real
Es necesario saber que existen dos tipos de eventos:
− Periódicos: Su tiempo de ocurrencia no es frecuente, ni predecible,
ej: un loop.
− Aperiódicos: Su tiempo de ocurrencia es frecuente e impredecible,
ej: un click del mouse.
Los enfoques se dividen a varias clases de algoritmos.
− Enfoque estático dirigido por tablas.
− Enfoque estático expropiativo dirigido por prioridad.
− Enfoque dinámico basado en un plan.
− Enfoque dinámico de mejor esfuerzo.
Clases de algoritmos

− Enfoque estático dirigido por tablas: Aplicable a tareas


periódicas, se necesitan datos como tiempo periódico de
llegada, tiempo de ejecución, plazo periódico de ejecución y
prioridad de las tareas. Se debe definir un plan que nos diga
cuando ejecutar cada tarea.
− Enfoque estático expropiativo dirigido por prioridad: Debe
usar un metodo expropiativo basado en prioridades (no RT),
para la planificación se debe basar en que demora mas las
tareas.
− Enfoque dinámico basado en un plan: Se determina un
plan, que incluye a las tareas ya planificadas mas cualquier
nueva tarea que no entorpezca el tiempo.
− Enfoque dinámico de mejor esfuerzo: Cuando llega un
nuevo proceso se le asigna una prioridad basado en las
características del proceso. En este caso los procesos no se
ejecutan de forma periódica.
Planificación por plazos
La mayoría de los sistemas operativos actuales en
tiempo real se diseñaron con el objetivo de dar inicio a
las tareas de tiempo real tan rápidamente como fuera
posible, y por lo tanto, hacen hincapié en una rápida
gestión de las interrupciones y expediciones de las
tareas. De hecho, no hay medidas particularmente
útiles en la evaluación de los sistemas operativos en
tiempo real. En las aplicaciones en tiempo real
generalmente no preocupa la velocidad absoluta, sino
completar las tareas en el momento mas apropiado, ni
antes ni después, a pesar de las peticiones dinámicas
de recursos y los conflictos, la sobrecarga de proceso
y los fallos de hardware o software.
Planificación por plazos
Planificación por plazos
Planificación por plazos
Planificación en GNU/Linux
Linux está basado en la planificación tradicional de
Unix  añadiendo 2 clases de prioridad para
procesos de tiempo real flexibles. Las tres clases de
prioridad de Linux son las siguientes:
ð    SCHED_FIFO: FIFO o FCFS, no se obliga a
dejar el procesador, se usa en procesos de tiempo
real.
ð   SCHED_RR: Usan su quantum de tiempo, se
obliga al proceso a dejar el procesador.
ð   SCHED_OTHER: hilos que no son de tiempo
real y otros.
Planificación en GNU/Linux
Dentro de cada clase se utilizan múltiples prioridades,
siendo las prioridades de las clases de tiempo real
mayores que el resto. Para los hilos FIFO, se aplican las
siguientes reglas:
1.      El sistema no interrumpe la ejecución de un hilo
FIFO, excepto en los siguientes casos:
a)   Pasa a estar listo otro hilo FIFO de mayor
prioridad.
b)   El hilo FIFO en ejecución  se bloquea a la espera
de un evento, como una E/S.
c)   El hilo FIFO en ejecución abandona el procesador
como resultado de la ejecución de la primitiva
sched_yield.  
Planificación en GNU/Linux


2.Cuando se interrumpe un hilo FIFO en ejecución,
pasa a la cola asociada a su prioridad.
  3.Cuando un hilo FIFO pasa a listo y tiene mayor
prioridad que el hijo que está en ejecución, se expulsa
al hilo en ejecución y pasa a ejecutar el hilo de mayor
prioridad. Si más de un hilo tiene esta mayor prioridad,
se escoge al que lleva más tiempo esperado.
Planificación en GNU/Linux
La política SCHED_RR se comporta de forma similar a la
SCHED_FIFO, excepto por el uso de un cuanto de tiempo
asociada a cada hilo. Cuando un hilo SCHED_RR ha
consumido su cuanto de tiempo, pasa a suspendido y se
escoge un hilo de tiempo real con una prioridad igual o mayor.
Esta ejecución de la figura es dada por las prioridades de los
distintos hilos.
Planificación en GNU/Linux
La planificación descrita anteriormente funciona para el
kernel 2.4, para el kernel 2.6 se decido tomar lo mejor del
kernel 2.4 y usar algunas nuevas características, para
tratar de mejorar el desempeño de los procesos.
- Tienen mayor prioridad a los que les quede mayor
tiempo en el procesador
- Se aumenta ligeramente la prioridad de los hilos del
mismo proceso.
- Se añade la prioridad “nice” colocada por el usuario.
- Los procesos se ejecutan en un solo procesador a
menos que haya un bloqueo de otro procesador.
- Ejecutar los hijos antes que sus padres, lo cual
mejora el desempeño.
Planificación Windows
Las prioridades en Windows se organizan de dos
formas: tiempo real y variable. Cada una de estas
bandas consta de 16  niveles de prioridad. Los hilos
que requieren atención inmediata están en clase de
tiempo real, que incluye funciones como
comunicaciones tareas de tiempo real.
En general, puesto que Windows utiliza un
planificador expropiativo con prioridades, los hilos
con prioridades de tiempo real tienen preferencia
sobre los otros hilos. En un monoprocesador, cuando
un hilo cuya prioridad es mayor que la del que se
ejecuta en ese momento pasa a estar Listo, el hilo de
menor prioridad es expulsado y se asigna el
procesador al de mayor prioridad.
Planificación Windows

Las prioridades se gestionan de forma algo


diferente en las clases. En la clase de prioridad
de tiempo real, todos los procesos tienen una
prioridad fija que no cambia nunca.
Planificación Windows
Planificación Unix
Dentro de la clase de tiempo compartido, un proceso tiene prioridad
variable. El planificador reduce su prioridad cada vez que agota un
cuanto de tiempo, y le incrementa cuando se bloquea un evento o
recurso. El cuanto de tiempo asignada a un proceso de tiempo
compartido depende de su prioridad, oscilando entre 10ms para
prioridad 0 y 100ms para prioridad 59. Cada proceso de tiempo real
tiene una prioridad fija de un cuanto de tiempo fijo.de Dentro de la
clase de tiempo.

You might also like