1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264
|
.\" Hey Emacs! This file is -*- nroff -*- source.
.\"
.\" Copyright (C) Tom Bjorkholm & Markus Kuhn, 1996
.\"
.\" This is free documentation; you can redistribute it and/or
.\" modify it under the terms of the GNU General Public License as
.\" published by the Free Software Foundation; either version 2 of
.\" the License, or (at your option) any later version.
.\"
.\" The GNU General Public License's references to "object code"
.\" and "executables" are to be interpreted as the output of any
.\" document formatting or typesetting system, including
.\" intermediate and printed output.
.\"
.\" This manual is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public
.\" License along with this manual; if not, write to the Free
.\" Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
.\" USA.
.\"
.\" 1996-04-01 Tom Bjorkholm <tomb@mydata.se>
.\" First version written
.\" 1996-04-10 Markus Kuhn <mskuhn@cip.informatik.uni-erlangen.de>
.\" revision
.\" Translated into Spanish Mon Feb 2 1998 by Gerardo Aburruzaga
.\" Garca <gerardo.aburruzaga@uca.es>
.\"
.TH SETSCHEDULER 2 "2 Febrero 1998" "Linux 1.3.81" "Manual del Programador Linux"
.SH NOMBRE
sched_setscheduler, sched_getscheduler \-
establecen y obtienen los algoritmos/parmetros de planificacin
.SH SINOPSIS
.B #include <sched.h>
.sp
\fBint sched_setscheduler(pid_t \fIpid\fB, int \fIpolitica\fB,
const struct sched_param *\fIp\fB);
.sp
\fBint sched_getscheduler(pid_t \fIpid\fB);
.sp
.nf
.ta 4n
\fBstruct sched_param {
...
int \fIsched_priority\fB;
...
};
.ta
.fi
.SH DESCRIPCIN
.B sched_setscheduler
establece tanto la poltica de planificacin como los parmetros
asociados para el proceso identificado por \fIpid\fP. Si \fIpid\fP es
igual a cero, se establece el planificador del proceso que hace la
llamada. La interpretacin del parmetro \fIp\fP depende de la
poltica seleccionada. Actualmente se soportan en Linux las tres
siguientes polticas:
.IR SCHED_FIFO ,
.IR SCHED_RR ,
y
.IR SCHED_OTHER ;
sus respectivas semnticas se describen abajo.
.B sched_getscheduler
pregunta por la poltica de planificacin aplicada actualmente al
proceso identificado por \fIpid\fP. Si \fIpid\fP es igual a cero, se
obtiene la poltica del proceso que hace la llamada.
.SS Polticas de Planificacin
El planificador es la parte del kernel que decide qu proceso
ejecutable ser ejecutado por la CPU a continuacin. El planificador
de Linux ofrece tres polticas de planificacin diferentes, una para
los procesos normales y dos para aplicaciones en tiempo real. Se
asigna a cada proceso un valor de prioridad esttica
\fIsched_priority\fR y este valor slo puede cambiarse a travs de
llamadas al sistema. Conceptualmente, el planificador mantiene una
lista de procesos ejecutables para cada posible valor
\fIsched_priority\fR, y
\fIsched_priority\fR puede tener un valor en el rango de 0 a 99. Para poder
determinar qu proceso se debe ejecutar a continuacin, el
planificador de Linux busca en la lista no vaca con la prioridad
esttica ms alta y toma el proceso a la cabeza de dicha lista. La
poltica de planificacin determina para cada proceso, dnde se
insertar en la lista de procesos con igual prioridad esttica y cmo
se mover dentro de esta lista.
\fISCHED_OTHER\fR es el planificador de tiempo compartido universal
predeterminado empleado por la mayora de los procesos;
\fISCHED_FIFO\fR y \fISCHED_RR\fR han sido pensados para aplicaciones
especiales donde el tiempo es crtico y necesitan un control preciso
sobre la forma en la que se seleccionan para ejecucin los procesos
ejecutables. A los procesos planificados con \fISCHED_OTHER\fR se les
debe asignar la prioridad esttica 0; los procesos planificados bajo
\fISCHED_FIFO\fR o \fISCHED_RR\fR pueden tener una prioridad esttica
en el rango de 1 a 99. Solamente los procesos con privilegio de
sper-usuario pueden obtener una prioridad esttica mayor que 0 y por
tanto pueden ser planificados bajo \fISCHED_FIFO\fR o
\fISCHED_RR\fR. Las llamadas al sistema \fBsched_get_priority_min\fR y
\fBsched_get_priority_max\fR pueden emplearse para encontrar el rango
vlido de prioridad para una poltica de planificacin de una manera
transportable en todos los sistemas que cumplan POSIX.1b.
Toda la planificacin es apropiativa: si un proceso con una prioridad
esttica ms alta est listo para ejecutarse, el proceso actual ser
apropiado y devuelto a su lista de espera. La poltica de
planificacin solamente determina la clasificacin en la lista de
procesos ejecutables con igual prioridad esttica.
.SS SCHED_FIFO: Planificacin FIFO (1 en entrar, 1 en salir).
\fISCHED_FIFO\fR slo puede emplearse con prioridades estticas
mayores que 0, lo que significa que cuando un proceso \fISCHED_FIFO\fR
se convierte en ejecutable, siempre prevalecer inmediatamente sobre
cualquier otro proceso normal \fISCHED_OTHER\fR ejecutndose.
\fISCHED_FIFO\fR es un simple algoritmo de planificacin sin rodajas
de tiempo. Para procesos planificados bajo la poltica
\fISCHED_FIFO\fR, se aplican las siguientes reglas:
Un proceso \fISCHED_FIFO\fR que ha sido apropiado por otro proceso de
mayor prioridad permanecer en la cabeza de la lista para su prioridad
y reanudar su ejecucin tan pronto como todos los procesos de
prioridad ms alta se bloqueen de nuevo. Cuando un proceso
\fISCHED_FIFO\fR llegue a ser ejecutable, se insertar al final de la
lista para su prioridad. Una llamada a
\fBsched_setscheduler\fR o a \fBsched_setparam\fR pondr el proceso
\fISCHED_FIFO\fR identificado por \fIpid\fR al final de la lista si
era ejecutable. Un proceso que llame a \fBsched_yield\fR ser colocado
al final de la lista. Ningn otro suceso mover un proceso planificado
bajo la poltica \fISCHED_FIFO\fR en la lista de espera de procesos
ejecutables con igual prioridad esttica. Un proceso \fISCHED_FIFO\fR
se ejecuta hasta que es bloqueado por una peticin de E/S, hasta que sea
apropiado por un proceso de ms alta prioridad, o hasta que llame a
\fBsched_yield\fR.
.SS SCHED_RR: Planificacin de asignacin en rueda (Round Robin).
\fISCHED_RR\fR es una simple mejora de \fISCHED_FIFO\fR. Todo lo
descrito arriba para \fISCHED_FIFO\fR se aplica tambin a
\fISCHED_RR\fR, excepto que a cada proceso slo se le permite
ejecutarse durante un cuanto de tiempo mximo.
Si un proceso \fISCHED_RR\fR ha estado ejecutndose durante un periodo
de tiempo igual o mayor que el cuanto de tiempo, ser puesto al final
de la lista para su prioridad. Un proceso \fISCHED_RR\fR que ha sido
apropiado por un proceso de ms alta prioridad y subsecuentemente reanuda
su ejecucin como un proceso en ejecucin, completar la porcin no
expirada de su cuanto de tiempo de asignacin en rueda. La cantidad
del cuanto de tiempo puede ser obtenida con \fBsched_rr_get_interval\fR.
.SS SCHED_OTHER: Planificacin predeterminada de Linux en t.c.
\fISCHED_OTHER\fR solamente puede emplearse con la prioridad esttica 0.
\fISCHED_OTHER\fR es el planificador estndar de Linux en tiempo
compartido, pensado para todos los procesos que no requieren
mecanismos especiales de prioridad esttica en tiempo real.
El proceso a ejecutarse se escoge de la lista de prioridad esttica 0
basado en una prioridad dinmica que se determina solamente dentro de
esta lista. La prioridad dinmica se basa en el nivel de `nice'
(puesto por la llamada \fBnice\fR o \fBsetpriority\fR) e incrementado
para cada cuanto de tiempo para el que el proceso est listo para la ejecucin,
pero denegado para ella por el planificador. Esto asegura un buen
progreso entre todos los procesos \fISCHED_OTHER\fR.
.SS Tiempo de respuesta
Un proceso de alta prioridad bloqueado esperando E/S tiene un cierto
tiempo de respuesta antes de que sea planificado otra vez. El escritor
del controlador del dispositivo puede reducir grandemente este tiempo
de respuesta empleando un manejador de interrupcin de "interrupcin
lenta" como se describe en
.BR request_irq (9).
.SS Miscelnea
Los procesos hijos heredan el algoritmo y parmetros de planificacin
a travs de un
.BR fork .
Usualmente se necesita un bloqueo de memoria para que los procesos en
tiempo real puedan evitar demoras en la paginacin; esto puede hacerse
con
.B mlock
o
.BR mlockall .
Como un bucle infinito no bloqueante en un proceso planificado bajo
\fISCHED_FIFO\fR o \fISCHED_RR\fR, bloquear para siempre todos los procesos con
baja prioridad, un desarrollador de software debera siempre mantener
disponible en la consola un shell planificado bajo una prioridad
esttica mayor que la de la aplicacin en pruebas. Esto permitir un
`kill' de emergencia en aplicaciones de tiempo real en pruebas que no
bloqueen o terminen como se espere. Como los procesos
\fISCHED_FIFO\fR y \fISCHED_RR\fR pueden apropiar otros procesos para
siempre, slo los procesos de root tienen permiso para activar estas
polticas bajo Linux.
Los sistemas POSIX en los cuales se dispone de
.B sched_setscheduler
y
.B sched_getscheduler
definen
.I _POSIX_PRIORITY_SCHEDULING
en <unistd.h>.
.SH VALOR DEVUELTO
En caso de xito,
.BR sched_setscheduler
devuelve cero.
En caso de xito,
.BR sched_getscheduler
devuelve la poltica para el proceso (un entero no negativo).
En caso de error, se devuelve \-1 y se pone en
.I errno
un valor apropiado.
.SH ERRORES
.TP 0.8i
.B ESRCH
No se ha podido encontrar el proceso cuya ID es \fIpid\fP.
.TP
.B EPERM
El proceso que hace la llamada no tiene los privilegios
apropiados. Solamente los procesos de root tienen permiso para activar
las polticas \fISCHED_FIFO\fR y \fISCHED_RR\fR. El proceso que llame a
.BR sched_setscheduler
necesita un UID efectivo igual al EUID o al UID del proceso
identificado por
.IR pid ,
o debe ser un proceso del sper-usuario.
.TP
.B EINVAL
La \fIpolitica\fR de planificacin no es una de las polticas
reconocidas, o el parmetro \fIp\fP no tiene sentido para la
\fIpolitica\fR.
.SH "CONFORME CON"
POSIX.1b (antiguamente POSIX.4)
.SH BUGS
En Linux-1.3.81, \fISCHED_RR\fR no haba sido an probada
cuidadosamente y pudiera ser que no se comportara exactamente como se
describe o requiere por POSIX.1b.
.SH CONSULTE TAMBIN
.BR sched_setparam (2),
.BR sched_getparam (2),
.BR sched_yield (2),
.BR sched_get_priority_max (2),
.BR sched_get_priority_min (2),
.BR nice (2),
.BR setpriority (2),
.BR getpriority (2),
.BR mlockall (2),
.BR munlockall (2),
.BR mlock (2),
.BR munlock (2).
.PP
.I Programming for the real world \- POSIX.4
por Bill O. Gallmeister, O'Reilly & Associates, Inc., ISBN 1-56592-074-0
.br
.I IEEE Std 1003.1b-1993
(estndar POSIX.1b)
.br
.I ISO/IEC 9945-1:1996
\- sta es la nueva revisin de 1996 de POSIX.1, que contiene en un
solo estndar POSIX.1(1990), POSIX.1b(1993), POSIX.1c(1995), y
POSIX.1i(1995).
\" LocalWords: POSIX apropiativa
|