PROFDINFO.COM

Votre enseignant d'informatique en ligne

Laboratoire - L'ordonnanceur temps réel

La course au milliard

Un exercice sur les threads a été présenté lors du cours théorique sur l'ordonnanceur temps réel. Nous avons trouvé la solution à cet exercice de façon analytique. Implantez dans QNX un programme qui permettra de valider notre solution de façon empirique. Pour ce faire, vous devez utiliser les fonctions pthread_getschedparam, pthread_setschedparam, pthread_create, pthread_join et pthread_exit.

Le démarrage de processus

Il existe plusieurs façons différentes de démarrer un processus sous QNX.  À l’aide d’expérimentations et de l’aide en ligne de QNX, remplissez le tableau suivant:

 

Fonction
Valeur de retour
Paramètres
Création d'un processus distant (vrai ou faux)
Création d’un nouveau processus (vrai ou faux)
Partage du code source (vrai ou faux)
Copie des données (vrai ou faux)
fork
   
spawn*
   
exec*
             

Le bonheur d'être parent

Concevez un programme qui lance un processus enfant à l'aide de la fonction fork puis qui affiche les nombres de 51 à 100. Le processus enfant pour sa part doit afficher les nombre de 1 à 50. À l'aide d'expérimentations sur votre programme, répondez aux cinq questions suivantes:

  1. Si les deux processus utilisent la même variable locale déclarée au tout début du programme principal est-ce que cela perturbe le bon fonctionnement des processus? Justifiez votre réponse.
  2. Quels seront la priorité et l'algorithme d'ordonnancement du processus enfant? Validez votre réponse en utilisant les fonctions pthread_setschedparam et pthread_getschedparam.
  3. Si le processus parent termine son exécution avant le processus enfant, est-ce que cela affecte l'exécution du processus enfant?
  4. Quelle modification devez-vous apportez à votre programme afin que les nombres de 1 à 100 s'affichent en ordre croissant?
  5. Proposez une façon d'échanger des informations entre le processus enfant et le processus parent.