Se connecter
Se connecter
Inscription
Mot de passe perdu
Connexion:
[Actualités]
Nvidia prévient d'une pénurie de GPU ce trimestre, avec une reprise début 2025
[Actualités]
Les Technos #469 : Un jour sans fin
[Actualités]
Test Farming Simulator 25 (PS5) - Des innovations intéressantes mais des perfor...
[Actualités]
Qualcomm souhaite réduire davantage les prix des PC Windows basés sur ARM
[Actualités]
Finalement, Google préparerait une nouvelle tablette mais la Pixel Tablet 2 ser...
[Actualités]
Windows 10 version 22H2 : erreur de mise à jour et de désinstallation
[Actualités]
OpenAI prépare désormais son propre navigateur
[Actualités]
WhatsApp bat Telegram : les transcriptions des messages vocaux arrivent pour tou...
[Actualités]
Unreal et Unreal Tournament désormais gratuits sur Internet Archive
[Actualités]
Windows 10 : Microsoft affiche des publicités en plein écran pour les PC équi...
[Articles]
Dungeons 4 - Nintendo Switch Edition
[Articles]
The Bridge Curse 2 : The Extrication
[Articles]
Farmagia
[Articles]
I*CHU: Chibi Edition
[Articles]
Farming Simulator 25
[Articles]
Goblin Slayer -Another Adventurer- Nightmare Feast
[Articles]
Deel lance des programmes en marque blanche et pour les revendeurs pour plus de ...
[Articles]
ESET Research : WolfsBane, nouvelle porte dérobée de cyber-espionnage Linux cr...
[Articles]
Devoteam présente son nouveau plan stratégique « AMPLIFY » avec un fort acce...
[Articles]
LEGO Horizon Adventures
Actualités
Lettre d'information
Proposer une actualité
Archives
Actualités
Articles
Programmation
Press Release
Matériel
Logiciels
Livres
Interviews
Derniers commentaires
Jeux Vidéos
XBox One
XBox 360
Wii U
PSP
PS4
PS3
PC
DS
GameCube
3DS
Forum
Derniers messages
Informatique
Fun
Divers
Logithèque
Blogs
Divers
A Propos
Annonceurs
Contact
Recherche
RSS
Editer un article
Titre
Mots Clés
Texte
[size=18] [b]Nom[/b] [/size] sched_setscheduler, sched_getscheduler - Lire / fixer la politique d'ordonnancement et ses paramètres. [size=18] [b]Résumé[/b] [/size] [b]#include
[/b] [b][i]int sched_setscheduler(pid_t pid , int policy ,[/i][/b] [b][i]const struct sched_param * p );[/i][/b] [b][i]int sched_getscheduler(pid_t pid );[/i][/b] .nf .ta 4n [b]struct[/b] sched_param { ... int [i]sched_priority[/i][b];[/b] ... }; .ta .fi [size=18] [b]Description[/b] [/size] [b]sched_setscheduler[/b] fixe à la fois la politique d'ordonnancement et ses paramètres pour le processus identifié par [i]pid[/i]. Si [i]pid[/i] vaut zéro, la politique du processus en cours sera fixée. L'interprétation du paramètre [i]p[/i] dépend de la politique employée. Actuellement il y a trois politiques proposées par Linux : [b]SCHED_FIFO , [/b] [b]SCHED_RR ,[/b] et [b]SCHED_OTHER.[/b] Leurs sémantiques respectives sont décrites ci-dessous. [b]sched_getscheduler[/b] lit la politique d'ordonnancement et ses paramètres pour le processus identifié par [i]pid[/i]. Si [i]pid[/i] vaut zéro, la politique du processus en cours sera récupérée. [b]Politiques dordonnancement[/b] L'ordonnanceur est la partie du noyau qui décide quel processus prêt va être exécuté ensuite. L'ordonnanceur de Linux propose trois politiques différentes, une pour les processus classiques, et deux pour les applications à vocation temps-réel. Une valeur de priorité statique [i]sched_priority[/i] est assignée à chaque processus, et ne peut être modifiée que par l'intermédiaire d'appels systèmes. Conceptuellement, l'ordonnanceur dispose d'une liste de tous les processus prêts pour chaque valeur possible de [i]sched_priority[/i] ([i]sched_priority[/i] est dans l'intervalle 0 à 99). Afin de déterminer quel processus doit s'exécuter ensuite, l'ordonnanceur de Linux recherche la liste non-vide de plus haute priorité statique et prend le processus en tête de cette liste. La politique d'ordonnancement détermine pour chaque processus l'emplacement où il sera inséré dans la liste contenant les processus de même priorité statique, et comment il se déplacera dans cette liste. [i]SCHED_OTHER[/i] est l'ordonnancement universel temps-partagé par défaut, utilisé par la plupart des processus. [i]SCHED_FIFO[/i] et [i]SCHED_RR[/i] sont prévus pour des applications temps-réel qui nécessitent un contrôle précis de la sélection des processus prêts. Les processus ordonnancés avec [i]SCHED_OTHER[/i] doivent avoir une priorité statique de 0, ceux ordonnancés par [i]SCHED_FIFO[/i] ou [i]SCHED_RR[/i] peuvent avoir une priorité statique dans l'intervalle 1 à 99. Seuls les processus disposant de privilèges Super-User peuvent obtenir une priorité statique supérieure a 0 afin d'être ordonnancé par [i]SCHED_FIFO[/i] ou [i]SCHED_RR[/i]. Les appels systèmes [b]sched_get_priority_min[/b] et [b]sched_get_priority_max[/b] permettent de déterminer l'intervalle de priorités valides de manière portable sur les systèmes conformes à la norme POSIX.1b. Tout ordonnancement est préemptif : Si un processus avec une priorité statique plus élevée devient prêt, le processus en cours est interrompu et retourne dans sa liste d'attente. La politique d'ordonnancement détermine simplement l'ordre utilisé dans une liste de processus prêts avec des priorités statiques égales. [b]Sched_fifo: ordonnancement first in-first out (premier arrivé, premier servi)[/b] [i]SCHED_FIFO[/i] ne peut être utilisé qu'avec des priorités statiques supérieures à 0, ce qui signifie que dès qu'un processus [i]SCHED_FIFO[/i] devient prêt, un processus normal [i]SCHED_OTHER[/i] en cours d'exécution sera interrompu. [i]SCHED_FIFO[/i] est un ordonnancement simple à base de tranches de temps. Pour les processus ordonnancés par [i]SCHED_FIFO[/i] les règles suivantes sont appliquées : Un processus [i]SCHED_FIFO[/i] qui a été préempté par un autre processus de priorité supérieure restera en tête de sa liste et reprendra son exécution dès que tous les processus de priorités supérieures sont à nouveau bloqués. Quand un processus [i]SCHED_FIFO[/i] devient prêt, il est inséré à la fin de sa liste. Un appel système [b]sched_setscheduler[/b] ou [b]sched_setparam[/b] placera le processus [i]SCHED_FIFO[/i] identifié par [i]pid[/i] à la fin de sa liste s'il est prêt. Un processus appelant [b]sched_yield[/b] sera placé à la fin de sa liste. Aucun autre évènement ne modifiera l'ordre des listes de priorités statiques égales avec [i]SCHED_FIFO[/i]. Un processus [i]SCHED_FIFO[/i] s'exécute jusqu'à ce qu'il soit bloqué par une opération d'entrée/sortie, qu'il soit préempté par un processus de priorité supérieure, ou qu'il appelle [b]sched_yield[/b]. [b]Sched_rr: ordonnancement round robin[/b] [i]SCHED_RR[/i] est une amélioration simple de la politique [i]SCHED_FIFO[/i]. Tout ce qui est décrit pour [i]SCHED_FIFO[/i] s'applique aussi à [i]SCHED_RR[/i], sauf que chaque processus ne dispose que d'une tranche temporelle limitée pour son exécution. Si un processus sous politique [i]SCHED_RR[/i] s'est exécuté depuis une durée supérieure ou égale à la tranche temporelle (time quantum), il sera placé à la fin de la liste de sa priorité. Un processus sous [i]SCHED_RR[/i] qui a été préempté par un processus de priorité supérieure terminera sa tranche de temps lorsqu'il reprendra son exécution. la longueur du time quantum peut être lue avec [b]sched_rr_get_interval[/b]. [b]Sched_other: ordonnancement temps-partagé par défaut[/b] La politique [i]SCHED_OTHER[/i] ne peut être utilisée qu'avec des priorités statiques à 0. C'est la politique standard de l'ordonnanceur temps partagé de Linux, et est conçue pour tous les processus ne réclamant pas de fonctionnalités temps-réel. Le processus à exécuter est choisi dans la liste des processus de priorités statiques nulles, en utilisant une priorité dynamique qui ne s'applique que dans cette liste. La priorité dynamique est basée sur la valeur de "gentillesse" du processus (fixée avec les appels systèmes [b]nice[/b] ou [b]setpriority[/b]) et est incrémentée à chaque time quantum où le processus est prêt mais non sélectionné par l'ordonnanceur. Ceci garantit une progression équitable de tous les processus [i]SCHED_OTHER[/i]. [b]Temps de réponse[/b] Un processus de haute priorité bloqué en attente d'entrées/sorties est affecté d'un certain temps de réponse avant d'être sélectionné à nouveau. Le concepteur d'un gestionnaire de périphérique peut réduire grandement ce temps de réponse en utilisant un gestionnaire d'interruptions lentes comme décrit dans [b]request_irq (9).[/b] [b]Divers[/b] Les processus fils héritent de la politique d'ordonnancement et des paramètres associés lors d'un [b]fork .[/b] Le verrouillage de pages en mémoire est généralement nécessaire pour les processus temps réel afin d'éviter les délais de pagination. Ceci peut être effectué avec [b]mlock (2)[/b] ou [b]mlockall (2).[/b] Comme une boucle sans fin non bloquante dans un processus ordonnancé sous une politique [i]SCHED_FIFO[/i] ou [i]SCHED_RR[/i] bloquera indéfiniment tous les processus avec une priorité plus faible, le développeur d'applications temps-réel devrait toujours conserver sur une console un shell ordonnancé avec une priorité supérieure à celle de l'application testée. Ceci permettra un [b]kill ((1)[/b] d'urgence des applications testées qui ne se bloquent pas ou qui ne se terminent pas comme prévu. Comme les processus sous [i]SCHED_FIFO[/i] et [i]SCHED_RR[/i] peuvent préempter les autres processus normaux pour toujours, seuls les processus Super-User ont le droit d'activer ces politiques sous Linux. Les systèmes POSIX sur lesquels [b]sched_setscheduler[/b] et [b]sched_getscheduler[/b] sont disponibles définissent [i]_POSIX_PRIORITY_SCHEDULING[/i] dans
. [size=18] [b]Valeur renvoyée[/b] [/size] [b]sched_setscheduler[/b] renvoie 0 s'il réussit [b]sched_getscheduler[/b] renvoie la politique pour le processus s'il réussit. En cas d'échec, -1 est renvoyé et [i]errno[/i] contient le code d'erreur. [size=18] [b]Erreurs[/b] [/size] [b]ESRCH[/b] [table][row][col] [/col][col]Le processus numéro [i]pid[/i] n'existe pas.[/col][/row][/table] [b]EPERM[/b] [table][row][col] [/col][col]Le processus appelant n'a pas les privilèges nécessaires. Seul les processus Super-User peuvent activer les politiques [i]SCHED_FIFO[/i] et [i]SCHED_RR[/i]. Le processus appelant [b]sched_setscheduler[/b] doit avoir un UID effectif égal à celui du processus [b]pid ,[/b] ou être Super-User.[/col][/row][/table] [b]EINVAL[/b] [table][row][col] [/col][col]La valeur de politique d'ordonnancement [i]policy[/i] n'existe pas, ou le paramètre [i]p[/i] n'a pas de signification pour la politique [i]policy[/i].[/col][/row][/table] [size=18] [b]Conformité[/b] [/size] POSIX.1b (POSIX.4) [size=18] [b]Bugs[/b] [/size] Sous Linux 1.3.81,[i]SCHED_RR[/i] n'a pas été testé totalement, et ne se comporte peut être pas exactement comme décrit ci-dessus. [size=18] [b]Note[/b] [/size] Le noyau Linux standard est un système d'exploitation à vocation généraliste, et peut gérer des processus en arrière-plan, des applications interactives, et des applications en temps-réel souple (qui ont besoin de répondre à des critères temporels moyens). Cette page de manuel est prévue pour ce type d'applications. Le noyau Linux standard n'est [i]pas[/i] prévu pour le support des applications en temps-réel strict, dans lesquelles les limites temporelles (souvent inférieures à la seconde) sont sûres d'être respectées sous risque d'échec catastrophique. Comme tous les systèmes à vocations générales, Linux est prévu pour optimiser les performances moyennes. Les performances critiques pour la gestion des interruptions sont bien pires que les performances moyennes, les verrous divers du noyau (comme ceux pour les SMP) créent de longs temps d'attente, plusieurs améliorations des performances moyennes se font au détriment des performances critiques. Pour la plupart des situations, c'est ce que l'on attend, mais si vous désirez de véritables performances temps-réel, il faut se tourner vers des extensions comme RTLinux (http://www.rtlinux.org) ou un système d'exploitation conçu pour le temps-réel strict. [size=18] [b]Voir aussi[/b] [/size] [b]sched_setaffinity (2),[/b] [b]sched_getaffinity (2),[/b] [b]sched_setparam (2), [/b] [b]sched_getparam (2), [/b] [b]sched_yield (2), [/b] [b]sched_get_priority_max (2), [/b] [b]sched_get_priority_min (2), [/b] [b]sched_rr_get_interval (2),[/b] [b]nice (2), [/b] [b]setpriority (2), [/b] [b]getpriority (2), [/b] [b]mlockall (2), [/b] [b]munlockall (2), [/b] [b]mlock (2), [/b] [b]munlock (2).[/b] [i]Programming for the real world - POSIX.4[/i] by Bill O. Gallmeister, O'Reilly & Associates, Inc., ISBN 1-56592-074-0 [b][/b] [i]IEEE Std 1003.1b-1993[/i] (POSIX.1b standard) [b][/b] [i]ISO/IEC 9945-1:1996[/i] - C'est une nouvelle révision 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). [size=18] [b]Traduction[/b] [/size] Christophe Blaess, 1996-2003.
Fichier
Forum
-
Derniers messages
Bavardages
Aujourd'hui, je rénove ou je construis ^^
Software
problème sur windows 10
Réseaux et Télécom
Administrateur Réseau - Cisco
Réseaux et Télécom
Problème wifi (POE)
Software
Postfix - Need help
Bavardages
Oh râge oh désespoir !
Programmation
Enregistrement client et envoi mail
Software
SÉCURITÉ MACBOOK
Hardware
conseil matos réseau?
Hardware
nVidia Shield Android TV
Actualités
-
Archives
Matériel
Nvidia prévient d'une pénurie de GPU ce trimestre, avec une reprise début 2025
Les Technos
Les Technos #469 : Un jour sans fin
Jeux Vidéos
Test Farming Simulator 25 (PS5) - Des innovations intéressantes mais des performances à revoir
Matériel
Qualcomm souhaite réduire davantage les prix des PC Windows basés sur ARM
Tablettes
Finalement, Google préparerait une nouvelle tablette mais la Pixel Tablet 2 serait abandonnée
Ada
CSS
Cobol
CPP
HTML
Fortran
Java
JavaScript
Pascal
Perl
PHP
Python
SQL
VB
XML
Anon URL
DailyMotion
eBay
Flickr
FLV
Google Video
Google Maps
Metacafe
MP3
SeeqPod
Veoh
Yahoo Video
YouTube
6px
8px
10px
12px
14px
16px
18px
Informaticien.be
- © 2002-2024
Akretio
SPRL - Generated via
Kelare
The Akretio Network:
Akretio
-
Freedelity
-
KelCommerce
-
Votre publicité sur informaticien.be ?