Changes between Version 4 and Version 5 of MultiCourseTP10_QR


Ignore:
Timestamp:
Jun 10, 2020, 8:33:02 PM (4 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • MultiCourseTP10_QR

    v4 v5  
    1818== Q3) Deux tâches A et B s'exécutent sur un même processeur. La tâche A fait un appel système qui déclenche une opération d'entrée/sortie utilisant le DMA. Avant que la tâche A soit notifiée que l'opération est terminée (par IRQ), elle est chassée du proc et remplacée par la tâche B, qui reçoit cette interruption du DMA. Comment l’OS peut informer la tache A alors qu’elle n’est pas en cours d’exécution ? ==
    1919
    20 L'interruption signalant la fin de l'opération d'entrée/sortie n'est pas destinée à la tâche en cours d'exécution. Elle n'est pas destinée non plus à la tâche qui a demandé l'opération d'entrée/sortie. Elle est destinée au système d'exploitation qui a déclenché l'opération d'entrée/sortie. Celui-ci va ''voler'' quelques centaines de cycles à la tâche en cours d'exécution, qui peut être A ou B, peut importe.
    21 Pendant ces quelques cycles volés, le processeur va exécuter l'ISR DMA, associée à l'interruption DMA, qui va notifier au système d'exploitation la fin du transfert DMA en écrivant la valeur 0 dans la variable _dma_busy, qui n'appartient ni à la tâche A, ni à la tâche B.
    22 La variable _dma_busy appartient au système d'exploitation. Quand la tâche A exécutera l'appel système (bloquant) _ioc_completed(),
    23 elle sera débloquée et pourra continuer son exécution.
     20L'interruption signalant la fin de l'opération d'entrée/sortie n'est pas destinée à la tâche en cours d'exécution. Elle n'est pas destinée non plus à la tâche qui a demandé l'opération d'entrée/sortie. Elle est destinée au système d'exploitation, qui a déclenché l'opération d'entrée/sortie. L'interruption va ''voler'' quelques centaines de cycles à la tâche en cours d'exécution, qui peut être A ou B, peut importe.
     21Pendant ces quelques cycles volés, le processeur va exécuter l'ISR DMA, associée à l'interruption DMA, qui va notifier au système d'exploitation la fin du transfert DMA en écrivant la valeur 0 dans la variable _dma_busy, qui n'appartient ni à la tâche A, ni à la tâche B,
     22mais appartient au système d'exploitation. Quand la tâche A exécutera l'appel système (bloquant) _ioc_completed(), elle sera débloquée et pourra continuer son exécution.
    2423
    25 Remarque: puisque le DMA est une ressource partagée susceptible d'être utilisée par plusieurs tâches, il faut un verrou pour protéger l'accès exclusif au DMA, mis cette prise de verrou est normalement effectuée par l'appel système qui lance l'opération d'entrée/sortie.
     24Remarque: puisque le DMA est une ressource partagée susceptible d'être utilisée par plusieurs tâches, il faut un verrou pour protéger l'accès exclusif au DMA, et cette prise de verrou est normalement effectuée par l'appel système qui lance l'opération d'entrée/sortie.
    2625
    2726== Q4) Dans le GIET, les différentes tâches des applications sont statiquement lancées par le code de boot. Comment les OS généralistes supportent-t-ils le lancement dynamique de nouvelles applications ? ==