• No se han encontrado resultados

Tema 4: Planificació ón de procesos n de procesos

N/A
N/A
Protected

Academic year: 2022

Share "Tema 4: Planificació ón de procesos n de procesos"

Copied!
15
0
0

Texto completo

(1)

Fundamentos de Sistemas Operativos

Modulo 2: Introducción a los sistemas operativos Windows

Tema 4: Planificaci

Tema 4: Planificació ón de procesos n de procesos

(2)

Proceso: Concepto

• Un sistema operativo ejecuta programas:

– Sistemas por lotes – tareas

– Sistemas de tiempo compartido – programas de usuario

• Proceso – un programa en ejecución

– La ejecución de un proceso debe progresar en forma secuencial

• Un proceso incluye:

– Estado del CPU (uno o más hilos) – Sección de texto y datos

– Recursos como archivos abiertos, sockets, etc.

• Tradicionalmente, los procesos eran la unidad de planificación

– Los sistemas operativos modernos planifican hilos

Estados de un hilo

• Diagrama de 5 estados para la planificación de un hilo:

– init: se crea el hilo

– listo: El hilo está esperando asignación de CPU

– corriendo: Las instrucciones del hilo están ejecutándose – bloqueado: El hilo está esperando que ocurra algún

evento

– terminado: El hilo terminó su ejecución

init

listo

bloqueado

corriendo

terminado planificador

dispatch

Esperando por un evento de E/S E/S o terminación

del evento

interrupción quantum expirado

admitido salida

(3)

Bloques de control de proceso e hilos

• Información asociada con cada proceso: Process Control Block (PCB)

– Información de administración de memoria – Información de contabilidad

• Información asociada con cada hilo: Thread Control Block (TCB)

– Contador de programa – Registros de CPU

– Información de planificación de CPU – Información sobre E/S pendientes

Process Control Block (PCB)

Program Counter Parent PID

Handle Table Process ID (PID)

Registers Next Process Block

Image File Name

PCB

List of Thread Control Blocks List of open files

• Esta es un vista abstracta

• La implementación de Windows de un PCB está separada en múltiples estructuras de datos

Next TCB

Thread Control Block (TCB)

(4)

La CPU cambia de hilo a hilo

Thread T1 ejecutando

ejecutando Listo o bloqueado

Guardar estado en TCB2 Cargar estado de TCB1 Guardar estado en TCB1 Cargar estado de TCB2

Interrupción o llamada de sistema Thread T2

ejecutando Interrupción o llamada de sistema

Listo o bloqueado

listo o bloqueado

Cambio de contexto

• Cuando la CPU cambia a otro hilo, el sistema debe guardar el estado del viejo proceso y cargar el estado del nuevo

• El cambio de contextos es sobrecarga; el sistema no realiza ninguna actividad útil mientras realiza el cambio

• Se requiere la interacción con el Administrador

de Memoria cuando se intercambia entre hilos

de diferentes procesos

(5)

Colas de planificación de procesos

• Cola de listo

– Mantiene el conjunto de todos los hilos listos y esperando para ejecutarse

– Puede haber múltiples colas de listo, ordenadas por prioridades

• Cola de dispositivo

– Mantiene el conjunto de hilos esperando par aun dispositivo de E/S

– Puede haber múltiples colas para los diferentes dispositivos

• Los hilos migran entre las distintas colas

Cola listo y de dispositivos de E/S

CPU Cola listo

E/S 1 espera

E/S 2 espera

E/S n espera

E/S n cola E/S 1 cola

E/S ocurre

Tiempo agotado

Liberado Dispatch

(6)

Criterios de optimización

• La planificación de CPU utiliza heurísticas para administrar manejar las diferencias entre

criterios de optimización contradictorios.

• Planificadores se optimizan para cierto tipos de cargas

– Interactivo vs. procesamiento por lotes – Intenso en E/S vs. intenso en cómputos

