​ ​ ​ ​ Programmation multitâche
Results 1 to 7 of 7

Thread: Programmation multitâche

  1. #1
    Senior Member
    Join Date
    Feb 2012
    Location
    Anjou
    Posts
    359

    Default Programmation multitâche

    Bonjour,

    Jusqu'à présent, les élèves de notre collège, programmaient en monotâche.

    Nous disposons d'une carte "maison" équipée d'un 20M et de boîtiers Autoprog de la socièté A4, équipés de 28X1.

    Un collègue nous a vanté les facilités offertes par le multitâche. C'est aussi le cas d'un document, trouvé sur le Web.

    Pour cela, il nous faudrait passer du 20M au 20M2, bénéficiant, par ailleurs, d'autres améliorations (taille accrue de l'espace programme, ...).

    Quant au 28X1, hélas... Le 28X2 n'offre pas non plus cette possibilité, hormis la possibilité de stocker plusieurs programmes (slots).
    Faudrait-il se résoudre à adapter un 20M2 et accepter de perdre des entrées-sorties?

    D'abord, pour les collègues ayant expérimenté le multitâche avec leurs élèves, apporte-t-il la facilité énoncée?
    Nous utilisons désormais Blockly.

  2. #2
    Senior Member
    Join Date
    Jul 2010
    Location
    paris
    Posts
    1,450

    Default

    Quote Originally Posted by Technoman View Post
    D'abord, pour les collègues ayant expérimenté le multitâche avec leurs élèves, apporte-t-il la facilité énoncée?
    Nous utilisons désormais Blockly.
    Le multitâche apporte en effet une grande facilité. Les programmes doivent cependant rester "simples". Il n'est possible que sur la série M2

    On peut faire des programmes entièrement indépendants, mais aussi avec des variables communes, les modifications de variables dans un programme sont reprisent "instantanément" dans l'autre, sans faire appel à des gosub, d'où la simplicité

    On ne gère pas le passage d'un programme à un autre, ce qui peut être un problème pour une programmation complexe.
    Les pauses dans un programme n'affectent pas l'exécution des autres, mais une commande bloquante (serin, etc) bloque tout
    On perd aussi la maitrise de la vitesse, setfreq est rejeté.

    J'ai pas essayé de faire la même chose sans multitâches:

    Code:
    #picaxe 20M2
    #no_data
    	start0:
    		do
    			toggle B.7
    			pause 200
    		loop
    	start1:
    		do
    			toggle B.6
    			pause 300
    		loop
    	start2:
    		do
    			toggle B.5
    			pause 500
    		loop
    	start3:
    		do
    			toggle B.4
    			pause 700
    		loop
    Mais le plus simple pour juger est d'expérimenter.



    MM
    Last edited by MGU; 13-09-2017 at 20:04.

  3. #3
    Senior Member
    Join Date
    Sep 2011
    Location
    Montpellier (FRANCE)
    Posts
    2,674

    Default

    A mon humble avis l'implémentation limitée du multitâche sur les Picaxes M2 permet de faire des démos intéressantes et d'expliquer le principe.
    Par contre, dès qu'il s'agit d'applications concrètes, on se heurte aux limitations indiquées et le multitâche n'a d'intérêt que dans certains cas très particuliers. A noter qu'un programme conçu en multitâche (voir exemple de MGU) permet de gérer très simplement des séquencements indépendants. Quand on se heurte aux problèmes d'incompatibilité évoqués plus hauts, il est alors possible de basculer en multitâche collaboratif pour s'en affranchir sans trop changer la structure du programme. En parallèle, l'augmentation de fréquence rendu possible par l'abandon du mode multitâche compense largement l'overhead. (mais évidement, pas en Blocky...)

    D'un point de vue pédagogique, il peut être intéressant d'expliquer les différents modes de fonctionnement et les techniques de programmation associées :
    - algorithmes linéaires,
    - multitâche collaboratif (à l'origine des MacIntosh...), states machines,...
    - véritable multitâche, RTOS,...

    Certains esprits sont très à l'aise avec un fonctionnement non séquentiel ; d'autres ne s'y retrouveront pas... Des jeux de rôle peuvent aider...

    De même, il n'est peut-être pas inutile d'expliquer ce que cachent les différents environnements de développement :
    - assembleurs,
    - compilateurs,
    - pseudo-compilateurs,
    - interpréteurs,...
    avec évidement les avantages et inconvénients de chaque approche ainsi que leurs implémentations commerciales ou libres : Picaxe, Arduino, Raspberry,...
    There are 10 types of people in the world: those who understand binary, and those who don't.

  4. #4
    Senior Member
    Join Date
    Sep 2011
    Location
    Montpellier (FRANCE)
    Posts
    2,674

    Default Jeu de rôle pour expliquer le multitâche.

    L'instruction TOGLE peut être simulée au moyen d'un bristol, coloré sur une face, noir sur l'autre.
    Retourner le bristol sur la table est l'équivalent de l'allumage extinction d'une led.
    On peut bien sur également opter pour une solution "électrique" avec pile, inter et véritable LED, mais ça me semble "riche".

    1)4 élèves avec chacun un bristol de 4 couleurs différentes (disons Rouge, Vert, Bleu et Jaune).
    Une consigne pour chaque élève : retourner le bristol toutes les respectivement 2, 3, 5 ou 7s suivant la couleur.

    Pas besoin d'être précis : le simple fait de compter mentalement et doucement jusqu'à la valeur indiquée est suffisant.


    2) Un seul élève avec les 4 bristols et les 4 consignes...
    Si personne ne trouve de solution fiable, je propose la méthode suivante :
    Partir d'un état avec les 4 cartes retournées
    Faire la liste des actions à réaliser chaque seconde.
    Au bout de combien de temps revient-on à l'état de départ ?
    Voir prof de math : PPCM
    En l'occurence, les 4 nombres sont premier donc 2*3*5*7=210 s
    Après ça, on peut reprendre la liste au début.

    A titre d'exemple, voici les consignes pour la première minute :

    Code:
    0	RVBJ
    2	R
    3	V
    4	R
    5	J
    6	RV
    7	B
    8	R
    9	V
    10	RJ
    12	RV
    14	RB
    15	VJ
    16	R
    18	RV
    20	RJ
    21	VB
    22	R
    24	RV
    25	J
    26	R
    27	V
    28	RB
    30	VRJ
    32	R
    33	V
    34	R
    35	BJ
    36	RV
    38	R
    39	V
    40	RJ
    42	RVB
    44	R
    45	VJ
    46	R
    48	RV
    49	B
    50	RJ
    51	V
    52	R
    54	RV
    55	J
    56	RB
    57	V
    58	R
    60	RVJ
    Application : écrire le programme Picaxe dans les 2 cas...
    Pour le cas N°1, la solution est fournie en #2
    Indication pour le cas N°2 : penser au modulo...
    Last edited by BESQUEUT; 14-09-2017 at 21:55.
    There are 10 types of people in the world: those who understand binary, and those who don't.

  5. #5
    Senior Member
    Join Date
    Feb 2012
    Location
    Anjou
    Posts
    359

    Default

    Bonsoir,

    Merci à vous deux pour votre contribution.

    ... mais une commande bloquante (serin, etc) bloque tout
    A part serin, irin? rfin?

    ... gérer très simplement des séquencements indépendants.
    C'est aussi là où je verrais un avantage.

    ... d'expliquer les différents modes de fonctionnement
    Au niveau collège, même 3ème, sans doute pas à la majorité.

    ...basculer en multitâche collaboratif
    Si je me souviens bien, chaque tâche passe à la main à la suivante (ex Windows 3.1). La durée de chacune est donc très variable.

    ... states machines,...
    C'est un mode de programmation fort intéressant. J'imagine un onglet supplémentaire dans PE6 pour décrire graphiquement la machine à états, puis générer le code. Cela serait un plus pour la famille Picaxe. Il me semble avoir déjà suggéré cela.

    L'idée du jeu de rôle est à retenir, en simulant éventuellement les modes coopératif et préemptif.

  6. #6
    Senior Member
    Join Date
    Sep 2011
    Location
    Montpellier (FRANCE)
    Posts
    2,674

    Default

    Quote Originally Posted by Technoman View Post
    serin
    On peut en théorie contourner le problème avec le "background receive" et idem pour I2C. Dans la réalité, il y a également pas mal d'incompatibilités (voir annexe 4 du tome 2). les programmes de démo ne font rien de "time critical" dans la boucle principale, et se resument à do : pause:loop
    A part pour la démo, ça ne sert pas à grand chose...
    Quote Originally Posted by Technoman View Post
    Si je me souviens bien, chaque tâche passe à la main à la suivante (ex Windows 3.1). La durée de chacune est donc très variable.
    Lisa, puis les MacIntosh implémentaient une idée légèrement différente, mais également utilisable sur un mono-processeur :
    - une tâche "maitre" dite "boucle principale" tourne en permanence le plus vite possible,
    - elle donne la main succesivement aux différentes tâches qui sont censées rendre la main le plus vite possible. Si une tâche a besoin de temps, elle est censée couper son travail en tranches et attendre qu'on lui redonne la main pour continuer. C'est en ce sens qu'elles sont dites "collaboratives".
    - la boucle principale incrémente un 'tick count" (ou une autre forme de chronomètre) qui lui permet de donner la main à certaines tâches à intervalles ou a dates planifiées

    La philosophie des MacIntosh était "la machine au service de l'utilisateur" (bien évidement en réaction aux programmes de l'époque qui proposaient des choix succesifs auxquels les utilisateurs devaient se soumettre.

    Les MacIntosh devaient être en mesure de réagir à différentes sollicitations (clavier, souris, click dans une fenêtre ou dans un menu, ...) à la bonne volonté de l'utilisateur. La boucle principale donnait donc la main succesivement aux différents modules chargés de lire et de traiter ces "inputs", le tout devant tourner suffisement vite pour que ça paraisse simultané.

    Dans un système préemptif, l'OS limite automatiquement le temps de traitement de châque tâche, ce qui suppose des instructions spécifiques au sein du processeur.
    Last edited by BESQUEUT; 14-09-2017 at 22:05.
    There are 10 types of people in the world: those who understand binary, and those who don't.

  7. #7
    Senior Member
    Join Date
    Jan 2010
    Location
    34 France
    Posts
    3,832

    Default

    Le gros problème du mode collaboratif avec le picaxe M2 est que l'unité de temps utilisable est la seconde... si on ne veux pas utiliser les registres SFR.
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème . (Les Shadoks)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •