120
  Support de Cours Taha BEN SALAH Ecole Nationale d'ingénieurs de Sousse  2ème Informatique  2ème Informatique Version 0.7.110403 Version 0.7.110403

Tbensalah Itr Extra

Embed Size (px)

Citation preview

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 1/120

 

 

Support de CoursTaha BEN SALAH

Ecole Nationale d'ingénieurs de Sousse

 2ème Informatique 2ème Informatique

Version 0.7.110403Version 0.7.110403

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 2/120

 

 

Taha BEN SALAH (2011) v0.7 - ENISO

Plan

PARTIE I. Outils théoriques, architecture avancée des systèmesd'exploitation

1. Rappel sur l'architecture d'un système d'exploitation

2. Gestion des taches et Ordonnancement

3. Gestion des interruptions

PARTIE II. Systèmes temps réels

6 . Défintions

7 . Caratérisations et performances

8 . Ordonnancmeent Temps réel

9 . Systèmes d’exploitation temps réel

PARTIE III. Cas d'étude : Linux Temps réel 

10 . Mise en place

11 . API temps réel

2

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 3/120

 

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 4/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Définition

● Système temps réel : un système informatiquequi doit réagir à son environnement extérieur àl'intérieur d'un certain nombre de contraintes

temporelles

4

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 5/120

 

Taha BEN SALAH (2008) v1.0 - ENISO

Applications temps réelles

● Un système temps réel doit permettrel'exécution temps réelles

● Les contraintes temps réelles ne peuvent être

garanties par l'application elle même carl'application n'a pas un accès exclusif auxressources

● Les contraintes temps réelles doivent êtregaranties par le système (d'exploitation) tempsréel

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 6/120

 

Taha BEN SALAH (2008) v1.0 - ENISO

Applications temps réelles

● Un système temps réel permet l'exécutiond'une application temps réelle ou non tempsréelle

Une application temps réelle ne peut s'exécuterque sur un système temps réel

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 7/120

 

Taha BEN SALAH (2008) v1.0 - ENISO

Contraintes temporelles

● Les contraintes temporelles impose uneréponse du système avant un certain délai

● Il est difficile de respecter ce délai pour les

raisons suivantes● Non déterminisme

● Ordonnancement des taches

Synchronisation entre taches● Interruptions

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 8/120

 

Taha BEN SALAH (2008) v1.0 - ENISO

Non déterminisme

● Difficile de savoir quelle est la durée minimaled'exécution de la tache pour savoir si celavérifie les contraintes : à la charge du

développeur de définir un délai raisonnable● Un boucle dont le nombre d'itérations est

dynamique permet de montrer la difficulté deprédire le temps d'exécution (en négligeant les

I/O)

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 9/120

 

Taha BEN SALAH (2008) v1.0 - ENISO

Ordonnancement des taches

● L'ordonnancement est d'autant plus difficile car ladurée de la tache n'est « jamais » minimalepuisqu'il faut en parallèle exécuter d'autres taches

Il faut● éviter la famine

● garantir les contraintes de priorité

● garantir les contraintes temporelles

● Les contraintes temporelles doivent être garantiespar le système

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 10/120

 

Taha BEN SALAH (2008) v1.0 - ENISO

Synchronisation des taches

● S'il y a synchronisation entre certaines taches

● donc certaines ressources sont partagées

● les ressources sont dites critiques car ne peuvent être utiliséesen même temps par plusieurs taches

● alors le temps d'exécution d'une tache dépend aussi decelle des autres taches dont elle dépend

● ==> la prédiction du temps d'exécution devient « impossible »

● Les contraintes temporelles doivent être bien étudiées par

le développeur qui doit prendre en considération lesressources partagées

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 11/120

 

Taha BEN SALAH (2008) v1.0 - ENISO

Les interruptions

● Toute tache en cours d'exécution peut êtreinterrompue momentanément pour des raisonspropres au système.

Les interruptions rendent difficile la garantiedes contraintes temporelles

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 12/120

 

Taha BEN SALAH (2008) v1.0 - ENISO

Système temps réel

● Pour concevoir un système temps réel il estimportant de connaitre l'architecture dessystèmes d'exploitation

Pour rendre un OS temps réel, il faut agir surdeux aspects

– Gestion des taches

– Gestion des interruptions

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 13/120

 

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 14/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Architecture matérielle

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 15/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Système d'exploitation

● Le système d’exploitation est l’ensemble desprogrammes qui se chargent de résoudre lesproblèmes relatifs à l’exploitation de l’ordinateur engarantissant

● Une gestion efficace, fiable et économique desressources physiques de l’ordinateur (notamment lesressources critiques tels que processeur, mémoire…)

