Publicado el 15 de Octubre del 2018
609 visualizaciones desde el 15 de Octubre del 2018
345,2 KB
8 paginas
Creado hace 17a (25/04/2007)
ditdit
UPM
Planificación de hebras en
POSIX
Juan Antonio de la Puente
DIT/UPM
Modelo básico
u POSIX define un modelo de planificación con prioridades
y varias políticas secundarias
– FIFO
» una hebra (o un proceso) se ejecuta hasta que termina o se suspende
» puede ser desalojada por otra hebra (o proceso) de mayor prioridad
– RoundRobin
» una hebra (o proceso) se ejecuta hasta que termina, se suspende, o
expira su cuanto de tiempo de ejecución
– Servidor esporádico
– Otras, definidas por la implementación
u Las prioridades se pueden cambiar dinámicamente
u Se pueden especificar varios protocolos de acceso para
los cerrojos
– herencia de prioridad
– techo de prioridad inmediato
25/04/07
Planificación en POSIX
2
t
5
0
0
2
e
n
e
u
P
a
l
i
t
e
d
o
n
o
n
A
n
a
u
J
©
Política de planificación
u La política de planificación dentro del mismo nivel de
prioridad se define con
int pthread_attr_setschedpolicy (
pthread_attr_t *attr,
int policy);
u El parámetro policy puede ser
– SCHED_FIFO (orden de llegada)
– SCHED_RR (turno circular con cuantos de tiempo)
– SCHED_SPORADIC (servidor esporádico)
– SCHED_OTHER (dependiente de la implementación)
u Los atributos se usan al crear la hebra
25/04/07
Planificación en POSIX
3
t
5
0
0
2
e
n
e
u
P
a
l
i
t
e
d
o
n
o
n
A
n
a
u
J
©
Prioridades
u La prioridad de una hebra es un parámetro de
planificación:
struct sched_param {
…
int sched_priority;
…
}
y se especifica con
int pthread_attr_setschedparam (
const pthread_attr_t *attr,
const struct sched_param *param);
25/04/07
Planificación en POSIX
4
t
5
0
0
2
e
n
e
u
P
a
l
i
t
e
d
o
n
o
n
A
n
a
u
J
©
Protocolo de acceso a cerrojos
u Se puede especificar un protocolo de acceso con
int pthread_mutexattr_setprotocol (
pthread_mutex_attr_t *attr,
int *protocol);
u El protocolo puede ser
– PTHREAD_PRIO_INHERIT (herencia de prioridad)
– PTHREAD_PRIO_PROTECT (techo de prioridad inmediato)
– PTHREAD_PRIO_NONE (no hay herencia de prioridad)
25/04/07
Planificación en POSIX
5
t
5
0
0
2
e
n
e
u
P
a
l
i
t
e
d
o
n
o
n
A
n
a
u
J
©
Prioridad techo
u Se especifica con
int pthread_mutexattr_setprioceiling (
pthread_mutexattr_t *attr,
int prioceiling);
Los atributos se usan para iniciar el cerrojo
25/04/07
Planificación en POSIX
6
t
5
0
0
2
e
n
e
u
P
a
l
i
t
e
d
o
n
o
n
A
n
a
u
J
©
Servidor esporádico
u Un servidor esporádico es una hebra que tiene una
capacidad limitada para ejecutar tareas esporádicas con
prioridad alta
– si se agota la capacidad se sigue ejecutando con prioridad baja
– parámetros: capacidad, intervalo de relleno, prioridades alta y baja
25/04/07
Planificación en POSIX
7
t
5
0
0
2
e
n
e
u
P
a
l
i
t
e
d
o
n
o
n
A
n
a
u
J
©
Resumen
u La interfaz de POSIX define un modelo de planificación
flexible
u Se puede ajustar de forma que se pueda analizar el
tiempo de respuesta de las tareas
– planificación SCHED_FIFO y PTHREAD_PRIO_PROTECT
25/04/07
Planificación en POSIX
8
t
5
0
0
2
e
n
e
u
P
a
l
i
t
e
d
o
n
o
n
A
n
a
u
J
©
Comentarios de: Planificación de hebras en POSIX (0)
No hay comentarios