Upload
maria-mislang
View
85
Download
0
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);
}