File: sched_setscheduler.2

package info (click to toggle)
manpages-fr 0.8-1
  • links: PTS
  • area: main
  • in suites: potato
  • size: 5,760 kB
  • ctags: 4
  • sloc: makefile: 57; sh: 8
file content (295 lines) | stat: -rw-r--r-- 10,644 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
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
.\" 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
.\"
.\" Traduction 14/10/1996 par Christophe Blaess (ccb@club-internet.fr)
.\" Mise a Jour 8/04/97
.TH SETSCHEDULER 2 "8 Avril 1997" Linux "Manuel du programmeur Linux"
.SH NOM
sched_setscheduler, sched_getscheduler \- Lire / fixer la politique d'ordonnancement et ses paramtres.

.SH SYNOPSIS
.B #include <sched.h>
.sp
\fBint sched_setscheduler(pid_t \fIpid\fB, int \fIpolicy\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 DESCRIPTION
.B sched_setscheduler
fixe  la fois la politique d'ordonnancement et ses paramtres pour 
le processus identifi par \fIpid\fR. 
Si \fIpid\fR vaut zro, la politique du processus en cours sera
fixe.
L'interprtation du paramtre \fIp\fR dpend de la politique 
employe. Actuellement il y a trois politiques proposes par Linux :
.IR SCHED_FIFO , 
.IR SCHED_RR ,
et
.IR SCHED_OTHER.
Leurs smantiques respectives sont dcrites ci-dessous.

.B sched_getscheduler
lit la politique  d'ordonnancement et ses paramtres pour 
le processus identifi par \fIpid\fR. 
Si \fIpid\fR vaut zro, la politique du processus en cours sera
rcupre.


.SS Politiques d'ordonnancement

L'ordonnanceur est la partie du noyau qui dcide quel processus
prt va tre excut ensuite. L'ordonnanceur de Linux propose
trois politiques diffrentes, une pour les processus classiques,
et deux pour les applications  vocation temps-rel.

Une valeur de priorit statique \fIsched_priority\fR est
assigne  chaque processus, et ne peut tre modifie que par
l'intermdiaire d'appels systmes.
Conceptuellement, l'ordonnanceur dispose d'une liste de tous
les processus prts pour chaque valeur possible de \fIsched_priority\fR
(\fIsched_priority\fR est dans l'intervalle 0  99).

Afin de dterminer quel processus doit s'excuter ensuite, 
l'ordonnanceur de Linux recherche la liste non-vide de plus haute
priorit statique et prend le processus en tte de cette liste.
La politique d'ordonnancement dtermine pour chaque processus
l'emplacement o il sera insr dans la liste contenant les
processus de mme priorite statique, et comment il se dplacera
dans cette liste.


\fISCHED_OTHER\fR est l'ordonnancement universel temps-partag
par dfaut, utilis par la plupart des processus.
\fISCHED_FIFO\fR et \fISCHED_RR\fR sont prvus pour des 
applications temps\-rel qui ncessitent un contrle prcis de
la slection des processus prts.

Les processus ordonnancs avec \fISCHED_OTHER\fR doivent avoir
une priorit statique de 0, ceux ordonnancs par \fISCHED_FIFO\fR ou
\fISCHED_RR\fR peuvent avoir une priorit statique dans l'intervalle
1  99.
Seuls les processus disposant de privilges Super\-User peuvent
obtenir une priorit statique suprieure a 0 afin d'tre
ordonnanc par \fISCHED_FIFO\fR ou \fISCHED_RR\fR. 

Les appels systmes \fBsched_get_priority_min\fR et
\fBsched_get_priority_max\fR permettent de dterminer l'intervalle
de priorits valides de manire portable sur les systmes conformes
 la norme POSIX.1b.

Tout ordonnancement est premptif : Si un processus avec une priorit
statique plus leve devient prt, le processus en cours est
interrompu et retourne dans sa liste d'attente. La politique 
d'ordonnancement dtermine simplement l'ordre utilis dans une
liste de processus prts avec des priorits statiques gales.

.SS SCHED_FIFO: Ordonnancement First In-First out (premier arriv, premier servi)

\fISCHED_FIFO\fR ne peut tre utilis qu'avec des priorits statiques 
suprieures  0, ce qui signifie que ds qu'un processus \fISCHED_FIFO\fR
devient prt, un processus normal \fISCHED_OTHER\fR en cours
d'excution sera interrompu.
\fISCHED_FIFO\fR est un ordonnancement simple  base de tranches
de temps. Pour les processus ordonnancs par \fISCHED_FIFO\fR 
les rgles suivantes sont appliques :

Un processus \fISCHED_FIFO\fR qui a t prempt par un autre
processus de priorit suprieure restera en tte de sa liste
et reprendra son excution ds que tous les processus de
priorits suprieures sont  nouveau bloqus.

Quand un processus \fISCHED_FIFO\fR devient prt, il est
insr  la fin de sa liste. 

Un appel systme
\fBsched_setscheduler\fR ou \fBsched_setparam\fR placera le
processus \fISCHED_FIFO\fR identifi par \fIpid\fR  la fin de
sa liste s'il est prt.

Un processus appelant \fBsched_yield\fR sera plac  la fin de sa liste.

Aucun autre vnement ne modifiera l'ordre des listes de priorits
statiques gales avec \fISCHED_FIFO\fR.

Un processus \fISCHED_FIFO\fR s'excute jusqu' ce qu'il soit bloqu
par une opration d'entre/sortie, qu'il soit prempt par un processus
de priorit suprieure, ou qu'il appelle \fBsched_yield\fR.


.SS SCHED_RR: Ordonnancement Round Robin 

\fISCHED_RR\fR est une amlioration simple de la politique \fISCHED_FIFO\fR. 
Tout ce qui est dcrit pour \fISCHED_FIFO\fR s'applique aussi  \fISCHED_RR\fR,
sauf que chaque processus ne dispose que d'une tranche temporelle
limite pour son excution.
Si un processus sous politique \fISCHED_RR\fR s'est excut depuis
une dure suprieure ou gale  la tranche temporelle (time quantum),
il sera plac  la fin de la liste de sa priorit.

Un processus sous \fISCHED_RR\fR qui a t prempt par un
processus de priorit suprieure terminera sa tranche de temps
lorsqu'il reprendra son excution.
la longueur du time quantum peut tre lue avec \fBsched_rr_get_interval\fR.

.SS SCHED_OTHER: Ordonnancement temps-partag par dfaut

La politique \fISCHED_OTHER\fR ne peut tre utilise qu'avec des
priorits statiques  0. C'est la politique standard de l'ordonnanceur
temps partag de Linux, et est conue pour tous les processus ne
rclamant pas de fonctionnalites temps\-rel.

Le processus  excuter est choisi dans la liste des processus de
priorits statiques nulles, en utilisant une priorit dynamique
qui ne s'applique que dans cette liste.

La priorite dynamique est base sur la valeur de "gentillesse" du
processus (fixe avec les appels systmes \fBnice\fR ou 
\fBsetpriority\fR) et est incrmente  chaque time quantum 
o le processus est prt mais non slectionn par l'ordonnanceur.
Ceci garantit une progression quitable de tous les processus
\fISCHED_OTHER\fR.


.SS Temps de rponse

Un processus de haute priorit bloqu en attente d'entres/sorties
est affect d'un certain temps de rponse avant d'tre slectionn
 nouveau. Le concepteur d'un gestionnaire de priphrique
peut rduire grandement ce temps de rponse en utilisant
un gestionnaire d'interruptions lentes comme dcrit dans
.BR request_irq (9).

.SS Divers

Les processus fils hritent de la politique d'ordonnancement et
des paramtres associs lors d'un
.BR fork .

Le verrouillage de pages en mmoire est gnralement ncessaire
pour les processus temps rel afin d'viter les dlais de
pagination. Ceci peut tre effectu avec
.BR mlock (2)
ou
.BR mlockall (2).


Comme une boucle sans fin non bloquante dans un processus ordonnanc
sous une politique \fISCHED_FIFO\fR ou \fISCHED_RR\fR bloquera
indfiniment tous les processus avec une priorit plus faible,
le dveloppeur d'applications temps\-rel devrait toujours 
conserver sur une console un schell ordonnanc avec une priorit 
suprieure  celle de l'application teste.

Ceci permettra un 
.BR kill ((1)
d'urgence des applications testes qui ne se bloquent pas ou
qui ne se terminent pas comme prvu.
Comme les processus sous \fISCHED_FIFO\fR et \fISCHED_RR\fR 
peuvent prempter les autres processus normaux pour toujours,
seuls les processus Super\-User ont le droit d'activer ces politiques
sous Linux.

Les systmes POSIX sur lesquels
.B sched_setscheduler
et
.B sched_getscheduler
sont disponibles dfinissent
.I _POSIX_PRIORITY_SCHEDULING
dans <unistd.h>.

.SH "VALEUR RENVOYE"
.BR sched_setscheduler
renvoie 0 s'il russit
.BR sched_getscheduler
renvoie la politique pour le processus s'il russit.

En cas d'chec, \-1 est renvoy et
.I errno
contient le code d'erreur.
.SH ERREURS
.TP 0.8i
.B ESRCH
Le processus numro \fIpid\fR n'existe pas.
.TP
.B EPERM
Le processus appelant n'a pas les privilges ncessaires. Seul
les processus Super\-User peuvent activer les politiques 
\fISCHED_FIFO\fR et \fISCHED_RR\fR.
Le processus appelant
.BR sched_setscheduler
doit avoir un UID effectif gal  celui du processus
.IR pid ,
ou tre Super\-User.
.TP
.B EINVAL
La valeur de politique d'ordonnancement \fIpolicy\fR n'existe pas,
ou le paramtre \fIp\fR n'a pas de signification pour
la politique \fIpolicy\fR.
.SH CONFORMIT
POSIX.1b (POSIX.4)
.SH BUGS
Sous Linux 1.3.81,\fISCHED_RR\fR n'a pas ete test totalement, et ne
se comporte peut tre pas exactement comme dcrit ci\-dessus.
.SH "VOIR AUSSI"
.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
by Bill O. Gallmeister, O'Reilly & Associates, Inc., ISBN 1-56592-074-0
.br
.I IEEE Std 1003.1b-1993
(POSIX.1b standard)
.br
.I ISO/IEC 9945-1:1996
- C'est une nouvelle rvision 1996 de POSIX.1 qui regroupe en
un seul standard les normes POSIX.1(1990), POSIX.1b(1993), POSIX.1c(1995), et
POSIX.1i(1995).

.SH TRADUCTION
Christophe Blaess, 1997.