• Criterios comunes de optimización:

– Maximizar la utilización de CPU – Maximizar la salida del sistema – Minimizar el tiempo de retorno – Minimizar el tiempo de espera

Planificadores

• Planificador a largo plazo (o planificador de tareas)

– Selecciona que procesos con sus hilos debe ser llevado a la cola de listos

– Tiene en cuenta la administración de memoria – Controla el grado de multiprogramación

– Invocado de forma infrecuente, puede ser lento

• Planificador a corto plazo (o planificador de CPU)

– Selecciona que hilo será el próximo en ejecutarse – Invocado en forma frecuente, debe ser rápido

• Windows no tiene un planificador a largo plazo

dedicado

(7)

Planificación por prioridades - Inanición

El inanición es un problema:

– Los hilos de baja prioridad pueden no ejecutarse nunca Soluciones

1) Decrementar la prioridad y envejecimiento: Unix – Decrementar la prioridad de los procesos intensos en

CPU

– Un promedio exponencial del uso de CPU para incrementar lentamente los procesos bloqueados 2) Elevación de prioridad: Windows/VMS

– Incrementar las prioridad de un hilo cuando termina una E/S

– El sistema le da a los hilos relegados un empuje extra

El planificador de Windows:

• Dirigido por prioridades, sistema de planificación expropiativa

• Los hilos de alta prioridad siempre son ejecutados

• Los hilos corren por un tiempo limitado o quantum

• No hay un único planificador – planificación basada en eventos esparcida por todo el código

• Las rutinas del “Dispatcher” son lanzadas por los siguientes eventos:

– Un hilo está listo para ejecución

– Un hilo abandona el estado corriendo (expira el quantum, estado bloqueado)

– La prioridad del proceso cambia (llamada al sistema)

(8)

Principios de planificación en Windows

• 32 niveles de prioridad

• Los hilos dentro de la misma prioridad se

planificación siguiendo un política de Round Robin

• Las prioridades de tiempo real no se ajustan en forma dinámica

– La elevación de prioridad es una respuesta a cierta E/S – Ajuste del Quantum para optimizar el tiempo de respuesta

• Prioridades de tiempo real(> 15) se asignan estáticamente a los hilos

• Múltiples hilos pueden estar listos para correr

• “¿Quién toma el uso de CPU?”

• Desde el punto de vista de Windows API:

– Los procesos tiene una clase de prioridad cuando se crean

• Ocioso, Normal, Alta, Tiempo Real

• Windows 2000 agrego “sobre normal” y “bajo normal”

– Los hilos tienen una prioridad relativa dentro de su clase

• Ociosa, Baja, Bajo normal, Normal, Sobre normal, Alta y de Tiempo Critico

• Desde el punto de vista del núcleo:

– Los hilos tienen 32 prioridades 0 a 31

– Se planifican hilos, no procesos

– La clase de prioridad no se utiliza para tomar decisiones de planificación

APIs

APIsWindows de planificacióWindows de planificación:n:

GetGet//SetPriorityClassSetPriorityClass Get

Get//SetThreadPrioritySetThreadPriority GetGet//SetProcessAffinityMaskSetProcessAffinityMask SetThreadAffinityMask SetThreadAffinityMask SetThreadIdealProcessor SetThreadIdealProcessor Suspend

Suspend//ResumeThreadResumeThread

Planificación

(9)

Nucleo: Niveles de prioridad

16 niveles “tiempo real”

15 niveles variables

Utilizados por hilos de cero páginas

Utilizados por el hilo(s) ocioso 31

16

0 i 15

1

Windows vs. NT Kernel Prioridades

Win32 Clases de prioridades

Tiempo real

Alta

Sobre Normal Normal

Bajo Normal Ocio

Win32 Tiempo critico 31 15 15 15 15 15

Prioridades Alta 26 15 12 10 8 6

Hilos Sobre normal 25 14 11 9 7 5

