File: sched_setscheduler.2

package info (click to toggle)
manpages-es 0.4a-2
  • links: PTS
  • area: main
  • in suites: hamm, slink
  • size: 3,592 kB
  • ctags: 3
  • sloc: sh: 59; makefile: 42
file content (264 lines) | stat: -rw-r--r-- 11,047 bytes parent folder | download
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