● Présenter une machine virtuelle permettant l’interaction

avec les utilisateurs en leur présentant une machineplus simple à exploiter que la machine réelle

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 16/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Système d'exploitation

● Un système d'exploitation est le garant de

● La gestion des ressources

– Ressources logicielles●

mémoire virtuelle, processus, fichiers...– Ressources matérielles

● Mémoire centrale,disque, processeur, imprimantes,

● La transparence (par rapport à l'accès auxressource)

– Toute utilisation d'une ressource DOIT passer par lesystème d'exploitation

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 17/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Organisation d'un OS

● Le système d'exploitation est constitué de

● Un noyau

● Des extensions du systèmes (dits modules)

● Des applications utilitaires– Utilitaires de développement : outils de chargement, de

débuggage, éventuellement de compilation

– Utilitaires End User (utilisation finale) : éditeur de texte …

– Utilitaires de suivi et optimisations (monitoring)

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 18/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Le Noyau

● Le noyau est la partie d'un systèmed'exploitation qui est commune et nécessaire àtous les autres programme.

C'est la partie du système d'exploitation qui estchargée mais jamais déchargée.

● Elle est responsable de charger le reste despartie du système d'exploitation

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 19/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Le Noyau

● Le noyau est responsable de

● Gestion de la mémoire

– Mémoire centrale

– Mémoire virtuelle● Gestion des fichiers

● Gestion de taches

– Gestion des processus

– Gestion des threads

● Gestion des périphériques (Entrées/Sorties)

– Gestion des interruptions

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 20/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

OS ou Noyau

● On parlera souvent d'un OS en ciblant le noyauet vise versa car le noyau est la partie la plusimportante d'un OS

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 21/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Noyau : Caractéristiques fondamentales

● Mono- tâche (DOS)

● A tout instant, un seul programme est exécuté; un autre programme ne démarrera,sauf conditions exceptionnelles, que lorsque le premier sera terminé.

● Multi- tâches (Windows, Unix, Linux , VMS)

● Plusieurs processus (i. e. un «programme» en cours d’exécution) peuvent

s’exécuter simultanément (systèmes multi- processeurs) ou en quasi- parallélisme(systèmes à temps partagé)

● mono- session (Windows 98,2000)

● Au plus un utilisateur à la fois sur une machine. Les systèmes réseaux permettentde différencier plusieurs utilisateurs, mais chacun d’eux utilise de manière exclusivela machine (multi- utilisateurs, mono- session)

● multi- sessions (Windows XP, Unix, Linux, VMS)● Plusieurs utilisateurs peuvent travailler simultanément sur la même machine.

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 22/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

●Autre classifications

● Architecture du noyau

● l'interaction avec les utilisateurs

● Interaction avec d'autres machines (réseau)

● Mobilité

 

hi d

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 23/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

●Architecture du noyau

● Monolithique● Un seul bloc définit à la compilation

● Modulaire

Certaines parties du système (par exemple la gestion d'unsystème de fichier particulier comme NTFS ou FAT) sontchargées dynamiquement. Le système est conçu donc enterme de modules chargés par une partie structurante del'OS qui garantit un socle unifié

Micro Noyau● Seule une petite partie du noyau est définie à la compilation.

Tous les gestionnaires et parties de l'OS sont chargés par ce« micro kernel Loader »

 

l'i i l ili

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 24/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

l'interaction avec les utilisateurs

● Système très Interactif● Noyau de type « desktop » : les applications

« graphiques » sont en quelque sorte prioritairespour avoir un temps de réponse humainementacceptable

● Système peu interactif

● Noyau de type « server » : les application en taches

de fond sont prioritaires● Noyau de type « temps réel » interactif : la priorité

est calculée en terme de contraintes temporelles

 

l'i t ti l tili t

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 25/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

l'interaction avec les utilisateurs

● Système non interactif● Sans contraintes temporelles : système embarqué

● Avec contraintes temporelles

– Système temps réel industriel

 

I t ti d' t hi

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 26/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Interaction avec d'autres machines

● Accès nommé au réseau● Système réseau : toute application doit connaitre la

machine avec qui elle pourra communiquer

Accès transparent par rapport au réseau● Système distribué : toute application voit toutes les

machines comme si c'était une seule machine

 

M bilité

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 27/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Mobilité

● Système sédentaire● Pas de mobilité

● Système nomade

Mobilité réduite, pas d'utilisation pendant la mobilité(Laptop)

● Gestion de plusieurs configurations (réseau)

● Système mobile

● Utilisation pendant la mobilité

● Matériel plus sophistiqué, moins performant, plusexotique (propriétaire) : Win CE, Androide, IOS, ...

 

M d / M d tili t

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 28/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Mode noyau / Mode utilisateur

● La transparence est instaurée en s'assurantque tout programme doit passer parle systèmed'exploitation Ceci st réalisé en définissantdeux modes d'exécution

● Mode utilisateur

● Mode noyau

 

Mode noyau / Mode utilisateur

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 29/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Appli

Périph / DevicePériph / Device

Espace Noyau

Espace User

Mode noyau / Mode utilisateur

Module noyau Interrup Logicielle Handler : Trappes (routine)

Processeur

Appli

 e x  é   c  u t     i      o n

Interruption Matérielle Handler

              N          o             t               i              f               i          c

          a             t               i          o

           n             d

          e               l              '          a

           p              p                  l               i

Lance l'exécut ion d'une appli

 

Mode utilisateur

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 30/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Mode utilisateur

● C'est le mode dans lequel tout programme (sauf lenoyau) s'exécute

● Dans le mode utilisateur, plusieurs privilèges nesont pas accordés au programme. Il n'est donc paspossible de

● Lancer certaines instructions processeur

– halt du processeur, désactivation des interruption …

Accéder en lecture et/ou écriture à certaines zonesmémoire critiques

– Zones tampon (buffer) des périphériques

– Zones noyau (dans laquelle le noyau est chargé)

 

Mode noyau

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 31/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Mode noyau

● C'est le mode dans lequel le noyau s'exécuteavec tous les privilèges

● Dans ce mode le noyau peut

Accéder à toutes les zones mémoire● Exécuter toutes les instrcutions

 

Passage d'un mode à un autre

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 32/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Passage d un mode à un autre

● User Mode → Kernel Mode● Faute/Exception (interruption matérielle liée au

processeur)

– Erreur dans l'UAL qui engendre une exception

– Défaut de page

– Opérateur (instruction) invalide

– Opérandes (param d'une instruction) invalide

● Interruption matérielle (Entrée/Sortie)

– Provenant d'un périphérique

● Trappe/Routine Système (interruption logicielle)

– Appel Système

 

Passage d'un mode à un autre

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 33/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Passage d un mode à un autre

● User Mode → Kernel Mode● Dans le cas d'un appel système (interruption

logicielle)

– Dépend de l'architecture matérielle

– Résulte en la modification d'un drapeau (flag) dans unrégistre particulier définit par deux bits (appelé ringmode)

● 00 (donc 0) : mode noyau●

11 (donc 3 binaire) : mode utilisateur● Les deux autres modes sont souvent non utilisés (linux et

 windows)

 

Ring Mode

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 34/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Ring Mode

(ring 3) mode utilisateurs (applications)

(ring 2) pilote périphérique (non utilisé)

(ring 1) pilote périphérique (non utilisé)

(ring 0) mode noyau

 

Passage d'un mode à un autre

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 35/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Passage d un mode à un autre

● Dans le cas d'un appel système (interruptionlogicielle)

– Intel X86 (avant INTEL Pentium Pro+)● Aucun mécanisme fourni● Il faut simuler une exception (fault) en remplissant certain

régistres● Ex : dans le cas de MS DOS, utiliser l'interruption I21 qui fait ce

traitement● Pour retourner au user mode : instruction « IRET »

– Intel X86 (INTEL Pentium Pro+ et plus)● Instructions :

– SYSENTER (User Mode → Kernel Model)– SYSEXIT (Kernel Model → User Mode)

 

Passage d'un mode à un autre

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 36/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Passage d un mode à un autre

● Dans le cas d'un appel système (interruptionlogicielle)

– AMD K6-2+● Instructions :

– SYSCALL (User Mode → Kernel Model)– SYSRET (Kernel Model → User Mode)

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 37/120

 

 

Définitions

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 38/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Définitions

● Une tache est la représentation mémoire d'untraitement en cours d'exécution

● On distingue souvent les processus et les

thread● Un système multi-taches permet l'exécution

simultanées de processus

 

Processus

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 39/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Processus

Un processus est une unité d’exécution (la plus petiteentité que dont on peut lancer l'exécution par un user)qui représente un programme en cours d'exécution

● Un processus est défini par une zone mémoire qui lui

est propre qui contient● Les métadonnées sur le process (segment U)

● Les variable globale/statiques initialisées (segment Data)

● Les variable globale/statiques non initialisées (segment BSS)

● Le code à exécuter (segment text)

● La pile (LIFO): contient les variables locales des « Frames »

● Le tas: contient le résultat des « malloc »

 

Processus

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 40/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Processus

● Deux processus ne partagent pas de mémoire et utilisent des mécanismes de IPC (inter process communication)pour dialoguer.

● Un process est décrit dans le segment U par (cas unix):

● PID :nombre identifiant un processus. Utilisé pour l'administration du processus par le noyau.

● lors de la commande fork il y a attribution d'un PID

● lors de la commande exec on garde le même PID.

● PPID :identité du processus père (créateur).

● UID, EUID, SUID : identifiant(s) du (des) propriétaire(s).

● UID : UID réel (UID du créateur c'est à dire du processus père).

● EUID :UID effectif.

● SUID :UID sauvegarde.

● GID, EGID, SGID : identifiant(s) du groupe.

● GID : GID réel (GID du créateur c'est à dire du processus père).

● EGID :GID effectif.

● SGID :GID sauvegarde.

● tty : terminal d'attachement.

● pri :priorité (nice)

● s :état du processus (endormi, en attente, en exécution, etc.)

● stime :date de lancement du processus

● time :temps écoulé d'utilisation d'unité centrale

● size :taille de la mémoire allouée.

 

Etat d'un process

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 41/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Etat d un process

création

Prêt

Actif

Bloqué

Zombie Destruction

 

Diagramme d'état Unix

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 42/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Diagramme d état Unix

 

Thread

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 43/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Thread

Un thread est une fonction (flux d'exécution) en coursd'exécution au sein d'un même process

● Un process contient au moins un thread appelé« Thread Main», il est associé à la fonction main

● Un thread est une construction de codage quin'affecte pas l'architecture de l'application.

● Les threads d'un même process partagent les

mêmes données (même Tas : variables dynamique ,même Text, même BSS et même Data) mais ontchacun sa propre Pile et son propre état (en corusd'exécution, bloqué...)

 

Thread

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 44/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Le modèle de communication en thread d'unmême processus est simple : via des variablesparatagées (globales)

 

Etat d'un thread

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 45/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

création

Prêt

Actif

Bloqué

Zombie Destruction

le même que celui du process

 

Ordonnancement

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 46/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

L’Ordonnanceur (planificateur, scheduler) est la partie(un programme) du système responsable de régler lesétat des processus (Prêt,Actif,…etc.) et de gérer lestransitions entre ses états

C’est l’allocateur du processeur aux différentsprocessus

● Il alloue le processeur au processus en tête de file desPrêts

 

Ordonnancement

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 47/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Objectifs● Maximiser l’utilisation du processeur

● Présenter un temps de réponse acceptable

Vérifier les contraintes temps réelles● Respecter l’équité entre les processus

 

Principes d’ordonnancement

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 48/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

p

Les principaux principes d'ordonnancement sont les suivantes :● Ordre d'arrivée : le premier servi est le premier arrivé (Au

supermarché, à la poste,...),● Urgence : le premier servi est celui dont le besoin d'accès

rapide à la ressource est le plus grand. Par exemple, les

pompiers sont prioritaires à un carrefour. Dans un systèmetemps réel, l'urgence est accordée à la tache avecl'échéance la plus proche

● Importance : le premier servi est celui dont l'accès à laressource est le plus important. Par exemple, une personneâgée est prioritaire dans l'accès aux places assises dans les

transports en commun

 

L’Ordonnanceur

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 49/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

2 catégories● Ordonnancement coopératif

● Ordonnancement préemptif

 

Ordonnancement coopératif

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 50/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Ordonnancement jusqu’à achèvement● Les processus élu garde le contrôle jusqu’à

épuisement du temps qui lui a été alloué même

si des processus plus prioritaires on atteint laliste des Prêts

● Non applicable en temps réél

 

Ordonnanceur Préemptif

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 51/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Avec réquisition● Le principe de réquisition (préemption) consiste à

décider, en fonction de certains critères, de remettreen file d'attente un processus avant la fin de son

exécution.● L’Ordonnanceur peut interrompre un processus en

cours d’exécution si un nouveau processus de prioritéplus élevée est inséré dans la file des Prêts

 

Ordonnanceur Préemptif

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 52/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Un processus peut être interrompu si● Un processus plus prioritaire (échéance plus courte

en Temps réél) arrive : calcul dynamique del'échéance

● Une interruption logicielle : initiée par le processus

● Une interruption matérielle : initiée par le matériel

● Dans certains système même une interruption

matérielle peut être interrompue par une autreinterruption

 

Système réentrant

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 53/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Le système est réentrant si● Toutes les routines système sont ré-entrantes

– i.e. Les routines système (des interruptions) sont interruptibles

● Cas particulier : Les interruptions sont interrompues par

d'aitres interruptions● Une routine n'est pas ré-entrante si

– Elle fait appel à une autre routine non réentrante

– Elle fait appel à des variables globales non statiques

(modifiables)– Elle modifie le code de la routine elle même (self-modifying)

 

Système réentrant

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 54/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

process

Interruption 1

Interruption 2

Mode user

Mode noyau

T1 T2T3

Délai théorique : T1 + T2

Délai effectif: T1 + T2 + T3

Remarquons que l'on n'est entrain d'étudier qu'une seule tache.Le problème devient plus compliqué avec plusieurs taches à la fois

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 55/120

 

 

Définition

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 56/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Système temps réel : un système informatiquequi doit réagir à son environnement extérieur àl'intérieur d'un certain nombre de contraintestemporelles

56

 

Les types de temps-réel

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 57/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Temps-réel mou : un retard dans l’obtention durésultat n’est pas dramatique (distributeur debillets)

● Temps-réel dur : un retard dans l’obtention durésultat le rend inutile (détection de missile)

● Temps-réel ferme : un retard, s’il arrive très peusouvent, peut être toléré (téléphonie)

● Temps-réel hybride

57

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 58/120

 

 

Global System for Mobile Communications

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 59/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Extension POSIX● IEEE 1003.1b-1993 : Interface de programmation

(API) temps réel. Ajout du support deprogrammation temps réel au standard précédent.

On parle également de POSIX.4.● IEEE 1003.1c-1995 : Interface de programmation

(API) pour le multithreading.

59

 

Introduction

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 60/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Un noyau temps réel est le minimum logicielpour pouvoir faire du temps réel :

● Ordonnanceur

● gestion de tâches

● communications inter-tâches

● Un système plutôt limité mais performant.

60

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 61/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Un exécutif temps réel possède un noyautemps réel complété de modules/bibliothèquespour faciliter la conception de l' applicationtemps réel :

● gestion mémoire,

● gestion des E/S,

● gestion de timers,

gestion d' accès réseau,● gestion de fichiers.

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 62/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Lors de la génération de l'exécutif, on choisit à lacarte les bibliothèques en fonction des besoins del'application temps réel.

● Pour le développement, on a besoin d'une machine

hôte et de son environnement de développementcroisé (compilateur C croisé, utilitaires, debugger)ainsi que du système cible dans lequel on vatélécharger (par liaison série ou par le réseau)l'application temps réel avec l'exécutif.

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 63/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Un système d'exploitation temps réel est le casparticulier où l' a confusion entre le système onhôte et le système cible qui ne font plus qu' Ona donc ici un environnement de un.

développement natif.

 

VxWorks

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 64/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Le plus utilisé dans l'industrie.● Il est développé par la société :LQG 5LYHU (http

://www.windriver.com) qui a également racheté les droits du noyautemps réel pSOS, un peu ancien mais également largement utilisé.

● VxWorks est fiable, à faible empreinte mémoire, totalement

configurable et porté sur un nombre important de processeurs(PowerPC, 68K, CPU32, ColdFire, MCORE, 80x86, Pentium, i960,ARM, StrongARM, MIPS, SH, SPARC, NECV8xx, M32 R/D,RAD6000, ST 20, TriCore).

● Un point fort de VxWorks a été le support réseau (sockets,

commandes r..., NFS, RPC...) disponible dès 1989 au développeurbien avant tous ses concurrents.

● VxWorks est également conforme à POSIX 1003.1b.

 

VxWorks

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 65/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Le plus utilisé dans l'industrie.● Il est développé par la société :LQG 5LYHU (http

://www.windriver.com) qui a également racheté les droits du noyautemps réel pSOS, un peu ancien mais également largement utilisé.

● VxWorks est fiable, à faible empreinte mémoire, totalement

configurable et porté sur un nombre important de processeurs(PowerPC, 68K, CPU32, ColdFire, MCORE, 80x86, Pentium, i960,ARM, StrongARM, MIPS, SH, SPARC, NECV8xx, M32 R/D,RAD6000, ST 20, TriCore).

● Un point fort de VxWorks a été le support réseau (sockets,

commandes r..., NFS, RPC...) disponible dès 1989 au développeurbien avant tous ses concurrents.

● VxWorks est également conforme à POSIX 1003.1b.

 

QNX

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 66/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Développé par la société canadienne QNXSoftware (http ://www.qnx.com)

● QNX est un système temps réel de type UNIX.Il est conforme à POSIX, permet de développerdirectement sur la plateforme cible

● Intègre l'environnement graphique Photon,proche de X window System

 

ΜCOS / μCOS 2

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 67/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Développé par le Canadien Jean J. Labrosse● Destiné à des environnements de très petite taille

construits autour de micro-contrôleurs.

Il est maintenant disponible sur un grand nombrede processeurs et peut intégrer des protocolesstandards comme TCP/IP (µC/IP) pour assurerune connectivité IP sur une liaison série par PPP.

Il est utilisable gratuitement pour l'enseignement(voir http ://www.ucos-ii.com)

 

Windows CE

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 68/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Annoncé avec fracas par Microsoft comme lesystème d'exploitation embarqué qui tue.

● Windows CE et ses cousins comme EmbeddedWindows NT n' pour l'instant pas détrôné lessystèmes embarqués traditionnels Victime d'réputation de fiabilité approximative,

● Windows CE CE est pour l'instant cantonné à

l'équipement de nombreux assistantspersonnels ou PDA.

 

Lynx OS

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 69/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

LynxOS est développé par la sociétéLynuxWorks http ://www.lynuxworks.com qui amodifié son nom de part son virage vers LINUXavec le développement de Blue Cat

● Ce système temps réel est conforme à lanorme POSIX.

 

Nucleus

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 70/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Nucleus est développé par la sociétéAccelerated Technology Inc (http://www.acceleratedtechnology.com).

● Il est livré avec les sources et il n' pas deroyalties à payer pour la resitribution

 

eCOS

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 71/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Acronyme pour (Embeddable Configurable Operating system)● Initialement développé par la société Cygnus figure

emblématique et précurseur de l'open source professionnel,

● Aujourd'hui rattachée à la société Red Hat Software.

Ce système est adapté aux solutions à très faible empreintemémoire et profondément enfouies.

● Son environnement de développement est basé sur LINUX et lachaîne de compilation GNU avec conformité au standardPOSIX.

 

RT Linux

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 72/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Linux n'est Temps réél mais des pré-configuration de noyaux (rt-kernel) permettentde bénéficier d'un système temps réél (presquedur)

● Elles ajoutent

● Des patchs dits « préemptifs » permettant d'améliorer le comportement du noyau LINUX enréduisant les temps de latence de ce dernier.

● Changement de l'ordonnanceur

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 73/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Versions RT Linux communotaires● Real-Time Application Interface (RTAI), developpée

par Université polytechnique de Milan(www.aero.polimi.it/~rtai/)

● RTL, developpée par New Mexico Tech etmaintenue par FSM Labs, Inc., avec une versionlibre sous www.rtlinux.org.

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 74/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Le noyau temps réél, ses composants etl'application temps réelle doivent s'exécuterdans l'espace mémoire noyau en temps quemodules noyau.

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 75/120

 

 

Utilisation de Open Suse en RT

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 76/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Installation d'une distribution standard● Mise à jour du noyau (via Yast) pour installer le

noyau temps réél.

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 77/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Dans un environnement de Test, il estpréférable de réaliser les développements surune machine virtuelle

● On utilisera VirtualBox : un émulateur de

machines Open Source

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 78/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Principe de RT Linux ( et RTAI)● Remplacer l'ordonnanceur par défaut

● Intercepter les interruption timer et interruptionsexternes

● Execute les parties temps réélles

● Ensuite exécute les process dans le temps quireste

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 79/120

 

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 80/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Les taches Temps réélles sont des modules● S'éxéutent en mode priviligié

● => comme les drivers

● Pas d'accès possible au primitives user comme leterminal et les I/O Fichiers

● => Dans une grande appli, nécessité de séparerl'appli en deux parties :un process user et unetache RT

● Communication entre mode user et mode noyau viamémoire partagée ou pipes.

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 81/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

En language C, le point d'entrée est la fonctionmain.

● Dans un module, le point d'entrée est

● init_module()

● Le lancement du module se fait lors de sonchargement avec la commande

● Insmod

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 82/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Le point de sortie d'un module est● cleanup_module()

● Elle est appelée lors du déchargement dumodule par la commande

● rmmod

 

Source du premier module

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 83/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

/* hello.c */

#include <linux/kernel.h>

#include <linux/module.h>

MODULE_LICENSE("GPL");

int init_module(void)

{

printk("Hello world!\n"); /* printk = kernel printf*/

return 0;

}

void cleanup_module(void)

{

printk("Goodbye world!\n");

return;

}

 

Compliation

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 84/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Création d'un make file (appelé kbuild)● Appel de la comand make

 

Complation

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 85/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

# Kbuild file

ifeq ($(KERNELRELEASE),)# Assume the source tree is where the running kernel was built

# You should set KERNELDIR in the environment if it's elsewhere

KERNELDIR ?= /lib/modules/$(shell uname -r)/build

# The current directory is passed to sub-makes as argument

PWD := $(shell pwd)

modules:$(MAKE) -C $(KERNELDIR) M=$(PWD) modules

modules_install:

$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install

clean:

rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions

.PHONY: modules modules_install clean

else

# called from kernel build system: just declare what our modules are

obj-m := hello.o

endif

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 86/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

make -f Kbuild● insmod hello.ko

● rmmod hello.ko

● Printk ecrit dans

● system log file /var/log/messages.

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 87/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

> dmesg -c >& /dev/null● > insmod hello.ko

● > dmesg -c

Hello world!● > rmmod hello.ko

● > dmesg -c

● Goodby world!

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 88/120

 

 

Multi taches

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 89/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Création de thread● Les pthread (posix thread : pthread_create) ne

sont plus applicable

Création de thread noyau● Utilisés dans les module

● Lancement à partir de init_module

Traitement en asynchrone (non bloquant)

 

Multi taches

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 90/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

Un thread noyau se distingue du pthread par● S'exécute en mode noyau

● N'est pas associé à un process

● Identifié avec un pid

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 91/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

● Liste des threads

● ps ax

● Exemple de résultat

2977 ? S 0:02 hald-addon-storage: polling /dev/sdc (every 2 sec)

2981 ? S 0:02 hald-addon-storage: polling /dev/sdd (every 2 sec)

2982 ? S 0:02 hald-addon-storage: polling /dev/sdg (every 2 sec)

2983 ? S 0:02 hald-addon-storage: polling /dev/sdh (every 2 sec)

2984 ? S 0:05 hald-addon-storage: polling /dev/sr0 (every 2 sec)

2985 ? S 0:01 hald-addon-storage: polling /dev/sdf (every 2 sec)

 

Fonction à éxécuter

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 92/120

 

Taha BEN SALAH (2011) v0 7 - ENISO

int thread_function(void *data);● Retour

● 0 : si pas d'erreur

!=0 : core erreur (comme les processà● Paramètres

● data : de n'importe quel type (void *)entrée pour la fonction

 

Création d'un thread

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 93/120

 

Taha BEN SALAH (2011) v0 7 - ENISO

struct task_struct *kthread_create(int (*threadfn)(void *data),

  void *data,

  const char *namefmt, …);

Retour:

Structure de données définissant le thread

thread bloqué, il faut appeler wake_up_process()

 

Création d'un thread

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 94/120

 

Taha BEN SALAH (2011) v0 7 - ENISO

struct task_struct *kthread_run(int (*threadfn)(void *data),

void *data,

const char *namefmt, ...);Retour:

Structure de données définissant le thread

 

Création d'un thread

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 95/120

 

Taha BEN SALAH (2011) v0 7 - ENISO

int kthread_stop(struct task_struct *thread);Retour:

Structure de données définissant le thread

 

Associer à un processeur

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 96/120

 

Taha BEN SALAH (2011) v0 7 - ENISO

void kthread_bind(struct task_struct *k,

unsigned int cpu

);

 

Kernel-rt (PREEMPT RT)

#i l d li /k l h

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 97/120

 

Taha BEN SALAH (2011) v0 7 ENISO

#include <linux/kernel.h>

#include <linux/module.h>#include <linux/kthread.h>

#include <linux/delay.h>

MODULE_LICENSE("GPL");

int my_thread_function(void * data){

int x=100; int i;

for(i=0;i<x;i++){

printk("Hello world : thread %d !\n",i); ssleep(1);

}

printk("Exit!\n"); return 0;

}

int init_module(void){

printk("Hello world!\n"); /* printk = kernel printf, to the console */

kthread_run(my_thread_function,NULL,"my_kernel_thread"); return 0;

}

void cleanup_module(void){

printk("Goodbye world!\n"); return;

}

 

Création du thread

#i l d h d h

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 98/120

 

Taha BEN SALAH (2011) v0 7 ENISO

#include <pthread.h>

int pthread_create(pthread_t * thread,

  pthread_attr_t * attr,

  void * (*thread_code)(void *),

  void * arg);

thread : structure de données contenant les données du threadattr : structure de données contenant les attribut de création du thread

thread_code : la fonction à exécuter par le thread

arg : les arguments éventuels à passer à la fonction

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 99/120

 

 

Création du thread

pthread attr t thread attr;

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 100/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

pthread_attr_t thread_attr;

if (pthread_attr_init (&thread_attr) != 0) {

fprintf (stderr, "pthread_attr_init error");

exit (1);

}

if (pthread_attr_setdetachstate (&thread_attr,PTHREAD_CREATE_DETACHED) != 0) {

fprintf (stderr, "pthread_attr_setdetachstate error");

exit (1);

}

 

#include <stdio h>

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 101/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

#include <stdio.h>

#include <stdlib.h>

#include <pthread.h>

void *my_thread_process (void * arg)

{

int i;

pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);

for (i = 0 ; i < 5 ; i++) {

printf ("Thread %s: %d\n", (char*)arg, i);

sleep (1);

pthread_testcancel ();

}

}

 

main (int ac char **av)

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 102/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

main (int ac, char av)

{pthread_t th1, th2;

void *ret;

if (pthread_create (&th1, NULL, my_thread_process, "1") < 0) {

fprintf (stderr, "pthread_create error for thread 1\n");

exit (1);

}

sleep (2);

if (pthread_cancel (th1) != 0) {

fprintf (stderr, "pthread_cancel error for thread 1\n");

exit (1);

}(void)pthread_join (th1, &ret);

}

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 103/120

 

 

#include <rtl.h>

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 104/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

#include <time.h>#include <pthread.h>

pthread_t thread;

void * thread_code(void){

  pthread_make_periodic_np(pthread_self(), gethrtime(), 1000000000);

   while (1){

  pthread_wait_np ();

  rtl_printf("Hello World\n");

}

  return 0;

}

int init_module(void) {

  return pthread_create(&thread, NULL, thread_code, NULL);

}void cleanup_module(void) {

  pthread_delete_np(thread);

}

 

Initialisation du thread

int pthread make periodic np(pthread t thread

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 105/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

int pthread_make_periodic_np(pthread_t thread,

hrtime_t start_time,

hrtime_t period);

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 106/120

 

 

● Synchronisation avec

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 107/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

● Synchronisation avec

● Mutex

● Testandset

● Sémaphore

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 108/120

 

 

#include <stdio h>

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 109/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

#include <stdio.h>

#include <stdlib.h>

#include <pthread.h>

static pthread_mutex_t my_mutex;

static int tab[5];

 

void *read tab process (void * arg)

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 110/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

_ _p ( g)

{

int i;

 

pthread_mutex_lock (&my_mutex);

for (i = 0 ; i != 5 ; i++)

printf ("read_process, tab[%d] vaut %d\n", i, tab[i]);

pthread_mutex_unlock (&my_mutex);

pthread_exit (0);}

 

void *write_tab_process (void * arg){

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 111/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

int i;

pthread_mutex_lock (&my_mutex);

for (i = 0 ; i != 5 ; i++) {

tab[i] = 2 * i;

printf ("write_process, tab[%d] vaut %d\n", i, tab[i]);

sleep (1); /* Relentit le thread d'ecriture... */

}

pthread_mutex_unlock (&my_mutex);

pthread_exit (0);

}

 

main (int ac, char **av){

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 112/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

pthread_t th1, th2;void *ret;

pthread_mutex_init (&my_mutex, NULL);

if (pthread_create (&th1, NULL, write_tab_process, NULL) < 0) {

fprintf (stderr, "pthread_create error for thread 1\n");

exit (1);

}

if (pthread_create (&th2, NULL, read_tab_process, NULL) < 0) {

fprintf (stderr, "pthread_create error for thread 2\n");

exit (1);

}

(void)pthread_join (th1, &ret);

(void)pthread_join (th2, &ret);

}

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 113/120

 

 

● P/V (proberen/verhogen)

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 114/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

(p g )

● Puis-je /Vas-y

●  wait/release

acquire/release● down/up

● pend/post

 

P(){

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 115/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

(){

 while(s==0){/*wait*/}

s := s-1

}V(){

s := s+1

}

 

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 116/120

 

Taha BEN SALAH (2011) v0.7 - ENISO 

● #include <stdio.h>

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 117/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

● #include <stdlib.h>

● #include <pthread.h>

#include <semaphore.h>●

● static sem_t my_sem;

int the_end;●

 

void *thread1_process (void * arg){

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 118/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

while (!the_end) {

printf ("Je t'attend !\n");

sem_wait (&my_sem);

}printf ("OK, je sors !\n");

pthread_exit (0);

}

 

void *thread2_process (void * arg){

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 119/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

register int i;for (i = 0 ; i < 5 ; i++) {

printf ("J'arrive %d !\n", i);

sem_post (&my_sem);

sleep (1);

}

the_end = 1;

sem_post (&my_sem); /* Pour debloquer le dernier sem_wait */

pthread_exit (0);

}

 

main (int ac, char **av){

5/16/2018 Tbensalah Itr Extra - slidepdf.com

http://slidepdf.com/reader/full/tbensalah-itr-extra 120/120

 

Taha BEN SALAH (2011) v0.7 - ENISO

pthread_t th1, th2;void *ret;

sem_init (&my_sem, 0, 0);

if (pthread_create (&th1, NULL, thread1_process, NULL) < 0) {

fprintf (stderr, "pthread_create error for thread 1\n");

exit (1);

}

if (pthread_create (&th2, NULL, thread2_process, NULL) < 0) {

fprintf (stderr, "pthread_create error for thread 2\n");

exit (1);

}

(void)pthread_join (th1, &ret);

(void)pthread_join (th2, &ret);

}