Station MinuitExplorer, comprendre, pratiquer

SYSTEMES — Comprendre les systèmesAutomne 2026

Semaine 7 — Ordonnancement et révision

6. CFSet partage pondéré

LECTURE 08 / 154 repèresSynthèse avec omissions acceptées

6. CFSet partage pondéré

6.1 Définir les participants et les poids

CFS vise l’idéal d’un processeur qui fournirait simultanément une fraction de puissance à chaque tâche prête. Avec N poids égaux, chacune reçoit 1/N. Le CPU réel partage son temps; il ne fait pas simultanément tous les calculs sur le même cœur. Des poids différents produisent des proportions différentes : l’équité pondérée n’est pas une égalité permanente des millisecondes.

Il faut aussi dire entre qui on partage. A possède 48 tâches, B seulement 2, toutes au niveau 120. L’égalité par tâche donne 48/50=96 % à A et 2/50=4 % à B. Le scénario du cours propose 50/50 entre utilisateurs, puis un partage de chaque moitié entre leurs tâches. Cette seconde cible suppose des groupes et poids configurés; elle n’est pas une garantie automatique de toute configuration CFS. Extension de groupes du noyau.

Pour les exercices, p=120+nice. La table associe un entier w à chaque nice. Diminuer nice d’un point augmente approximativement le poids d’un facteur 1,25 : w(p−1)≈1,25×w(p). Utiliser les entiers précalculés pour les résultats exacts, pas de nouvelles puissances arrondies. Ainsi nice 0→1024, nice 1→820, et non 880 comme le suggère une mauvaise reconnaissance orale.

Code (text) · sélectionner pour copier

nice -20..-16 : 88761 71755 56483 46273 36291
nice -15..-11 : 29154 23254 18705 14949 11916
nice -10.. -6 :  9548  7620  6100  4904  3906
nice  -5.. -1 :  3121  2501  1991  1586  1277
nice   0..  4 :  1024   820   655   526   423
nice   5..  9 :   335   272   215   172   137
nice  10.. 14 :   110    87    70    56    45
nice  15.. 19 :    36    29    23    18    15

6.2 Fractions et tranches : deux exemples du cours

T_period est la période dans laquelle on souhaite idéalement donner un passage à chacun des threads prêts. Avec les poids w_j de tous les participants du calcul :

Code (text) · sélectionner pour copier

S = somme des poids prêts
f_i = w_i / S
T_slice,i = T_period × f_i

La méthode est conversion du niveau en nice si nécessaire→lecture des poids→somme→fraction→multiplication par la période. Priorité et nice ne remplacent pas w dans la fraction. Contrôler somme(f)=1 et somme(T_slice)=T_period. Les barres illustrent une cible de partage répétée, sans imposer l’ordre réel malgré arrivées, blocages ou granularité.

Trois tâches, période 15 ms :

Tableau 1 — Tâche · Niveau · Nice · Poids · Part CPU · Tranche
Tâche Niveau Nice Poids Part CPU Tranche
PA 120 0 1024 56,202 % 8,4303 ms
PB 123 3 526 28,869 % 4,3304 ms
PC 126 6 272 14,929 % 2,2393 ms

S=1822; par exemple PA obtient 15 ×1024/1822. Les trois tranches donnent 15 ms. La diapositive affiche 4,34 pour PB, mais ses propres données donnent 4,33 ms à deux décimales; 8,43+4,33+2,24=15,00.

Deux tâches, même période : PA au 120 a 1024, PB au 125(nice 5) a 335. S=1359 : T_A=15×1024/1359=11,3024ms, T_B=15×335/1359=3,6976ms. Leur somme vaut 15 ms, soit 15000000 ns. PB moins servi reste une tâche ordinaire; ce calcul n’en fait pas une classe temps réel.

6.3 Application du laboratoire : niveaux 119/123/127

Les nice sont −1/3/7 et les poids 1277/526/215. S=2018. Les parts sont respectivement 63,2805 %, 26,0654 %, 10,6541 %, soit 63,28/26,07/10,65 aux arrondis du corrigé. Le plus petit indice reçoit ici le plus grand poids et la plus grande part. Une période non donnée n’a pas à être inventée.

Le lab 6 retrouve les poids dans la table puis divise par leur somme; l’ASR déforme les nombres mais le document les établit. Une question étudiante demande si CFS est à l’intra. L’animateur se dit incertain et propose le forum; il ne fournit pas une nouvelle confirmation de périmètre. Le cours 12 a explicitement limité l’intra ordinaire à la partie 1, distinction conservée en §11.1. CFS reste au programme du cours et utile pour comprendre le TP2.

Même CPU, deux critères de partagePour 48 tâches de A et 2 de B : une part par tâche donne 96 % et 4 %. Des groupes de même poids peuvent viser 50 % chacun, puis répartir leur moitié; ce regroupement doit être configuré.Par tâche : A = 48/50 = 96 %; B = 2/50 = 4 %Par groupes de même poids : A = 50 %; B = 50 %À l’intérieur : chaque tâche reçoit sa part du groupe
Même CPU, deux critères de partage

Pour 48 tâches de A et 2 de B : une part par tâche donne 96 % et 4 %. Des groupes de même poids peuvent viser 50 % chacun, puis répartir leur moitié; ce regroupement doit être configuré.

Source : Ajout pédagogique du portail depuis le maître S07 du cours; aucune source brute diffusée. · 6. CFSet

Retour au sommaire de l’unitéHaut de page
Récupérer manuellement les données locales

Copier séparément les données ci-dessous dans des fichiers texte avant de fermer la page ou de modifier le stockage. Une valeur illisible ou incompatible reste en place. Aucun effacement ni rétablissement écrasant n’est effectué automatiquement. L’export/import JSON est disponible sur la page Progression du thème. Cette récupération séparée reste utile pour une valeur brute ou un conflit.

Clé de ce cours : . Format v1 porté par cette clé; dates UTC et identifiants durables.

Si l’accès est refusé, la valeur persistée peut rester inaccessible. Réautoriser le stockage dans le navigateur puis rouvrir ce cours permet de la relire. Une réinitialisation exige une décision explicite après récupération; aucune commande de suppression n’est proposée ici. Les données restent sur cette origine et cet appareil, sans transfert automatique.