Normal 24 13 10 8 6 4

Bajo normal 23 12 9 7 5 3

Baja 22 11 8 6 4 2

Ociosa 16 1 1 1 1 1

– La tabla muestra las prioridades base (la prioridad “actual” o

“dinámica” puede ser mayor si la base es < 15)

– Muchas utilidades muestran la prioridad dinámica de un hilo en lugar de la base

(10)

Special Thread Priorities

• Idle threads -- one per CPU

– When no threads want to run, Idle thread “runs”

• Not a real priority level - appears to have priority zero, but actually runs

“below” priority 0

• Provides CPU idle time accounting (unused clock ticks are charged to the idle thread)

– Loop:

• Calls HAL to allow for power management

• Processes DPC list

• Dispatches to a thread if selected

– Server 2003: in certain cases, scans per-CPU ready queues for next thread

• Zero page thread -- one per NT system

– Zeroes pages of memory in anticipation of “demand zero” page faults – Runs at priority zero (lower than any reachable from Windows) – Part of the “System” process (not a complete process)

Prioridades de Hilos vs. Interrupt Request Levels (IRQLs)

Passive_Level APC Dispatch/DPC

Device 1 . . . Device n

Clock

Interprocessor Interrupt Power fail

High

Interrupciones Hardware

IRQLs (x86)

Interrupciones Software 0

1 2 30 29 28 31

Prioridades

de hilos

0-31

(11)

Planificación de Hilos

• ¡No hay un planificador central!

– Por ej. No hay una rutina siempre instanciada llamada “el planificador”

– El “código que realiza la planificación” no es un hilo

– Las rutinas de planificación son simplemente llamadas cuando ocurre un evento que el estado listo de un hilo

– Cosas que pueden causar eventos de planificación:

• Interrupciones de intervalo de tiempo (por finalización de quantum)

• Interrupciones de intervalo de tiempo (por esperas con tiempo)

• Otras interrupciones de hardware (para la terminación de una E/S)

• Un hilo cambia el estado de un objeto en esperable que otros hilo(s) están esperando

• La prioridad de un hilo cambia

• Basado en colas de hilos Listos

Escenarios de planificación

• Expropiación

– Un hilo en una prioridad mayor al proceso actualmente corriendo pasa al estado de listo

– El hilo de menor prioridad es expropiado

– El hilo expropiado vuelve a la cabeza de su cola de Listo

• Intercambio voluntario – Esperando por un objeto – Terminación

– Baja explicita de la prioridad

• El hilo que se encuentra corriendo experimenta la finalización de su quantum

– Se decrementa la prioridad a menos que ya esté en su prioridad base – El hilo pasa a la cola de su cola de listo para su nueva prioridad – Puede continuar corriendo si no hay un hilo de prioridad igual o mayor

corriendo

(12)

La expropiación es dirigida estrictamente por eventos – No espera el siguiente tick de reloj

– No se garantiza la ejecución después de la expropiación

– Los hilos en modo núcleo pueden ser expropiados (a menos que se incremente IRQL to >= 2)

Un hilo expropiado vuelve a la cabeza de su cola de Listo

Escenarios de planificación

Expropiación

18 17 16 15 14 13

Corriendo Listo

Del estado bloqueado

• Si el nuevo proceso no es de mayor prioridad que el corriendo actualmente…

• …se pone en la cola de la cola de listo para su prioridad actual

Escenarios de planificación

Listo después de la resolución del bloqueo

18 17 16 15 14 13

Corriendo Listo

Del estado bloqueado

(13)

Escenarios de planificación

Cambio voluntario

• Cuando un hilo que está corriendo libera la CPU…

• …se planifica el hilo que está encabezando la siguiente cola de procesos Listos

Al estado bloqueado 18

17 16 15 14 13

Corriendo Listo

Escenarios de planificación

Finalización de Quantum

