Preemption

Publié le par lamain

    Je suis en train de réaliser un projet pour mon école. Ça fait partie du programme. Enfin réaliser, c'est un bien grand mot, vous allez comprendre...

 

    Le titre : « calcul du coût d'ordonnancement dans l'OS rtai ». Aille, j'en vois déjà qui dirigent leur souris vers le lien hypertexte le plus proche. Nan, ne cliquez pas! Je vais vous aider à comprendre de quoi il retourne. Je vous rassure, moi aussi le titre m'a fait peur... Ah, vous n'êtes pas rassurés? tant pis, on fera avec.

 

    Commençons par une rapide analyse du titre : « calcul du coût d'ordonnancement dans l'OS rtai » (éloignez cette souris de votre menu favoris! Je tiens vos disques-durs en otages!).

 

    D'abord, qu'est-ce qu'un ordonnancement? C'est simplement l'ordre dans lequel votre processeur exécute les différentes taches qu'il se voit confiées, en essayant de réduire de satisfaire un maximum de monde en un minimum de temps, si possible sans oublier personne. (Quand je parle de monde et de personne ici, je parle de programmes. J'ai tendance à personnifier ces bestioles-là, ça rend les choses beaucoup plus drôles... Je vous raconterai un jour les histoire de fork et de kill chez les processus, c'est terrible!) Bon, en théorie un ordonnancement ne s'applique pas forcément à un microprocesseur, mais en pratique c'est de ce cadre que je m'en préoccupe, donc je m'en tiendrai à ça. (et pas à ça, bande de pervers!)

 

    Je vais donc étudier son coût, mais qu'est à dire? Ça n'a rien à voir avec des euros, des dollars ou des nuyens. Pour un processeur, la seule ressource importante en dehors de ses propres capacités, c'est le temps. (On pourrait se préoccuper du coût en mémoire aussi à vrai dire, mais cela n'a pas un impact direct sur l'ordonnancement.) Je vais donc calculer le temps dont a besoin le processeur pour faire l'ordonnancement des taches. C'était pas si compliqué finalement, si?

  

    Sauf que, en réalité, mon projet ne concerne que la partie du travail d'ordonnancement que l'on nomme préemption. Ah zut, encore un mot barbare! La préemption? Et quoi encore? La réponse impulsionnelle à une convolution discrète? (scrète!) Non, quand même pas. Et puis ça n'a rien à voir. Ne jetez pas des invocations ésotériques au hasard comme ça, vous allez vous porter malheur!!

    Bon, je vous explique : La préemption, c'est quand une tache prioritaire prend la place d'une autre tache qui était en train de s'exécuter. Vous comprenez? Prenons un exemple, ce sera plus clair.

 

    Mise en situation : Vous êtes tranquillement en train de jouer à Final Fantasy 12. Soudain, votre mère vous demande de déplacer votre voiture parce qu'elle gène et qu'elle ne peut donc pas sortir la sienne. Vous mettez donc votre jeu en pause pour exécuter la tache prioritaire de déplacer votre voiture : Votre loisir vient d'être préempté! Bien sûr, une fois cette tâche accomplie, vous pourrez reprendre sereinement votre partie où vous l'aviez quittée. Ben pour le processeur, c'est pareil, des fois, il faut qu'il exécute des taches importantes et doit mettre en pose son activité du moment.

 

    Ben oui, parce que le processeur, c'est un mec, il peut pas faire plusieurs choses à la fois. oui je sais, même pour une fille, il serait difficile de jouer à FF12 et de déplacer la voiture en même temps, mais en remplaçant ce jeu par un autre sur une console portable, elle y arriverait probablement. Et de toutes façons, le processeur ne bouge pas. Enfin pas de lui-même la plupart du temps.

 

    Bref, résumons : je dois, à la fin de mon « projet », être capable de prédire le temps nécessaire pour mettre FF12 en pause et mettre mes chaussures... Ha mais non, vous n'avez rien suivi ! C'est le temps de préemption du processeur que je dois calculer, pas le mien! Bon, très bien...

 

    Mais il reste encore plein de mots barbares dans le titre! Certes, il en reste deux. Poursuivons donc avec l'OS. Quoi c'est ça un OS ? Ça boit du lait ? Non, ça ne boit pas de lait. Ça se ronge ? Non plus, et il n'y a pas de moelle dedans. L'OS est un acronyme anglais qui signifie Operating System. Wouahh, ça a plus de gueule comme ça... mais on comprend pas mieux ce que c'est... En français, on traduit par système d'exploitation, ça vous parle plus? Non? souvenez vous de quoi on parle : d'ordonnancement sur un processeur. Autrement dit, de la façon d'exploiter au mieux le processeur. Voilà, je sens une lumière de compréhension dans votre regard... à moins que ce ne soit que le reflet de la lampe de chevet...

    Et bien c'est simple : un système d'exploitation, ou OS, est ce qui permet à votre ordinateur d'exploiter tout le matériel dont il est composé et dont il dispose, aussi bien le microprocesseur que la mémoire ram, le ou les disques-durs, la carte réseau, le lecteur-graveur dvd et touti quanti. Les principaux OS existant sur le marché étant aujourd'hui windows, linux et BSD. (Que les geeks en phase terminale m'excusent de la probable inexactitude de cette affirmation.) Et Mac? Et bien c'est une version modifié de BSD. Mais on est pas là pour parler de la vie des OS. De quoi je parlais déjà? ah oui...

 

    L'OS RTAI... Vous savez maintenant ce qu'est un OS, mais vous n'avez jamais entendu parler de RTAI. C'est parfaitement normal, étant donné que cet OS a un domaine d'application assez particulier. Pour tout vous dire, je n'ai fait connaissance avec RTAI qu'au trimestre dernier. (Oui, ça a été un dur trimestre, mais pas que à cause de ça.) RTAI est un système d'exploitation temps réel qui fonctionne en complément de linux. Temps réel signifiant que RTAI permet de garantir que les taches exécutées seront finies à une date précise, à condition que ce soit humainement, pardon je veux dire « matériellement » possible. Un OS classique ne se soucie pas de ce genre de choses. Les tâches s'exécutent et se termineront quand elle seront terminées, les programmeurs n'ont pas de contrôle sur ce genre de choses. Dans un système temps réel en revanche, l'OS est forcé de se plier aux exigences du programmeur, pourvu que celui ci n'ait pas la mauvaise idée de vouloir faire exécuter une tache plus rapidement que le processeur ne le peut.

 

    Il reste des lecteurs? C'est assez inespéré je dois dire... J'aurais bien voulu vous parler d'un projet plus intéressant comme par exemple, la construction d'un prototype de robot de la mort qui serait un premier pas vers ma conquête du monde et la dictature technocratique mondiale, mais que voulez-vous, j'ai pas eu le droit au chapitre dans cette histoire.

 

    Donc pour résumer : je dois calculer le temps nécessaire à un système d'exploitation particulier nommé RTAI pour mettre une tâche en pause et pour la reprendre le moment venu. Passionnant, non? Et question réalisation, c'est plutôt maigre. Dans le meilleur des cas, un patch qui pourrait bénéficier à la communauté RTAI. J'avoue avoir du mal à imaginer ce que pourrait contenir ce patch... Pas de la nicotine en tout cas, et pas plus de caféine.

 

    Elle est bien loin la conquête du monde....

 

undefined
Pour être informé des derniers articles, inscrivez vous :
Commenter cet article
N
diantre, même les com se spécialisent ^^ ne peut on donc rien piger tranquille sur cette planète ?
Répondre
D
Linux est vraiment le moindre de mes soucis ^^ (j'aime plutôt en fait... :p)<br /> <br /> watch et ftime donc, je vais regarder ça...
Répondre
S
C'est ardu, Linux je déteste.Sinon pour l'article c'est bien, cohérents avec de bon exemples, toujours une touche d'humours pour ne pas ennuyer le lecteurs ^^.<br /> Peut être que tu devrais utiliser la commande "watch"<br /> Puis "ftime"pour avoir des informations sur le temps et les capacités du processeurs.En tous cas bonne chance.
Répondre
M
bon, 1er com sur ce blog, vu que c'est la 1ere "news" dont je suis témoin ... (bon en fait c'est surtout que pour le reste j'ai tout lu d'un coup donc j'ai eu la flemme de laisser des com à chaque fois ^^" ...don't kill me )Donc, le com en question : instructif XD et bon courage (ou bonne motivation ?)
Répondre