2016-10-16 2 views
3

J'ouvre ces questions depuis que je ne peux pas trouver facile à comprendre résumé des informations sur ce sujet. Il n'y a même pas une bonne vidéo sur youtube qui explique cela. J'étudie actuellement la programmation en temps réel et la programmation statique et dynamique en fait partie. Je n'arrive pas à comprendre.Avantages et inconvénients avec la planification statique et dynamique

S'il y a quelqu'un qui peut expliquer les avantages et les inconvénients de l'ordonnancement statique et dynamique d'une manière éducative, ce serait vraiment utile.

Ce que j'ai à ce jour est la suivante:

  1. ordonnancement statique: est une approche hors ligne où un programme est généré manuellement. Il peut être modifié pendant l'exécution, mais n'est pas suggéré, car il risque de faire manquer les délais aux threads. C'est facile à mettre en œuvre et à analyser. Parce qu'il est facile à analyser, il est facile de voir si le système va respecter toutes ses échéances.

  2. Planification dynamique: Est une approche en ligne où la planification est générée automatiquement. Il peut être modifié pendant l'exécution par le système et il ne devrait pas (dans la plupart des cas) que les threads manquent leurs délais. Si le système change, il est facile de générer un nouvel horaire puisqu'il est généré automatiquement. Il n'y a aucune garantie que le système respecte toutes ses échéances.

Quelqu'un qui peut expliquer ces deux un peu mieux que moi? Ou peut-être ajouter plus d'informations sur ces deux. Peut-être l'illustrer avec une image afin que ce soit plus facile d'envelopper ma tête autour d'elle.

+0

que voulez-vous dire par voie pédagogique ?? –

+0

@SupunWijerathne Haha, merci google translate ... C'est un mot que nous utilisons en Suède. Mais ce que je veux dire, c'est "d'une manière facile à comprendre". –

+0

Je suis vraiment bon en anglais, je me demande juste ce que vous attendiez réellement. :)) –

Répondre

4

En termes simples,

ordonnancement statique est le mécanisme, où nous avons déjà contrôlé l'ordre/manière que les fils/processus exécutent dans notre code (compilation). Si vous avez utilisé n'importe quel contrôle (verrous, sémaphores, jointures, sommeils) sur les threads de votre programme (pour atteindre un certain objectif), vous avez prévu d'utiliser la planification statique (compilation).

La planification dynamique est le mécanisme par lequel la planification des threads est effectuée par les systèmes d'exploitation en fonction de tout scheduling algorithm implémenté au niveau du système d'exploitation. Ainsi, l'ordre d'exécution des threads dépendra complètement de cet algorithme, à moins que nous ayons mis un peu de contrôle dessus (avec une planification statique).

Je pense que le terme «avantages» ne serait pas le meilleur terme ici. Simplement lorsque vous mettez en œuvre un contrôle sur les threads avec votre code pour accomplir une tâche, vous devez vous assurer que vous avez utilisé des contrôles minimaux et de la manière la plus optimisée. :))

Addition:

Comparaison entre statique & ordonnancement dynamique

En général, nous aurions jamais un programme informatique qui complètement dépendra une seule de planification statique ou dynamique.Au lieu de cela, nous aurions quelques programmes qui sont contrôlés à partir du code lui-même (Strongly static). This serait un bon exemple pour cela.

Et certains programmes seraient fortement dynamiques (faiblement statiques). This serait un bon exemple pour cela. Là, vous pourriez voir autre que le début de 2 threads, le reste de l'exécution du programme serait un flyer gratuit.

Veuillez ne pas essayer de trouver un critère d'exclusion qui scellerait un programme soit fortement statique soit fortement dynamique. :))

Positifs & Négatifs

  • ordonnancement dynamique ordonnancement est plus rapide dans l'exécution de l'ordonnancement statique, car il est essentiellement un dépliant gratuit sans aucune attente intentionnelle, etc. rejoint (tout type de synchronisation/protection entre les threads).

  • ordonnancement dynamique estpas au courant de toutes les dépendances de fil (safeness, synchronisation, etc.). Si vous avez suivi les sources mentionnées ci-dessus, vous en auriez probablement l'idée. Donc, en général, le bon programmeur multithread vous dépendra du nombre limité de restrictions, de dépendances, de goulets d'étranglement que vous avez mis en place sur vos threads pour réussir votre tâche. :))

Je pense avoir couvert pas mal de choses. S'il vous plaît, posez-moi des questions s'il y a lieu :))

+0

Bonne explication. Les «avantages» ont peut-être été un mauvais choix de mots, mais est-ce que cela vous dérange d'ajouter une sorte de liste de points positifs/négatifs entre la planification statique et dynamique à votre réponse? :) –

+0

sûr que je vais ajouter une description et laissez-vous savoir, dès que le temps le permet. :)) –

+1

Désolé pour la réponse lente. J'ai travaillé toute la semaine. Mais oui, l'ajout à votre réponse précédente a été d'une grande aide! Merci beaucoup :) –