• Cuando el proceso corriendo agota su quantum de CPU, se pasa al final de su cola de listo

– Se aplica tanto a los procesos de tiempo real como a los de prioridades dinámicas, modo usuario y modo núcleo

• Los Quantums de un hilo pueden deshabilitarse mediante una función del núcleo

– Default quantum en Professional es 2 ticks de reloj, 12 en Server

• El tick de reloj estándar 10 msec; puede ser de 15 msec en algunos Pentium MP

– Si no hay otro hilo listo en la misma prioridad, el mismo hilo continua corriendo (solo toma un nuevo quantum)

– Si está corriendo en una prioridad mayor a su base, la misma se decrementa en uno

Corriendo Listo 18

17 16 15 14 13

(14)

Basic Thread Scheduling States

Ready (1) Running (2)

Waiting (5)

voluntary switch

preemption, quantum end

Ajustes de prioridades

• Los ajuste dinámicos de prioridades (alza y baja) son aplicados a los hilos en las clases “dinámicas

– Hilos con prioridades base entre 1-15

– Se puede deshabilitar con SetThreadPriorityBoost o SetProcessPriorityBoost

• Cinco tipos:

– Terminación de E/S

– Termina la espera de eventos o semáforos

– Cuando un hilo primer plano completa un bloqueado – Cuando un hilo de GUI se despierta para una entrada – Para evitar la inanición

• No hay ajustes automáticos en las clases “tiempo real” (16 o superiores)

– Aquí “tiempo real” significa “que el sistema no cambiará las prioridades relativas de sus hilos de tiempo real”

– Por lo tanto, la planificación es predecible con respecto a los otros hilos en tiempo real

(15)

Incremento de prioridad

Para favorecer los hilos intensos en E/S:

• Después de una E/S: especificada por el controlador – IoCompleteRequest( Irp, PriorityBoost )

• Después de la espera de un evento en el ejecutivo o un semaforo

• Los hilos de una GUI se despiertan para procesar la entrada de datos (ej. Mensajes de windows) incrementan en 2

Valores comunes (ver NTDDK.H) 1: disk, CD-ROM, parallel, Video 2: serial, network, named pipe, mailslot

6: keyboard or mouse 8: sound

Prioridad

Prioridad Base

Run Wait Run

Preempt (before quantum end)

Run Priority decay at quantum end Boost

upon wait complete

Round-robin at base priority quantum

Tiempo

Incremento y caida de la prioridad de un hilo

• Comportamiento de estos incrementos:

Se aplica a la prioridad base del hilo

No lo llevará sobre la prioridad 15

Después del incremento se obtiene un quantum

Luego se baja 1 nivel y se corre otro quantum

Referencias

Documento similar

Cedulario se inicia a mediados del siglo XVIL, por sus propias cédulas puede advertirse que no estaba totalmente conquistada la Nueva Gali- cia, ya que a fines del siglo xvn y en

Se dice que la Administración no está obligada a seguir sus pre- cedentes y puede, por tanto, conculcar legítimamente los principios de igualdad, seguridad jurídica y buena fe,

Petición de decisión prejudicial — Cour constitutionnelle (Bélgica) — Validez del artículo 5, apartado 2, de la Directiva 2004/113/CE del Consejo, de 13 de diciembre de 2004, por

La metodología de investigación empleada fue del tipo experimental. población en proceso de evaluación judicial). Los sujetos de la muestra en evaluación de custodias

De este modo se constituye un espacio ontológico y epistemológico a la vez, en el que cada elemento (cada principio) ocupa un lugar determinado en la totalidad, y desde ahí está

Primeros ecos de la Revolución griega en España: Alberto Lista y el filohelenismo liberal conservador español 369 Dimitris Miguel Morfakidis Motos.. Palabras de clausura

Tras establecer un programa de trabajo (en el que se fijaban pre- visiones para las reuniones que se pretendían celebrar los posteriores 10 de julio —actual papel de los