Skip to content

Repository of exploration of the API Posix features using C++.

License

Notifications You must be signed in to change notification settings

gabrielriqu3ti/OSTempsReel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 

Repository files navigation

ROB305 Travaux Dirigés de 1 à 5

ENSTA Paris

ROB305 - Programmation multitâches et OS temps réel

Auteur : Gabriel Henrique RIQUETI

Orientateur : Anvar SHEBLI

Le 2 décembre de 2019

Ce projet est l'ensemble des archives sources en C++ pour exécuter les TDs de ROB305 - Programmation multitâches et OS temps réel. Pour lire la propose de chaque code source, accéder le site suivant Programmation multitâches & OS temps réel

Conténu

Dédans le dossier src de ce projet, on peut trouver les codes sources développés. On peut tourner les applications depuis un terminal linux dans le dossier src et en utilisant les codes de compilation et d'exécution montrés pour chaque TD.

Les fichiers de classes crées sont dans le dossier OSTempsReel.

[TD 1] - Mesure de temps et échantillonnage en temps

a) Gestion simplifiée du temps Posix

Compilation

g++ main_td1a.cpp TimeSpec.cpp -lrt -o ../td1a

Exécution

../td1a [OPTIONS]

b) Timers avec callback

Compilation

g++ main_td1b.cpp TimeSpec.cpp -lrt -o ../td1b

Exécution

../td1b

c) Fonction simple consommant du CPU

Compilation

g++ main_td1c.cpp TimeSpec.cpp -lrt -o ../td1c

Exécution

../td1c [TAILLE_DE_LA_BOUCLE]

d) Mesure du temps d'exécution d'une fonction

Compilation

g++ main_td1d.cpp TimeSpec.cpp -lrt -o ../td1d

Exécution

../td1d

e) Amélioration des mesures

Compilation

g++ main_td1e.cpp TimeSpec.cpp -lrt -lpthread -o ../td1e

Exécution

sudo ../td1e

[TD-2] - Familiarisation avec l'API multitâches pthread

a) Exécution sur plusieurs tâches sans mutex

Compilation

g++ main_td2a.cpp TimeSpec.cpp -lrt -lpthread -o ../td2a

Exécution

sudo ../td2a [TAILLE_DE_LA_BOUCLE] [NOMBRE_DE_TACHES]

TAILLE_DE_LA_BOUCLE : entier non signé.

NOMBRE_DE_TACHES : entier non signé.

b) Mesure de temps d'exécution

Compilation

g++ main_td2b.cpp TimeSpec.cpp -lrt -lpthread -o ../td2b

Exécution

sudo ../td2b [TAILLE_DE_LA_BOUCLE] [NOMBRE_DE_TACHES] [ORDENANCE]

TAILLE_DE_LA_BOUCLE : entier non signé.

NOMBRE_DE_TACHES : entier non signé.

ORDENANCE :

  • SCHED_RR
  • SCHED_FIFO
  • SCHED_OTHER

c) Exécution sur plusieurs tâches avec mutex

Compilation

g++ main_td2c.cpp TimeSpec.cpp -lrt -lpthread -o ../td2c

Exécution

sudo ../td2c [TAILLE_DE_LA_BOUCLE] [NOMBRE_DE_TACHES] [ORDENANCE] [MUTEX]

TAILLE_DE_LA_BOUCLE : entier non signé.

NOMBRE_DE_TACHES : entier non signé.

ORDENANCE :

  • SCHED_RR
  • SCHED_FIFO
  • SCHED_OTHER

MUTEX (optionel) :

  • PTHREAD_MUTEX_DEFAULT
  • PTHREAD_MUTEX_NORMAL
  • PTHREAD_MUTEX_ERRORCHECK
  • PTHREAD_MUTEX_RECURSIVE

[TD-3] - Classes pour la gestion du temps

a) Classe Chrono

Compilation

g++ main_td3a.cpp TimeSpec.cpp OSTempsReel/Chrono.cpp -lrt -o ../td3a

Exécution

../td3a

b) Classe Timer

Compilation

g++ main_td3b.cpp TimeSpec.cpp OSTempsReel/Timer.cpp OSTempsReel/PeriodicTimer.cpp OSTempsReel/CountDown.cpp -lrt -lpthread -o ../td3b

Exécution

sudo ../td3b

c) Calibration en temps d'une boucle

Compilation

g++ main_td3c.cpp TimeSpec.cpp OSTempsReel/Timer.cpp OSTempsReel/PeriodicTimer.cpp OSTempsReel/Looper.cpp OSTempsReel/Calibrator.cpp OSTempsReel/CpuLoop.cpp -lrt -lpthread -o ../td3c

Exécution

sudo ../td3c

[TD-4] - Classes de base pour la programmation multitâches

a) Classe Thread

Compilation

g++ main_td4a.cpp TimeSpec.cpp OSTempsReel/PosixThread.cpp OSTempsReel/Thread.cpp OSTempsReel/Chrono.cpp -lrt -lpthread -o ../td4a

Exécution

sudo ../td4b [TAILLE_DE_LA_BOUCLE] [NOMBRE_DE_TACHES] [ORDENANCE]

TAILLE_DE_LA_BOUCLE : entier non signé.

NOMBRE_DE_TACHES : entier non signé.

ORDENANCE :

  • SCHED_RR
  • SCHED_FIFO
  • SCHED_OTHER

b) Classe Mutex et Mutex::Lock

Compilation

g++ td4b_main.cpp TimeSpec.cpp OSTempsReel/PosixThread.cpp OSTempsReel/Thread.cpp OSTempsReel/Chrono.cpp OSTempsReel/ThreadCounterSafe.cpp OSTempsReel/Mutex.cpp -lrt -lpthread -o ../td4b

Exécution

sudo ../td4b [TAILLE_DE_LA_BOUCLE] [NOMBRE_DE_TACHES] [ORDENANCE] [TIMEOUT_MS]

TAILLE_DE_LA_BOUCLE : entier non signé.

NOMBRE_DE_TACHES : entier non signé.

ORDENANCE :

  • SCHED_RR
  • SCHED_FIFO
  • SCHED_OTHER

TIMEOUT_MS (optionel) : entier non signé.

c) Classe Semaphore

Compilation

g++ main_td4c.cpp -lrt -lpthread -o ../td4c

Exécution

sudo ../td4c

d) Classe Fifo multitâches

Compilation

g++ main_td4d.cpp -lrt -lpthread -o ../td4d

Exécution

sudo ../td4d

[TD-5] - Inversion de priorité

Compilation

g++ main_td5.cpp -lrt -lpthread -o ../td5

Exécution

sudo ../td5

About

Repository of exploration of the API Posix features using C++.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages