Vous êtes sur la page 1sur 165

` Systemes temps reel

Le temps reel

Janvier 2010

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

Plan

Plan
1

` Partitionnement, Systeme de chiers et Amorc age ` Partition et systeme de chiers Lamorc age (boot) ` Le systeme GNU/Linux Le mode noyau et les periph eriques ` Programmation systeme : modules et pilotes ` Programmation utilisateur et appel systeme Le temps reel mou/dur Temps reel Ordonnancement preemptif Communication et Synchronisation Linux et le temps reel Preemption et latence : Xenomai un Linux temps reel Installation de Xenomai Xenomai (taches, timers, INT) Annexe : API specique
Acadmie Navale
` et Systemes ` Systemes temps reel embarques

Bibliographie

Bibliographie

Le noyau Linux

` Understanding the Linux kernel, 3eme Edition, D.P. Bovet et M. Cesati, OReilly. ` Edition, Robert Love, Novell Press. Linux Kernel Development, 2eme Programmation temps reel, Introduction, Daniel Rossier, cours en ligne, Haute Ecole dIngenierie et de Gestion du Canton de Vaud Real-time concepts for embedded systems, Q. Li, CMP Books. Xenomai documentation

: Le temps reel

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

Bibliographie

Notation
Norme SI, IEEE, . . .
1 Ko=1000 octets (1KB, Bytes)=8000 bits 1 Mo=104 octets 1 Go = 106 octets (convention pour les disques durs)

1 Kio = 1 KibiOctet =1024 octets= 210 octets 1 Mio = 220 octets 1 Gio = 320 octets 1Ko =1024 octets. . . (convention historique et dans cette presentation, plus adaptee)

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

Bibliographie

Notation
Base
hexadecimal : 0xB1 ou B1h (note : 1 chiffre en hexa= 4bits) binaire : 10110001b decimal : 177

Little/Big Endian
Petit/Gros boutiste (ethymology : voyage de Gulliver) ordre des octets en memoire pour un mot exemple : la valeur 433=01B1h sur 16bits Little-Endian (intel) addresse 00 01 B1 01 Big-Endian (powerpc) addresse 00 01 01 B1

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

` Partitionnement, Systeme de chiers et Amorc age

Plan
1

` Partitionnement, Systeme de chiers et Amorc age ` Partition et systeme de chiers Lamorc age (boot) ` Le systeme GNU/Linux Le mode noyau et les periph eriques ` Programmation systeme : modules et pilotes ` Programmation utilisateur et appel systeme Le temps reel mou/dur Temps reel Ordonnancement preemptif Communication et Synchronisation Linux et le temps reel Preemption et latence : Xenomai un Linux temps reel Installation de Xenomai Xenomai (taches, timers, INT) Annexe : API specique
Acadmie Navale
` et Systemes ` Systemes temps reel embarques

` Partitionnement, Systeme de chiers et Amorc age

` Partition et systeme de chiers

Partitionnement
Partitionnement du disque
fragmentation dun disque dur (physique) en plusieurs disques logiques usage :

` coexistence de divers systemes de chiers (et OS) organisation physique des donnees

table des partitions dans le premier secteur du disque (MBR) limite : 4 partitions (primaires) lune des 4 peut etre de type etendue pour y denir des partitions logiques en grand nombre
MBR hda: first hard disk NTFS EXT2 EXT3 SWAP ReiserFS FAT32

primaire

primaire

tendue volume (partition logique)

primaire

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

` Partitionnement, Systeme de chiers et Amorc age

` Partition et systeme de chiers

MBR : Master Boot Record


Structure du MBR pour les architectures PC
le premier secteur (512 octets) du disque contient du code : le MBC (Master Boot Code : 446 octets max) contient la table de partition signature de n de MBR : 0xAA55
offset 000h 1B8h 1BCh 1BEh 1FEh 1FFh taille (octets) 440 4 2 4*16 1 1 Description Code executable (MBC) Signature disque optionnel 0x0000 Table des partitions 55h AAh 1

1 Little-endian
Acadmie Navale

PC
` et Systemes ` Systemes temps reel embarques

` Partitionnement, Systeme de chiers et Amorc age

` Partition et systeme de chiers

MBR : Master Boot Record


de la table de partitions Structure dune entree
offset 000h 001h 004h 005h 008h 00Ch taille (octets) 1 3 1 3 4 4 Description Flag : 00h, ou 80h (bootable) pour 1 des 4 entrees Addresse du premier secteur (CHS) Type : 0Bh (FAT32), 83 (Ext3), 05 (Etendue). . . Addresse du dernier secteur (CHS) Addresse LBA du premier secteur Nombre de secteurs dans la partition

Adressage des secteurs du disque


un secteur = 512 octets adresse CHS (controleur) : (C)ylindre, (H)ead, (S)ector adresse LBA : (C*N Head*N sect/piste)+ (H*N sect/piste) + (S-1)
avec N Head : le nombre de tetes, N sect/piste : le nombre de secteurs par piste

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

` Partitionnement, Systeme de chiers et Amorc age

` Partition et systeme de chiers

MBR : Master Boot Record


USB Exemple dadressage dune cle
caracteristiques du disque : 128 cylindres et 64 tetes, 64 secteurs/piste adresse CHS du premier secteur : 0,0,1 adresse LBA : 0 ` adresse CHS : 0, 1, 1 adresse LBA : 64 (65eme secteur)
1 piste du cylindre 640 Secteur 1 CHS=320,1,3

Tte (face) 1 Tte (face) 2

Cylindre 1024

Lo c Cuvillon (ENSPS) Acadmie Navale

` et Systemes ` Systemes temps reel embarques

10

` Partitionnement, Systeme de chiers et Amorc age

` Partition et systeme de chiers

MBR : Master Boot Record


USB Illustration avec une cle
creation dune partition FAT32 de 2Mo : associee a ` /dev/xxx cfdisk /dev/xxx : permet de partitionner la cle

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

11

` Partitionnement, Systeme de chiers et Amorc age

` Partition et systeme de chiers

MBR : Master Boot Record


Analyse du contenu du MBR
vers 1 chier : copie d1(count) bloc de taille (bs) 512 octets de la cle dd if=/dev/sdx of=MBR.bin bs=512 count=1 visualisation du chier binaire : hexdump -C MBR.bin
pas de code MBC LBA premier secteur: 62 bootable

FAT32 CHS premier secteur

0F04 secteurs 3844 secteurs

signature

pas de partition 2

3844*513o=1922Ko (= 2Mo) car une partition doit nir sur une n de cylindre
Acadmie Navale
` et Systemes ` Systemes temps reel embarques

12

` Partitionnement, Systeme de chiers et Amorc age

` Partition et systeme de chiers

` Systeme de chiers (lesystem)


` Systeme de chiers
sur une memoire structure permettant dorganiser des donnees secondaire sous la forme de chiers avec :

une arborescence via des repertoires des noms de chiers (heure de creation, des meta-donnees modication, taille,. . . ) ` des droits dacces

` ` chaque systeme possede des limites speciques : taille maximale de la partition, taille maximale des chiers, longueur des noms de chiers, . . . : journal de transaction, liens symboliques. . . et des specicit es
FS FAT32 NTFS EXT3 natif Win Win Linux max le size 4Go 16To <2To max name size 2To >16 To 32 To max volume size 255 255 255

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

13

` Partitionnement, Systeme de chiers et Amorc age

` Partition et systeme de chiers

` Systeme de chiers (lesystem)


Lexemple de la FAT 32
basique (auteurs : Bill Gates et Marc McDonald) structure :

une amorce de partition (boot sector) specique 2 tables dallocation de chiers (File Allocation Table) qui commence par la zone de donnees le repertoire racine /

dallocation dans lespace des donnees : le cluster lunite


CHS=0,0,1 CHS=0,0,2 CHS=0,1,1 CHS=0,1,2

partition 1 (FAT32) dir /

data

MBR

VBR

FAT 1

FAT 2

512 octets

1 repiste

512 octets

2 mepiste

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

14

` Partitionnement, Systeme de chiers et Amorc age

` Partition et systeme de chiers

` Systeme de chiers (lesystem)


Le boot sector de la FAT 32
dallocation pour les chiers la taille des clusters, lunite la position et taille des FATs la position de lespace donnees une zone de code executable
offset 000h 00Bh 00Dh 00Eh 013h 020h 024h 02ch 032h 047h 052h 05Ah 1FEh taille (octets) 3 2 1 2 2 4 4 4 2 11 8 420 2 Description Jump instruction vers le code executable Taille du secteur en octets (512 defaut) Nombre de secteurs par cluster avant la premiere ` FAT Nombre de secteurs reserv es Nombre total de secteurs (si < 216 ) Nombre total de secteurs (si > 216 ) Taille de la FAT en secteurs du cluster du repertoire Numero racine du secteur de copie du boot secteur Numero Nom du volume ` La cha ne de caracteres : FAT32 Code executable boot (facultatif) Signature 0xAA55

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

15

` Partitionnement, Systeme de chiers et Amorc age

` Partition et systeme de chiers

` Systeme de chiers (lesystem)


Le format dun repertoire (dont le root directory)
nom du chier ou sous-repertoire ag dattributs, heures de creation, modication. . . du cluster ou du chier numero les donnees ` debutent
offset 000h 008h 00Bh 00Ch 00Dh 014h 016h 01Ah 02ch taille (octets) 8 3 1 1 7 2 4 2 4 Description Nom DOS Extension de chier Attribut (0x01 : RO, 0x10 : repertoire, 0x08 : volume label) non utilise ` dernier acces Heure et Date de creation, de cluster 2 octets haut du numero Date et heure de modication de cluster (2 octets bas) Numero Taille du chier

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

16

` Partitionnement, Systeme de chiers et Amorc age

` Partition et systeme de chiers

` Systeme de chiers (lesystem)


La table dallocation des chiers
de la zone de donnees marque les clusters libres ou occupes chainage simple de clusters si la taille du chier > 1 cluster (32bits) dans la table dallocation pour chaque cluster : une entree

0x ?0000000 : cluster libre ` 0xFFFFFEF : cluster utilise, valeur=cluster suivant du chier 0x ?0000002 a ` 0x000000F : dernier cluster du chier 0x ?FFFFFF8 a
O4h O 32bits rserv 32bits rserv 32bits 0xfff 0Ch

FAT 1
0x005 0x008 0x009 0xfff 0xfff

08h

2 numro du cluster

DATA REGION
GNU PUB LIC LICE NCE FR E SOFTW ARE FON ATION D cluster 3 cluster 4 512octets roit est don n de modi fier, redistr ibu toute ou partie d u code si l cluster 5 512octets cluster 6 512octets

FILE1 TXT 0x01 ..... .. 0x000 .... REP2 0x10 ..... .. 0x000 ....

0x004 1127 0x007 0

. ..
FILE2 JPG REP 3 FILE4 AVI REP4 cluster 7 512octets

a prsente licence est attache.

cluster 2 Rpertoire / 512octets

cluster 8 512octets

512octets

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

17

` Partitionnement, Systeme de chiers et Amorc age

` Partition et systeme de chiers

FAT 32
Analyse du boot sector
creation dune FAT 32 sur la partition 1 de label key usb : mkfs.msdos -F 32 -n key usb /dev/sdx1 dd if=/dev/sdx1 of=msdos.bin bs=512 count=1 ou dd if=/dev/sdx of=msdos.bin bs=512 count=1 skip= N sect/piste
FAT de taille 30 secteurs total: 3844 secteurs secteur de taille 512oct 1 secteur/cluster 32 secteurs avant la FAT

rpertoire racine dans cluster no2

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

18

` Partitionnement, Systeme de chiers et Amorc age

` Partition et systeme de chiers

FAT 32
Analyse du repertoire racine
` partir du debut position a de la partition du repertoire racine ? B800h (32+2x30 secteurs) ` creation Analyse du repertoire racine apres dun chier : touch le1 ; dd if=/dev/urandom of=le1 bs=1 count=1173
` la FAT2 (cluster 0 et 1 reserve) note : cluster 2= le 1er apres
entre long nom de fichier Falg: volume label

Nom du fichier

00 00 00 03 cluster du fichier: 3

taille du fichier flag:archive

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

19

` Partitionnement, Systeme de chiers et Amorc age

` Partition et systeme de chiers

FAT 32

Analyse de la FAT
(reserv cluster 0 et 1 jamais utilises es) 3 clusters (3x512o) necessaires ici pour stocker le chier de 1173o.
cluster 0 cluster 1 cluster 2 cluster 3

cluster 4

cluster 5

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

20

` Partitionnement, Systeme de chiers et Amorc age

Lamorc age (boot)

BIOS
es Propriet
acronyme pour Basic Input/Output System ` 1 carte mere= 1 bios adapte memoire (ROM ou Flash) contenant des programmes offrant :

POST (Power on self Test, test du ` systeme) initialisation du hardware (BIOS video, memoire, IRQ..) ` au routines bas niveau dacces hardware ` au int 13h fournie une fonction dacces disque dur.

` une OS. peut servir dabstraction a

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

21

` Partitionnement, Systeme de chiers et Amorc age

Lamorc age (boot)

BIOS

Sequence de boot
Le chipset active la broche RESET du CPU Le processeur execute par defaut le contenu de ladresse 0xFFF0 POST Initialisation RAM video (logos) Initialisation Bios IDE/ATA, RAM,periph. auto-copie en RAM (en dessous de FFFFFh) test du MBR des disques durs et CDROMs (1er secteur) execution du code du MBR si present : chargement de lOS.

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

22

` Partitionnement, Systeme de chiers et Amorc age

Lamorc age (boot)

BIOS
Le BIOS fournit des fonctions dI/O
par le biais dINT. logicielle vecteur de ces interruptions normalise ` provenant du clavier exemple : INT 0x16H, lecture du caractere en 0x0000 la table des vecteurs dinterruptions est placee
Memory
x Go

Free RAM

0x0FFFFF= 2

20=1Mo

0x0F2573

code "reading keyboard"

Bios Reserved RAM

0x00016

JUMP 0xF2573

Bios interrupt vector table


0x00000

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

23

` Partitionnement, Systeme de chiers et Amorc age

Lamorc age (boot)

Detail de lamorc age


Principe
BIOS execute les 512 premiers octets du periph erique de boot si disque dur : le MBC contenu dans le MBR. ce code est un programme damorc age qui utilise lint 13h du BIOS pour ` acceder aux disques et charger le systeme

Logiciel damorc age : bootloader


charge le noyau (le corps de lOS en memoire) et lui donne la main ` peut passer des parametres de boot au noyau peut proposer une interface de selection entre plusieurs OS exemples : NTLDR (NT et XP), LILO, GRUB et SYSLINUX pour linux

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

24

` Partitionnement, Systeme de chiers et Amorc age

Lamorc age (boot)

le bootloader version windows


le code du MBR Microsoft (M.S.)
lit la table de partition pour decouvrir la partition active (ag 0x80) execute le code du secteur de boot de cette partition ` ce code charge le systeme dexploitation

le code du secteur de boot de la partition


NTLDR : le NT loader le bootloader utilise le chier boot.ini pour proposer un menu et charger ensuite
` ` Exemple de chier boot.ini : Windows Me (1ere partition)/ XP (2eme partition) [Boot Loader] Timeout=30 Default=C:\ [Operating Systems] C:\="Microsoft Windows Me" multi(0)disk(0)rdisk(0)partition(2)\WINNT="Microsoft Windows XP" /fastdetect

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

25

` Partitionnement, Systeme de chiers et Amorc age

Lamorc age (boot)

le bootloader LILO pour Linux


le principe
premier stage (Secteur de Boot ) : charge un second stage (dont il connait ladresse CHS) second stage : (le chier binaire /boot/map)

afche un menu (avec du graphisme) charge le noyau linux ou le secteur de boot dune autre partition

un chier de conguration lilo.conf ` chaque modication de lilo.conf ou du kernel a ` jour le second stage mettre a ` jour le premier stage avec la mettre a nouvelle adresse CHS du second stage ` jour la commande lilo effectue la mise a

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

26

` Partitionnement, Systeme de chiers et Amorc age

Lamorc age (boot)

le bootloader LILO
installation de LILO
soit sur le MBR (plus commun)

et le second stage de LILO propose un menu de selection de lOS

soit sur le secteur de boot de la partition linux (permet de conserver son boot M.S.)

au logiciel damorc le choix de lOS est alors indique age M.S. en modiant la partition active dans la table du MBR

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

27

` Partitionnement, Systeme de chiers et Amorc age

Lamorc age (boot)

le bootloader GRUB
Installation classique
sur le MBR, charge le stage 1.5 stage 1 : installe ` stage 1.5 : capable de lire un systeme de chiers (e2fs stage1 5, sur la premiere ` piste du disque fat stage 1 5), installe dans le repertoire stage 2 : installe /boot/grub dune partition linux

afche un menu (avec du graphisme) charge le noyau linux ou le secteur de boot dune autre partition

le chier de conguration /etc/boot/menu.lst est lu par le stage2

` Lilo Avantage par rapport a


` capable de lire un systeme de chiers : de trouver sans ladresse CHS le second stage ` modication du chier de pas besoin de reinstaller apres conguration menu.lst
Acadmie Navale 28

` et Systemes ` Systemes temps reel embarques

` Partitionnement, Systeme de chiers et Amorc age

Lamorc age (boot)

Syslinux
Un logiciel damorc age simple pour partition FAT
pour amorcer un CD dinstallation Linux parent disolinux utilise sur le secteur de boot de la FAT (stage1) installe ` la racine de la partition (stage 2) charge ensuite un binaire ldlinux.sys a ` la racine (un noyau linux) par defaut : execute le chier LINUX a ou utilise un chier de conguration SYSLINUX.CFG Necessite la presence dans le MBR dun code similaire au boot M-S (executer le secteur de boot de la partition active) sous Win98 fdisk /MBR ou xmbr (>Win2000) sous linux install-MBR ou cat syslinux.mbr > /dev/sdx

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

29

` Partitionnement, Systeme de chiers et Amorc age

Lamorc age (boot)

Syslinux

(si le BIOS peut booter lUSB) boot sur cle


USB avec une partition active FAT : cfdisk et mkfs.msdos un cle ` la racine copie dun noyau x86 quelconque a cp vmlinux /media/cle usb/LINUX installation dun MBR qui charge le code du secteur de boot de la partition : install-mbr -e1 /dev/sdx ou cat syslinux/mbr.bin > /dev/sdx installation du stage 1 et 2 de syslinux : syslinux -s /dev/sdx1

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

30

` Le systeme GNU/Linux

Plan
1

` Partitionnement, Systeme de chiers et Amorc age ` Partition et systeme de chiers Lamorc age (boot) ` Le systeme GNU/Linux Le mode noyau et les periph eriques ` Programmation systeme : modules et pilotes ` Programmation utilisateur et appel systeme Le temps reel mou/dur Temps reel Ordonnancement preemptif Communication et Synchronisation Linux et le temps reel Preemption et latence : Xenomai un Linux temps reel Installation de Xenomai timers, INT) Annexe : API specique Xenomai (taches,
Acadmie Navale
` et Systemes ` Systemes temps reel embarques

31

` Le systeme GNU/Linux

Le noyau Linux (Kernel)


Linux
Linux est un noyau UNIX-like performant (AIX, HP-UX, Solaris) par Linus Torvald en 1991 developp e code source ouvert, licence GPL (GNU General Public Licence) support pour un grand nombre de plateforme : i386,Alpha,PowerPC... GPOS : optimise lutilisation classique : avant temps de reponse efcacite minimal a ` 1000Hz (v2.6) noyau echantillonn e resolution timers et ordonnanceur conforme norme POSIX 1003.1b (RT extension)
Acadmie Navale
` et Systemes ` Systemes temps reel embarques

32

` Le systeme GNU/Linux

` Systeme dexploitation complet


Composants
un noyau un interpreteur de commande/shell pour communiquer interactivement avec le noyau des logiciels (utilisant les services du noyau) ` des bibliotheques statiques et dynamiques (la libC du projet GNU) des chiers de congurations : /etc/passwd, ...

Distribution
fournissent lensemble de ces composants ` grand nombre : Red hat - Slackware -Ubuntu - Suse - Mandriva... un tres ` en commun : le noyau Linux est certains utilitaires/bibliotheques de bases ` ` un systeme GNU-Linux un systeme Linux complet est plutot

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

33

` Le systeme GNU/Linux

Noyau Linux
es classiques Propriet
kernel (noyau) monolithique (coeur de lOS) et decharg : MAIS portions de code du noyau peuvent etre chargees ees les modules e (ring 0), acces ` total au materiel le noyau tourne en niveau privilegi

es speciques Propriet
en C (source disponible sous forme darchives) programme portage sur de nombreuses plateformes interface de conguration graphique ou texte (make menucong) du noyau : bzimage (make) compilation produit une image compresse ` linterface graphique nest pas incluse dans le noyau (contrairement a windows)

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

34

` Le systeme GNU/Linux

Noyau linux

Compilation
archive disponible sur http ://www.kernel.org decompresser larchive : tar -xf linux-xx.xx.xx.tbz descendre dans le repertoire : cd linux-xx.xx.xx lancer la conguration du noyau : make menucong dans le chier .cong cette conguration est sauvee compilation du noyau et modules : make installer les modules dans /lib/modules : make modules install limage noyau est disponible dans /arch/xxxx/boot/bzimage

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

35

` Le systeme GNU/Linux

Le noyau Linux (Kernel)


Une couche entre logiciel applicatif et materiel
2 modes (contextes) dexecution : utilisateur et noyau
Applicatif

Shell

GCC

MyApp

Espace Utilisateur

Appels Systmes (POSIX) IPC Memory Management ... Threads Noyaux Drivers IRQ handler Ordonnanceur Espace Kernel

IRQ HAL (Hardware abstraction layer, optionnelle)


Matriel

CPU

Priphriques

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

36

` Le systeme GNU/Linux

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

37

` Le systeme GNU/Linux

Espace utilisateur/noyau
Espace utilisateur
contexte dexecution des applications classiques MMU : protection memoire des applications ` aux services du acces noyau par des fonctions speciques : ` les appels systemes (mkdir, open, setgid) : C, C++, langages evolu es ada, fortran..

Espace noyau
contexte dexecution OS ` (appel systeme, ISR, ordonnancement) ` direct au hardware acces (I/O, memoire physique,..) pas de protection memoire pour les taches noyaux des modules permettent dinclure dynamiquement du code dans le noyau API specique au noyau (C et ASM)

e) ` dexecution processeur different (mode proteg chaque espace a un privilege


Acadmie Navale
` et Systemes ` Systemes temps reel embarques

38

` Le systeme GNU/Linux

Espace utilisateur/noyau
` les appels systemes et lAPI du noyau sont mutuellement exclusifs un processus utilisateur passe temporairement du mode utilisateur au ` des droits des utilisateurs) mode noyau via un appel systeme (controle

Processus utilisateur
API utilisateur Espace Utilisateur

Processus noyau
Espace Utilisateur API noyau

Appel Systeme

Appel function

Espace Kernel

Espace Kernel
Temps dexecution
Temps dexecution

API : write, open (le)


Acadmie Navale

API : printk,enable irq, nd pci device mais pas open


` et Systemes ` Systemes temps reel embarques

39

` Le systeme GNU/Linux

Demarrage nale de Linux


Principe
passage en mode reel decompression de limage (bzimage) en memoire (offset : 0X100000) initialisation par le noyau du processeur,memoire, reseau, periph eriques ` montage dun systeme de chier comme racine en lecture seule (VFS : Mounted root (ext2 lesystem) readonly.) execution du programme par defaut /sbin/init (PID=1)

lecture du chier de conguration inittab montage des partitions en lecture-ecriture detection des periph eriques par chargement des modules conguration reseau, demarrage des services, du programme login ` on peut changer le programme par defaut en passant le parametre init= au bootloader

Remarque
` le drivers pour le support du systeme de chiers racine ne peut etre comme modules (stockes sur le systeme ` compile de chiers en question !)
Acadmie Navale
` et Systemes ` Systemes temps reel embarques

40

` Le systeme GNU/Linux

Demarrage (Boot) de Linux en presence dun ramdisk


` le ramdisk (initrd : initial ramdisk) est un systeme de chiers qui peut etre en memoire charge en meme temps que le noyau par le logiciel damorc age : utilite

` realisation doperations avant le montage du systeme de chiers nal ` ` a ` un jeu de modules necessaire acces au montage du systeme de chiers et au demarrage

Modication de la procedure de boot


` avant le montage du systeme de chier nal, le ramdisk est utilise ` comme racine temporaire du systeme de chiers ` ce systeme de chiers contient un executable (bin,script shell..) /linuxrc e qui est automatiquement execut montage de la racine nale et poursuite de la procedure de demarrage (/sbin/init)
Acadmie Navale
` et Systemes ` Systemes temps reel embarques

41

` Le systeme GNU/Linux

du Boot Linux Resum e


Passage en mode protg Dcompression du kernel Kernel running Initialisation Processeur, Mmoire, Console

Initialisation priph. (disques) Non Ramdisk? Oui Utilisation temporaire du ramdisk pour / Execution de /linuxrc Montage de la partition racine / Execution dinit (1) : consoles et services
Acadmie Navale

Montage de la partition relle / Execution dinit (1) : consoles et services


42

` et Systemes ` Systemes temps reel embarques

` Le systeme GNU/Linux

Le mode noyau et les periph eriques

` Systeme de chiers

suivant une unique arborescence. Sous Linux/Unix, tout est chiers organises /. La racine est nommee

Categories de chiers sous linux


normal : texte et executable erences repertoire : contiennt les ref vers dautres chiers ` au periph special : contenus dans /dev, point dacces eriques ` au premier disque ide (hdb :le second) ex : /dev/hda permet lacces lien symbolique : contient un pointeur vers un autre chier permet lutilisation dun chier sous plusieurs noms sans le dupliquer

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

43

` Le systeme GNU/Linux

Le mode noyau et les periph eriques

` Systeme de chiers virtuel et montage


Principe
` Linux utilise une abstraction pour son systeme de chier (VFS : virtual le system) ` cette abstraction permet de monter des systemes de chiers (sur des supports differents) dans une meme arborescence ` mount : commande permettant de monter le systeme de chier dun periph erique sur un repertoire de linux syntaxe : mount periph erique repertoire a ` des chiers, ceux-ci sont caches par si le repertoire contient dej loperation de montage ` ` monter au demarrage les systemes de chiers a le chier /etc/fstab decrit

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

44

` Le systeme GNU/Linux

Le mode noyau et les periph eriques

` Systeme de chiers virtuel : VFS


` Le systeme de chiers virtuel (VFS)
une abstraction ` par le VFS et rediriges vers les appels systemes sur chiers sont traites le module correspondant (qui implemente lecriture des inodes pour ext2, ` jour de la FAT pour une FAT32,. . . ) la mise a
/ opration gnrique sur fichier

VFS /home/loic Ext2 code spcifique a lopration Drivers periph. de stockage Linux
Acadmie Navale
` et Systemes ` Systemes temps reel embarques

c:/ /home/w VFat NTFS

d:/

FAT32

Drivers periph. de stockage Windows


45

` Le systeme GNU/Linux

Le mode noyau et les periph eriques

` Montage de systemes de chiers


/ boot/ lib/ mnt/ Readme.txt /dev/sda : Clef USB mount t auto /dev/sda/ /mnt/ / /boot /lib /mnt heros_S2_ep03.avi /ENSPS/ Presentation_R5.ppt heros_S2_ep03.avi /ENSPS/ Presentation_R5.ppt

Disque dur

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

46

` Le systeme GNU/Linux

Le mode noyau et les periph eriques

Organisation classique de larborescence Linux


Repertoires
/bin /boot /dev /etc /lib /root /usr /proc /sbin /sys /var executables de base (cd,ls, ..) le noyau et ramdisk ` aux periph lacces eriques les chiers de conguration ` les bibliotheques indispensables le repertoire de lutilisateur root ` executables, bibliotheques utilisateurs (refox, ...) ` ` systeme de chiers virtuel exportant le statut du systeme ` executables systemes (mount, mkfs,..) ` systeme de chiers virtuel exportant des infos sur les periph eriques repertoire pour les chiers de taille variable (mail,logs)

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

47

` Le systeme GNU/Linux

` Programmation systeme : modules et pilotes

Ecriture dun module noyau


Utilitaires
lsmod : liste les modules noyaux charges insmod/rmmod : charge/decharge un module du noyau dmesg : afche le buffer de log interne du noyau les modules sont du code objet avec lextension *.ko

Compilation
necessite les sources et le chier de conguration du noyau utilis e compilation par la commande : make -C /usr/src/linux-headers-2.6.24-21-generic/ SUBDIRS=pwd modules et le chier makele suivant (pour les modules hello.c, toto.c)

obj-M := hello.c toto.c

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

48

` Le systeme GNU/Linux

` Programmation systeme : modules et pilotes

Ecriture dun module noyau

Restriction
` la libC standard (getch, fopen,. . . ) aucun appel a seul lAPI du noyau peut etre utilisee la resolution de lien est faite au chargement du noyau printk() permet decrire dans le buffer interne (debug)

Liberte
` libre a ` la memoire physique (au risque de corrompre le noyau) acces ` aux periph acces eriques (ports : inb, outb ; map memoire : ioremap, writeb. . . )

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

49

` Le systeme GNU/Linux

` Programmation systeme : modules et pilotes

Structure dun module


pas de main() ee au chargement du module : init module 1 fonction execut ee au dechargement 1 fonction execut du module : cleanup module par les fonctions prec edentes des fonctions appelees
#include <linux/init.h> #include <linux/module.h> #include <linux/kernel.h> MODULE_LICENSE("GPL"); int init_module (void) { printk("Hello world!\n"); } void cleanup_module(void) { printk("Bye! \n");}

return 0;

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

50

` Le systeme GNU/Linux

` Programmation systeme : modules et pilotes

` aux periph ` Les chiers speciaux : lacces eriques


a ` vu lusage de /dev/sdc, /dev/random nous avons dej a ` un pilotes dans le noyau (souvent de les chiers de /dev sont associes periph eriques.) ls -l /dev/sdc brw-rw- 1 root disk 8, 32 2008-11-26 21 :10 /dev/sdc ` (clavier, souris. . . ). cindique une communication en mode caractere de communication. Loctet est lunite b : mode block, la lecture et ecriture ne peut se faire que par bloc de entier (un secteur de 512o par exemple) donnees

usage
communication par un chier (descripteur) entre programme utilisateur et erique dans le noyau le pilote dun periph ` utilisation des appels systemes : open, read, write, close . . .

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

51

` Le systeme GNU/Linux

` Programmation systeme : modules et pilotes

Les chiers speciaux : /dev


` un open sur le device Exemple dun pilote qui repond a
#include <linux/kernel.h> <linux/module.h> <linux/fs.h> static int device_open(struct inode *, struct file *); static int Major=60; /*major du driver*/ static struct file_operations fops = { // .read = device_read, avec copy_from_user() // .write = device_write, avec copy_to_user() .open = device_open // .release = device_release }; static int device_open(struct inode *inode, struct file *file) { printk("open\n"); //outb(1,0x378); pour return 0; //activer le port parallele } <asm/uaccess.h> <asm/io.h>

int init_module(void) { int Res; Res = register_chrdev(Major, "parport", &fops); //enregistre le pilote en mode char. return 0; } void cleanup_module(void) { unregister_chrdev(Major, "parport"); } //r evoque le pilote identifi e par Major
Acadmie Navale
` et Systemes ` Systemes temps reel embarques

52

` Le systeme GNU/Linux

` Programmation systeme : modules et pilotes

Les chiers speciaux : /dev

Utilisation de ce pilote
e par un numero de majeur (identiant creation dun chier special reper unique du pilote noyau) et un mineur (identie le periph erique si plusieurs partagent le meme pilote) mknod /dev/parport c 60 0 test douverture par un open() dans un programme utilisateur, ou : echo x > /dev/parport `1 resultat : afchage un message dans le buffer du noyau ou mise a ` dune broche du port parallele.

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

53

` Le systeme GNU/Linux

` Programmation utilisateur et appel systeme

` Programmation utilisateur et appel systeme


Par lexemple du Hello World !
` appel systeme, utilise lexception 80h et arguments de lappel systeme ` dans les registres du le numero places processeur
.data msg: .ascii "Hello world!\n" len = . - msg # taille du message->len .text .global _start _start: movl $len,%edx # argument 3: taille du message movl $msg,%ecx # argument 2: pointeur sur le message movl $1,%ebx # argument 1: descripteur de fichier (stdout) movl $4,%eax # numero de lappel systeme (4=sys_write) int $0x80 # INT 80h movl $0,%ebx # argument 1: code de sortie movl $1,%eax # numero de lappel syst` eme (1=sys_exit) int $0x80 # INT 80h
Acadmie Navale
` et Systemes ` Systemes temps reel embarques

54

` Le systeme GNU/Linux

` Programmation utilisateur et appel systeme

` Lappel systeme

Lexemple du Hello World ! en asm


utilisation de lassembleur as qui supporte des chiers en assembleur AT&T compilation du chier source assembleur hello as.asm : as -o hello as.o hello as.asm ` lediteur appel a de lien (qui nen fait pas mais met le binaire au format ELF executable ) ld -s -o hello as hello as.o lexecutable nale hello as fait 348 octets

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

55

` Le systeme GNU/Linux

` Programmation utilisateur et appel systeme

` Lappel systeme avec la librairie C


La compilation via GCC
makele automatisant la compilation des chiers modies GCC :

un preprocesseur : suppression des commentaires, expansion des macros (.i) une compilation en langage assembleur (.s) un assembleur (as) : code objet des options possibles -I/chemin/vers/include -L/chemin/vers/lib -lm assemble plusieurs chiers objets en un seul ` remplace les symboles par le code correspondant issu des bibliotheques
source gcc E .c .i gcc S .s assembleur gcc c .o objet (language machine)

lediteur de lien : ld

libjpeg.a ld lm ljpg libm.a libc.a

gcc lm ljpg
Acadmie Navale

executable (ELF) ` et Systemes ` Systemes temps reel embarques

56

` Le systeme GNU/Linux

` Programmation utilisateur et appel systeme

` Lappel systeme avec la librairie C


main() { write (1,"Hello, World!\n", 14); return 0; }

Lexemple hello World


ledition manuelle (on sy amuse rarement) du chier hello.o : ld -dynamic-linker /lib/ld-linux.so.2 /usr/lib/crt1.o /usr/lib/crti.o -lc /usr/lib/crtn.o -s -o hello hello.o ledition de lien necessite :

` -lc : la bibliotheque C /usr/lib/crtX, les objets crtX (C RunTime) qui initialise lenvironnement et les variables C ` de lien dynamique pour ledition ld-linux : la bibliotheque

Resultat
: 2420 octets (7x le programme en assembleur) taille de lexecutable mais environnement C : notamment passage automatique des arguments au programme main(argc,*argv)
Acadmie Navale
` et Systemes ` Systemes temps reel embarques

57

` Le systeme GNU/Linux

` Programmation utilisateur et appel systeme

` Les bibliotheques dynamiques et statiques


` lien avec bibliotheques statiques
` bibliotheque avec lextension .a le code de la librairie est dans lexecutable duplique pour : pas besoin des ` bibliotheques pour executer le code ensuite contre : executables volumineux sur le disque et en memoire

` lien avec bibliotheques dynamiques


` bibliotheque avec lextension .so resolution de liens (edition) au chargement pour : executable moins volumineux sur le disque et en memoire (1 unique exemplaire ` du code de la bibliotheque) contre : le programme ne fonctionne pas si la bib. dynamique nest pas installee ou trouvee

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

58

` Le systeme GNU/Linux

` Programmation utilisateur et appel systeme

` Les bibliotheques dynamiques et statiques


Utilitaires
` ldd : liste les bibliotheques dynamiques dont depend un programme ` nm : liste le contenu des symboles dun objet/bibliotheque /etc/ld.so.conf : chier devant contenir lensemble des chemins vers les ` bibliotheques dynamiques ` jour le cache des bibliotheques ` ldcong : met a dynamiques disponibles ` le chier ld.so.conf dapres
$ldd /bin/ls linux-gate.so.1 => (0xb7fb7000) librt.so.1 => /lib/tls/i686/cmov/librt.so.1 (0xb7f9b000) libselinux.so.1 => /lib/libselinux.so.1 (0xb7f82000) libacl.so.1 => /lib/libacl.so.1 (0xb7f7a000) libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7e2b000) libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb7e13000) /lib/ld-linux.so.2 (0xb7fb8000) libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7e0f000) libattr.so.1 => /lib/libattr.so.1 (0xb7e0b000)

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

59

` Le systeme GNU/Linux

` Programmation utilisateur et appel systeme

` Lappel systeme avec la librairie C


main() { write (1,"Hello, World!\n", 14); return 0; }

Lexemple hello World en statique


ledition manuelle du chier hello.o : ld -static /usr/lib/crt1.o /usr/lib/crti.o -L/usr/lib/gcc/i486-linux-gnu/4.2.3 start-group -lgcc -lgcc eh -lc end-group /usr/lib/crtn.o hello.o -o hello

start-group X end-group : resolution recursive des liens

Resultat
: 555814 octets (200x le programme en dynamique) taille de lexecutable

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

60

Le temps reel

Plan
1

` Partitionnement, Systeme de chiers et Amorc age ` Partition et systeme de chiers Lamorc age (boot) ` Le systeme GNU/Linux Le mode noyau et les periph eriques ` Programmation systeme : modules et pilotes ` Programmation utilisateur et appel systeme Le temps reel mou/dur Temps reel Ordonnancement preemptif Communication et Synchronisation Linux et le temps reel Preemption et latence : Xenomai un Linux temps reel Installation de Xenomai timers, INT) Annexe : API specique Xenomai (taches,
Acadmie Navale
` et Systemes ` Systemes temps reel embarques

61

Le temps reel

` Systeme temps reel


` Temps de reponse dun systeme :
et lapparition du vecteur temps entre lapparition dun vecteur dentree de sortie associe

E0 E1 E2

S0

Systme
S1

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

62

Le temps reel

` Systeme temps reel


` Temps de reponse dun systeme :
et lapparition du vecteur temps entre lapparition dun vecteur dentree de sortie associe

` Systeme temps reel


` 1 :systeme Def (materiel et logiciel) accomplissant des taches en respectant des contraintes sur le temps de reponse

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

63

Le temps reel

` Systeme temps reel


` Temps de reponse dun systeme :
et lapparition du vecteur temps entre lapparition dun vecteur dentree de sortie associe

` Systeme temps reel


` 1 :systeme Def (materiel et logiciel) accomplissant des taches en respectant des contraintes sur le temps de reponse ` 2 :systeme Def qui satisfait aux contraintes fonctionnelles et temporelles qui lui sont imposees.

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

64

Le temps reel

` Systeme temps reel

Caracteristiques
determinisme logique : meme sorties pour un un meme vecteur et un meme ` dentree etat du systeme

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

65

Le temps reel

` Systeme temps reel

Caracteristiques
determinisme logique : meme sorties pour un un meme vecteur et un meme ` dentree etat du systeme determinisme temporel : le temps de reponse dune tache est bornee (bornes inf et sup).

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

66

Le temps reel

` Systeme temps reel

Caracteristiques
determinisme logique : meme sorties pour un un meme vecteur et un meme ` dentree etat du systeme determinisme temporel : le temps de reponse dune tache est bornee (bornes inf et sup). ` est temporellement predictible Un systeme temps-reel : borne sup. du temps de reponse dune tache connue.

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

67

Le temps reel

mou/dur Temps reel

` mou (soft real-time) Systeme temps reel


des systemes ` : la majorite informatiques sont temps reel assurant la reservation une bases de donnees dun vol en 15s un lecteur MP3

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

68

Le temps reel

mou/dur Temps reel

` mou (soft real-time) Systeme temps reel


des systemes ` : la majorite informatiques sont temps reel assurant la reservation une bases de donnees dun vol en 15s un lecteur MP3

` mou Systemes Temps reel


` mou. ces 2 systemes sont temps reel

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

69

Le temps reel

mou/dur Temps reel

` mou (soft real-time) Systeme temps reel


des systemes ` : la majorite informatiques sont temps reel assurant la reservation une bases de donnees dun vol en 15s un lecteur MP3

` mou Systemes Temps reel


` mou. ces 2 systemes sont temps reel ` eances : systeme Def TR devant satisfaire des ech temporelles mais avec de exibilite, tolerance eance. un degre sur lech

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

70

Le temps reel

mou/dur Temps reel

` mou (soft real-time) Systeme temps reel


des systemes ` : la majorite informatiques sont temps reel assurant la reservation une bases de donnees dun vol en 15s un lecteur MP3

` mou Systemes Temps reel


` mou. ces 2 systemes sont temps reel ` eances : systeme Def TR devant satisfaire des ech temporelles mais avec de exibilite, tolerance eance. un degre sur lech eance une ech non satisfaite :

` pas de panne du systeme relative au retard sur lech eance e a une penalit

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

71

Le temps reel

mou/dur Temps reel

` mou Systeme temps reel


Exemple : Lecteur MP3
a ` 44.1 KHz (borne sup. audible : 20KHz) son audio echantillonn e sur un CD : 2 voies x 16bits x 44100 echantillons/s debit = 1378 Kb/s MP3 : ltrage et DCT pour un bitrate moindre (souvent. 128 Kbits/s) en frame de 1152 echantillons, MP3 divise soit 1152/44.1KHz = 26ms ` decoder 1 frame a toute les 26ms du decodage ` 25MHz. A hardware (duree : 2.3ms sur un FPGA a
implementation of an MP3 decoder. Faltman, Hast et al. , Digital IC-Projects, LTH, sweden,2003. )
Dcodage frame Echances satisfaites Autres tches Interruption son Echance insatisfaite

0
Acadmie Navale

26

52

78

t(ms)

` et Systemes ` Systemes temps reel embarques

72

Le temps reel

mou/dur Temps reel

` mou Systeme temps reel


Exemple : Lecteur MP3
a ` 44.1 KHz (borne sup. audible : 20KHz) son audio echantillonn e sur un CD : 2 voies x 16bits x 44100 echantillons/s debit = 1378 Kb/s MP3 : ltrage et DCT pour un bitrate moindre (souvent. 128 Kbits/s) en frame de 1152 echantillons, MP3 divise soit 1152/44.1KHz = 26ms ` decoder 1 frame a toute les 26ms du decodage ` 25MHz. A hardware (duree : 2.3ms sur un FPGA a
implementation of an MP3 decoder. Faltman, Hast et al. , Digital IC-Projects, LTH, sweden,2003. )

eance non respect de lech : interruption sonore temporaire solution de contournement


utilisation dun tampon saut de frames pour conserver une synchronisation

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

73

Le temps reel

mou/dur Temps reel

` dur (hard real-time) Systeme temps reel


` dur Systeme temps reel
` eances : systeme Def TR devant respecter des ech avec une tolerance nulle ou quasi-nulle. nulle des resultats ` ech eance utilite obtenus apres elev ee : panne complete ` du systeme ` penalit e + danger pour lintegrit e ` physique du systeme ou des etres humains ` entre un systeme ` dur et mou est la penalit en cas le critere temps reel e eance de non-respect de lech

dur Applications du temps reel


aeronautique/spatial, automobile (ABS, Airbag. . . ) ` systemes militaires, medicaux (IRM) process industriel (centrales nucleaires, robotique (evitons les !),. . . ) butees ...
Acadmie Navale
` et Systemes ` Systemes temps reel embarques

74

Le temps reel

mou/dur Temps reel

` dur (hard real-time) Systeme temps reel


` vol rasant Sea-skimming Exemple : Missiles a
Type anti-navire : Exocet (EADS/MBA), HARPOON (Boeing)

vitesse : mach 0.93 (850 m.s1 /s) longueur/poids : 5.2m / 855 Kg ` 5m par mer calme altitude de vol : 3 a : 60km portee etique (EM) navigation : GPS/Cellule Inertielle, sonde electromagn acquisition nale : autodirecteur EM
Surface de sustentation Antennes

RADAR/ capteurs

Charge explosive
el ectronique Unite

Batterie thermique Amorce Carburant solide Ailerons actifs

naviguation (GPS/IMU) (communication)


Acadmie Navale

` et Systemes ` Systemes temps reel embarques

75

Le temps reel

mou/dur Temps reel

` dur (hard real-time) Systeme temps reel

: 10 ms Contraintes temps reel


calcul position et vecteur vitesse GPS/IMU et sonde planication de trajectoire radar navigation actionnement des ailerons deviation de 20 sur laxe de tangage : crash en 37ms ` lapparition de la cible ne doit pas un calcul de nouvelle trajectoire suite a retarder une correction de tangage dommages collateraux elev ee : destruction prematur ee, penalit e
Acadmie Navale
` et Systemes ` Systemes temps reel embarques

76

Le temps reel

Ordonnancement preemptif

Taches Concurrentes
Concurrence
: du latin concurrere, courir avec. Competition, Def lutte, entres plusieurs agents pour lacquisition dune meme ressource ( ou la realisation dun meme objectif). ` a ` la limitation dune ressource phenom ene naturel lie

Introduction de la concurrence en Informatique


creation du multi-taches puis multi-utilisateurs sur mono-CPU

recup erer les temps dattente dI/O pour faire dautres taches

` ` memoire calculs paralleles sur multi-processeur a commune ` un environnement concurrent ou distribue applications reactives a

` systemes dexploitation, embarques : base de donnees, centres de calcul serveurs reseaux

:CPU, memoire,. .. taches en concurrence pour les ressources limitees


Acadmie Navale
` et Systemes ` Systemes temps reel embarques

77

Le temps reel

Ordonnancement preemptif

Taches Concurrentes

` la concurrence (voir cours systeme ` Solution a dexploitation)


politique dordonnancement des taches communication inter-taches : synchronisations et messages ` coherent modelisation de lacces aux ressources : mutex

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

78

Le temps reel

Ordonnancement preemptif

Ordonnancement
Rappel
` lordonnanceur choix du process a ` executer appel a parmi les processus prets sont en attente dune ressource ou dun les processus bloques enement ev externe
En excution

Ordonnanceur

Appel une fonction bloquante

Prt

Retour de la fonction bloquante

Bloqu

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

79

Le temps reel

Ordonnancement preemptif

Ordonnancement preemptif
Objectif de lordonnanceur temps reel
: assurer lordonnancement des taches eances faisabilite et leurs ech : assurer un taux de charge le plus bas possible du CPU optimalite implementable : ordonnanceur preemptif ` priorite xe le plus utilise a

` priorite xe Ordonnanceur preemptif a


a ` interrompre arbitrairement une tache preemption : capacite au prot dune autre xe, donnee par un nombre xe : chaque tache priorite a une priorite ` ` non-bloquee a regle : execution de la tache de plus haute priorite ` lordonnanceur chaque appel a

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

80

Le temps reel

Ordonnancement preemptif

` priorite xe Ordonnancement preemptif a


Ordonnancement RM (rate-monotonic)
dans les annees 70 (Liu&Leyland) et etendu etudi e par la suite eralisation ` priorite xe gen des ordonnanceurs preemptifs a ` hypotheses :

taches periodiques et independantes uniquement P de la tache ` sa periode priorite inverse a T

Caracterisation dune tache


Ai tache i A i+T i

t Ci

Ai : date dactivation de la tache i (prete) Ti : periode dactivation de la tache i de la tache i Ci : duree de la tache Pi : priorite i
81

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

Le temps reel

Ordonnancement preemptif

Ordonnancement RM
Condition sufsante dordonnancement
N taches periodiques et independantes sont ordonnanc ables si :
N

U=
i =1

Ci < Ti

N (2 2 1)
cst. de liu & Leyland

(1)

avec avec Pi =

1 Ti

(2)

N 1 2 3 ..
Acadmie Navale

Cst. de l&l 1 0.82 0.78 .. 0.69

U : taux de charge du CPU si {cst de l&l} < U < 1 : on ne peut conclure avec ce test

` et Systemes ` Systemes temps reel embarques

82

Le temps reel

Ordonnancement preemptif

Ordonnancement RM
Exemple avec 2 taches
e toutes les unites de temps ordonnanceur execut 25 occupation du CPU 81.5% ( 50 + 30 ) 95 veri ee condition sufsante dordonnanc abilite i 1 2
Tche 1 Tche 2
A1 A2 fin 1 re chance A1 fin 2 me chance A1 fin 3 me chance A1

Ci 25 30

Ti 50 95

Pi 0.02 0.01

t 0 50
fin

100
1 re chance

150
fin

A2 2 me chance
83

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

Le temps reel

Ordonnancement preemptif

Ordonnancement RM
Exemple avec 2 taches
e toutes les unites de temps ordonnanceur execut 25 30 occupation du CPU 90% ( 50 + 75 ) ee condition sufsante non veri poursuite de lanalyse (non ordonnanc able) i 1 2
Tche 1 Tche 2
A1 A2 fin 1 re chance A1 fin 2 me chance A1

Ci 25 30

Ti 50 75

Pi 0.02 0.013

t 0
Acadmie Navale

50

A2 1re chance

fin T2 chance dpasse

100

150
84

` et Systemes ` Systemes temps reel embarques

Le temps reel

Ordonnancement preemptif

Ordonnancement RM
Conclusion
en presence dun ordonnancement preemptif et de taches periodiques independantes :

xes pour les taches RM permet dutiliser des priorites ` sufsant dordonnanc RM donne un critere abilite

Remarques
un grand nombre de taches = 69% du CPU utilisable (Cst. de l&l)

31% restant utilisable pour les taches sporadiques, asynchrones

le RME (RM Etendu) peut prendre en compte des taches dependantes variables existent : EDF ` priorites des ordonnancements preemptifs a

` necessaire critere et sufsant U < 100% ` implementer a ` recalculer dynamiquement) mais bien + complexe a (priorites

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

85

Le temps reel

Ordonnancement preemptif

Ordonnancement RM
Exercice 1 : Encodage dune frame mp3
` es suivantes : Soit un systeme avec les propriet statiques ; un ordonnancement preemptif par priorites des temps de changements de contexte (commutation) et dordonnancement negligeables ; ` lordonnanceur, an de determiner un appel toutes les millisecondes a la ` executer. tache a les 3 taches periodiques et independantes suivantes : Taches Tache 1 (T1 ) Tache 2 (T2 ) Tache 3 (T3 ) Ai (ms) 10 20 25 Pi 1 3 2 Ci (ms) 12 7 4

temporelle par le CPU Completer le chronogramme representant lexecution ` e. des taches ci-dessus pour le systeme consider
Acadmie Navale
` et Systemes ` Systemes temps reel embarques

86

Le temps reel

Ordonnancement preemptif

Ordonnancement RM

Exercice 1 :
T1

t
10 20 30 40 50

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

87

Le temps reel

Ordonnancement preemptif

Ordonnancement RM
Exercice 2 : Encodage dune frame mp3
soit les 3 taches periodiques et independantes suivantes : Tache Filtrage du son Encodage (DCT) Post-traitement Ci 3ms 4ms 5ms Ti 11ms 14ms 20ms Pi . . .

les taches dencodages et de post-traitement sont capables de traiter des plus grands que le ltre (elles ont ainsi une frequence blocs de donnes plus faible) xes ? sont-elles ordonnanc ables avec des priorites ` faire un chronogramme et donner le temps dobtention des premieres trames pos-traitees.

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

88

Le temps reel

Ordonnancement preemptif

Ordonnancement RM

Exercice 2 : Encodage dune frame mp3

10

15

20

25

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

89

Le temps reel

Ordonnancement preemptif

` preemptif Le modele
Changement de contexte Premption Mutex (race condition) Interblocage Piles multiples dxecution

Inversion de priorit

un ordonnancement simple des taches

` un systeme ` mais des inconvenients par rapport a non preemptif


` sauver letat changement de contexte : perte de temps CPU a dun processus preempt e conserver les piles dexecutions des programmes (occupation memoire) de proteger ` (Mutex) : necessit e une ressource en cours dacces

` blocage possible du systeme inversion de priorite

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

90

Le temps reel

Communication et Synchronisation

Mutex
Rappel
2 etats : ouvert, ou ferme protection dune section critique ou une ressource en cours dutilisation seule la tache qui a acquis le mutex peut le liberer un mutex ferme est bloquee en attente une tache qui veut acquerir
Fonction Xenomai rt mutex create() (toujours heritage de priorite) rt mutex delete() rt mutex aquire() rt mutex release() Fonction Posix pthread mutex init() pthread mutexattr init() pthread mutex destroy() pthread mutex lock() pthread mutex unlock() Operation un mutex creer es du mutex denir propriet detruire un mutex un mutex acquerir liberer un mutex

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

91

Le temps reel

Communication et Synchronisation

Mutex
Usage
` a ` une ressource partagee protection, synchronisation de lacces

la ressource : structure en memoire, un periph erique


Tche Ressource partage Tche Mutex

Tache() { : pthread\_mutex\_lock() {lecture/ecriture sur la ressource} pthread\_mutex\_unlock() : }

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

92

Le temps reel

Communication et Synchronisation

Mutex
` Problemes courants avec les mutexes (et semaphores)
des ressources monopolisees par les taches famine : tache privee de haute priorite interblocage : taches possedant chacune une ressource voulu par une autre : execution alors quune inversion de priorite de taches de basse priorite attend car elle bloque sur une ressource tache de haute priorite

Solutions possibles
interblocage :

detection du blocage par le RTOS dune ressource) (liberation forcee procedure de deblocage

: algorithme dheritage inversion de priorite de priorite

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

93

Le temps reel

Communication et Synchronisation

Mutex
Interblocage (Deadlock)
ee par un mutex (exclusion mutuelle) la ressource est proteg une tache a acquis une ressource et bloque en attente dune autre ressource ` une ressource une cha ne de 2 taches ou plus, ou possede ` chaque tache voulue par une autre
A1 mutex_lock A mutex_lock B

A t possd par

A2

mutex_lock B

mutex_lock A

mutex_unlock A et B (prvu)

veut

veut

possd par

t 0 50 100
Interblocage

Tche

Tche

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

94

Le temps reel

Communication et Synchronisation

Mutex
Inversion de priorite
sexecutent : situation ou Def de basses priorites avant une ` des taches du ` un blocage sur une ressource tache de haute priorite a intermediaires aggraver par lexistence de taches de priorites
Priorit
A2

t
mutex_lock mutex_lock

t section critique de T1
3

(comportement normal)

t
A1 mutex_lock mutex_unlock

t 0
Acadmie Navale

50

100

150
95

` et Systemes ` Systemes temps reel embarques

Le temps reel

Communication et Synchronisation

Mutex
Inversion de priorite
sexecutent : situation ou Def de basses priorites avant une ` des taches du ` un blocage sur une ressource tache de haute priorite a intermediaires aggraver par lexistence de taches de priorites
Priorit
A2

t
mutex_lock

+C3 + C4
mutex_lock

t
A4

Inversion de priorit t
A3

t
A1 mutex_lock mutex_unlock

t 0
Acadmie Navale

50

100

150
96

` et Systemes ` Systemes temps reel embarques

Le temps reel

Communication et Synchronisation

Mutex
Heritage de priorite
` algorithme pour resoudre le probleme dinversion de priorite dans les RTOS le plus frequemment implement e dans les GPOS (linux)) (rarement implement e

Principe :
la ressource qui bloque la tache liberer au plus tot prioritaire elev ee Ta bloque sur une ressource detenue par si une tache de priorite inferieure une tache Tb de priorite :
1 2

de la tache ee au rang de celle de Ta la priorite Tb est temporairement elev ` que la ressource est liber ee, Tb retrouve sa priorite des

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

97

Le temps reel

Communication et Synchronisation

Mutex
Heritage de priorite
` algorithme pour resoudre le probleme dinversion de priorite dans les RTOS le plus frequemment implement e dans les GPOS (linux)) (rarement implement e
Priorit
A2

t
mutex_lock mutex_lock

t
A4

t
A3

t
A1 mutex_lock mutex_unlock (P1 = P1 initial)

t 0
Acadmie Navale

50

hritage: P1 = P100 2

150
98

` et Systemes ` Systemes temps reel embarques

Le temps reel

Communication et Synchronisation

ebre ` Mars Pathinder : un cas cel dinversion de priorite


Mars Pathinder
sonde avec rover (sojourner) pour exploration de la surface de Mars le 4 decembre lancee 1996, atterrissage le 4 juillet 1997 faster, better and cheaper concept (< 150 million $) le bug : re-initialisations de la sonde annulant les commandes en cours

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

99

Le temps reel

Communication et Synchronisation

ebre ` Mars Pathinder : un cas cel dinversion de priorite


Mars Pathinder
RTOS commercial Vxworks, mono-processeur des taches :

du bus de communication (Priorite elev e) bc dist : controle met eo a ` renvoyer sur Terre (P faible) ASI/MET : collecte des donnees intermediaires dautres taches de priorites

` e 1 watchdog reinitialise le systeme si bc dist ne sest pas execut (timeout)

Mars Pathinder : analyse et correction


reproduction de lerreur sur une copie de la sonde+analyse des logs : mise en evidence dune inversion de priorite

ASI/MET partage un ressource avec bc dist que prevu ASI/MET traite plus de donnes intermediaires par ASI/MET et les taches bc dist est bloque de priorites

utilisation dun interpreteur C pour activer lheritage de priorite


Acadmie Navale
` et Systemes ` Systemes temps reel embarques scolaire 2008-2009 100 91 / 156 Annee

Le temps reel

Communication et Synchronisation

Mutex
Exercice 3 : heritage de priorite
Soit : appele toutes les millisecondes ordonnanceur preemptif par priorite, temps dordonnancement et de changement de contexte n egligeables 1 mutex qui implemente lheritage de priorite ` le mutex en n dexecution chaque tache libere (pas avant), ` lexception de T1 qui le relache avant de terminer. a une unite Tache T4 T3 T2 T1 Ai 6 et 20 ms 10 et 23 ms 2 et 24 ms 0 et 26 ms Ci 5 ms 3 ms 5 ms 10 ms Pi 4 3 2 1

Completez le chronogramme dexecution suivant (T3 nutilise pas la le mutex). ressource et ne tente donc pas dacquerir
Acadmie Navale
` et Systemes ` Systemes temps reel embarques

101

Le temps reel

Communication et Synchronisation

Mutex
Exercice 3 : heritage de priorite
rt_mutex_lock()

T4

0
T3

10

15

20

25

0
T2

10

15

20

25

0
T1

10

15

20

25

0
rt_mutex_lock()
Acadmie Navale

5
rt_mutex_lock()

10

15

20

25

` et Systemes ` Systemes temps reel embarques

102

Le temps reel

Communication et Synchronisation

Semaphore
Denition
par des taches, ` un compteur, pouvant soit un objet partage assimilable a etre disponible (compte 1) ou indisponible (0) a `1 un semaphore binaire est un semaphore dont le compteur est limite ` un mutex, une tache contrairement a autre que celle qui a acquis le semaphore peut le liberer
1 2 3

emente lacquisition dun semaphore decr son compteur la liberation dun semaphore incremente son compteur le semaphore si le compteur est a zero ne peut etre acquis et la tache bloque
Fonction Xenomai rt sem create() rt sem delete() rt sem p() rt sem v() rt sem broadcast() Fonction Posix sem init() sem destroy() sem wait() sem post() voir objet barrier Operation un semaphore creer supprimer un semaphore un semaphore acquerir liberer un semaphore debloquer toutes les taches en attente sur le semaphore

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

103

Le temps reel

Communication et Synchronisation

Semaphore
Usage
` a ` une ressource coordination de lacces synchronisation entre taches

synchronisation simple rendez-vous ` de synchronisation barriere

` a ` une ressource multiple (2 canaux, 2 co-processseurs. . . ) acces


Priorit
2 1 0 A2 sem_wait bloque 0 sem_post 1 2 Smaphore

Tche Ressource identique 1

A1

sem_wait

sem_post
3

Tche Ressource identique 2 Smaphore (initialis 2)


104

A1

sem_wait

sem_post

Tche

t 0
Acadmie Navale

50

100

150

` et Systemes ` Systemes temps reel embarques

Le temps reel

Communication et Synchronisation

Semaphore
Synchronisation simple de taches
la tache T2 a besoin que T1 ait fait son travail prealablement ` que T1 atteint le point de synchro. si P2 > P1 T2 redemarre des cas mono-CPU
Priorit

sem_wait A 2 sem_wait bloque

Tche
A1 sem_post sem_post

Tche

t 0 50 100 150

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

105

Le temps reel

Communication et Synchronisation

Semaphore
Synchronisation simple de taches
la tache T2 a besoin que T1 ait fait son travail prealablement ` que T1 atteint le point de synchro. si P2 > P1 T2 redemarre des cas multi-CPU
Priorit

sem_wait A2 sem_wait bloque

Tche 1

Tche 2
Attente de T1

A1

sem_post

t 0 50 100 150

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

106

Le temps reel

Communication et Synchronisation

Semaphore
Synchronisation simple de taches
la tache T2 a besoin que T1 ait fait son travail prealablement ` que T1 atteint le point de synchro. si P2 > P1 T2 redemarre des cas multi-CPU
Priorit

sem_wait A2 sem_wait bloque

Tche 1

Tche 2
Attente de T1

A1

sem_post

t 0 50 100 150

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

107

Le temps reel

Communication et Synchronisation

Semaphore
Rendez-vous sans messages
point de synchronisation les 2 taches ont besoin que lautre ait ni certaines operations ` au point de synchronisation attend lautre la premiere cas mono-CPU
Priorit

sem_post sem_wait bloque

Tche
A1 sem_post sem_wait

Tche

t 0
Acadmie Navale

50

100

150
108

` et Systemes ` Systemes temps reel embarques

Le temps reel

Communication et Synchronisation

Semaphore
Rendez-vous sans messages
point de synchronisation les 2 taches ont besoin que lautre ait ni certaines operations ` au point de synchronisation attend lautre la premiere cas multi-CPU
sem_post sem_wait bloque

Tche
A1 sem_post sem_wait

Tche

t 0 50 100 150

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

109

Le temps reel

Communication et Synchronisation

Semaphore
` de synchronisation Barriere
dun nombre y de taches ` attente de larrivee sur une barriere des taches fonction de deblocage simultane en attente sur le semaphore : rt sem broadcast (ou lobjet barrier en POSIX) cas mono-CPU
Priorit
Smaphore=0 A2 sem_wait
sem_broadcast()

Tche

Tche

Tche

A1

sem_wait bloque
3

A1

sem_wait bloque

t 0
Acadmie Navale

50

100

150
110

` et Systemes ` Systemes temps reel embarques

Le temps reel

Communication et Synchronisation

File de messages
Denition
objet de communication asynchrone entre les taches ` la creation taille de la le denie a (nombre max. de messages contenus) si le pleine : impossible decrire de nouveaux messages tant lecture dans la le est non-bloquante, ou bloquante (tache bloquee quil ny a pas un message) ` un semaphore) synchronisation mais avec message (par rapport a
Fonction Xenomai rt queue create() rt queue delete() rt queue write() rt queue read() Fonction Posix mq open() mq close() mq send() mq receive() Operation une le creer supprimer une le envoyer un message lire un message

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

111

Le temps reel

Communication et Synchronisation

File de messages
un mode message urgent et broadcast souvent disponible
File de message Ecriture B par tche Message B Message A Message A Message B Message urgent (LastIn First Out) Ecriture urgente C Message B Message B Message A Message A Message C Lecture de A par une tche

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

112

Le temps reel

Communication et Synchronisation

File de messages
de reception Communication avec accuse
` lenvoyeur notication de reception du message a et : communication sure inter et synchronisation ` outil : le + semaphore binaire (ou une 2eme le si message de retour) cas mono-CPU
Priorit
A2 mq_sent sem_wait

Tche

A1

mq_receive

sem_post

t 0 50 100 150 Tche

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

113

Le temps reel

Communication et Synchronisation

File de messages
de reception Communication avec accuse
` lenvoyeur notication de reception du message a et : communication sure inter et synchronisation ` outil : le + semaphore binaire (ou une 2eme le si message de retour) cas multi-CPU
Priorit
A2 mq_sent sem_wait

Tche

A1

mq_receive

sem_post

t 0 50 100 150 Tche

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

114

Le temps reel

Communication et Synchronisation

Memoire partagee
Denition
par des taches une zone memoire (struct, tableau) partagee au demarrage allocation faite dans un tas memoire de taille xe reserv e allocation dynamique de memoire temporellement deterministe ` coherent ` la memoire utiliser un mutex pour un acces a (race condition) erable communication inter-taches : le de messages pref (evite le mutex)
Fonction Xenomai rt heap create() rt heap delete() rt heap alloc() rt heap free() Fonction Posix shm open() close() nmap() unmap() Operation une memoire creer partagee partagee supprimer une memoire allouer de la memoire liberer de la memoire

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

115

Le temps reel

Communication et Synchronisation

Signaux
Denition
equivalant pour les taches aux interruptions pour lOS avec une fonction gestionnaire du signal interruption logicielle associee par un numero (1 a ` SIGRTMAX (64 sous linux) ) signaux identies
Tche { sigaction() Tche signal_handler() { } }

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

116

Le temps reel

Communication et Synchronisation

Signaux
Implementation Linux
au signaux manipulent une structure sigaction les fonctions liees ` gerer sigaction contient la liste des signaux a (.sa mask) et un pointeur (.sa handler) sur un gestionnaire associe de masquer des signaux dans les gestionnaires de signaux possibilite ` utiliser avec parcimonie ! (cas durgence) signaux a
Fonction Xenomai Fonction Posix sigemptyset sigaddset() sigaction() (pthread )kill() Operation initialiser et vider un set de signaux ajouter un signal activer le nouveau gestionnaire ` une tache envoi dun signal a

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

117

Le temps reel

Communication et Synchronisation

exemple : capture du signal SIGINT (le ctrl-c du clavier)


#include <signal.h> #include <stdio.h> void catch_sigint(int signo) { write(1,"catch sigint\n",13); } int main() { struct sigaction sa_new; sa_new.sa_handler= catch_sigint; sigemptyset(&sa_new.sa_mask); sa_new.sa_flags=0; sigaction(SIGINT,&sa_new,NULL); while(1) {} return 0; }

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

118

Linux et le temps reel

Plan
1

` Partitionnement, Systeme de chiers et Amorc age ` Partition et systeme de chiers Lamorc age (boot) ` Le systeme GNU/Linux Le mode noyau et les periph eriques ` Programmation systeme : modules et pilotes ` Programmation utilisateur et appel systeme Le temps reel mou/dur Temps reel Ordonnancement preemptif Communication et Synchronisation Linux et le temps reel Preemption et latence : Xenomai un Linux temps reel Installation de Xenomai timers, INT) Annexe : API specique Xenomai (taches,
Acadmie Navale
` et Systemes ` Systemes temps reel embarques

119

Linux et le temps reel

Preemption et latence

La preemption

Denition
dun OS a ` interrompre une tache capacite en faveur dune autre tache superieure) (de priorite la preemption est necessaire pour satisfaire une politique dordonnancement et initier un changement de contexte les processus sexecutant dans lespace utilisateur sont toujours preemptibles sous Linux OS multitache et multi-utilisateur

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

120

Linux et le temps reel

Preemption et latence

La preemption
Illustration 1 :
taches sexecutant dans lespace utilisateur ordonnancement en Round-Robin de 2 taches ayant pour quantum 2 ticks dhorloge systeme ` (temps dexecution alloue) et choisi la lorsque le quantum expire, lordonnanceur est appele prochaine tache
Priorit Premption par lOS: tche non finie mais quantum expir

Espace utilisateur

Processus A Espace noyau

Processus B Appel systme (open file)

Processus A

Timer INT temps


Acadmie Navale
` et Systemes ` Systemes temps reel embarques

121

Linux et le temps reel

Preemption et latence

La preemption
Illustration 2 :
B reveill preemption dune tache A par une tache de plus haute priorite ee par une interruption au retour dun ISR, Linux appelle toujours lordonnanceur : si une tache B que A, B est execut ee au lieu de poursuivre existe de plus haute priorite avec A cas non-preemptif : B devrait attendre pour demarrer la n du process A ou son blocage sur une I/O, une ressource.
Priorit Premption par lOS: tche A non finie mais B a une priorit > Espace utilisateur Processus A Espace noyau ordonnanceur ISR (rveil de B) INT
Acadmie Navale

Processus B

Processus A

Timer INT temps


122

` et Systemes ` Systemes temps reel embarques

Linux et le temps reel

Preemption et latence

La preemption dans lespace noyau


Denition
un noyau preemptif est egalement capable dinterrompre une tache (routine) du noyau en faveur dune autre tache un noyau preemptif est reentrant : une tache noyau peut etre appelee alors quun autre tache noyau sexecute ` routines et threads noyaux : appels systemes, ordonnanceur, kswapd (thread de liberation de pages memoire),..

Avantage dun noyau preemptif (pour le temps reel)


par un autre tache de priorite execution dune tache nest pas retardee ` inferieure mais qui est en mode noyau (lors dun appel systeme par ex.) et linstant reduction de la latence entre linstant ou ` un processus est pret ou (cf. illustration suivante) ` il demarre

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

123

Linux et le temps reel

Preemption et latence

La preemption dans lespace noyau


Illustration : cas du noyau non-preemptif
pendant lexecution reveil par INT dune tache de haute priorite dun ` appel systeme (routine noyau) au milieu noyau non-preemptif : la routine noyau ne peut etre stoppee un nouvelle tache on doit attendre la n dune tache noyau pour demarrer meme si elle est prioritaire ` lordonnanceur est retarde jusqua ` la n de la tache lappel a A
latence Priorit Nonpremption du noyau B ready et priorit > mais appel systme pas fini Espace utilisateur Processus A Espace noyau Appel Systme ISR INT
Acadmie Navale
` et Systemes ` Systemes temps reel embarques

Processus B Premption espace user B ready et priorit > A peut ici tre stopp ordonnanceur

temps
124

Linux et le temps reel

Preemption et latence

La preemption dans lespace noyau


Illustration : cas du noyau preemptif
pendant lexecution reveil par INT dune tache de haute priorite dun ` appel systeme (routine noyau) superieure noyau preemptif : tache B de priorite demarre immediatement un on ne doit pas attendre la n dune tache noyau pour demarrer plus elev ee nouvelle tache de priorite ` lappel systeme reprendra lorsque A sera de nouveau la tache active
Priorit Processus B Mode utilisateur Premption du noyau: appel systme non fini mais B ready et priorit > Appel Systme INT
Acadmie Navale

Processus A Mode noyau ordonnanceur

ISR

temps
125

` et Systemes ` Systemes temps reel embarques

Linux et le temps reel

Preemption et latence

Limitation de Linux pour le temps reel


pour un usage gen eral un OS prevu
de traitement des applications au detriment optimisation du debit du temps de reponse avoir trop de points de preemption (reordonnancement) ralentit lOS :

perte de temps en reordonnancements inutiles ; perte de temps en changements de contexte dexecution (overhead system)

un noyau initialement non-preemptif


par labsence de preemption programmation facilitee dans lespace noyau :

` la fois accede ` aux structures de donnees du noyau ; une seule tache noyau a pas de risques de concurrences (race conditions) sur ces structures

evolution vers un noyau preemptif : multitache dans lespace noyau denition de sections critiques (non-preemptibles, ees par spinlock (mutex) pour eviter les non-interruptibles) proteg concurrences
Acadmie Navale
` et Systemes ` Systemes temps reel embarques

126

Linux et le temps reel

Preemption et latence

Latence et temps de reponse


Denitions
entre loccurrence dun ev enement latence dinterruption : delai externe par une INT et lexecution signale du gestionnaire (ISR) correspondant entre le passage a ` letat dune latence dordonnancement : delai pret tache et lexecution de lordonnanceur permettant le passage en execution effective de la tache

Latence et temps reel


les sections critiques du noyau linux impactent directement ces 2 latences ` or le temps de reponse du systeme est une somme comportant ces 2 latences et imprevisible) consequente des sections la duree (non bornee, ` critiques temps de reponse non garanti du systeme

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

127

Linux et le temps reel

Preemption et latence

Latence globale du noyau Linux


` une interruption En reponse a
du Temps de reponse (latence)= latence dinterruption + duree gestionnaire (ISR) + latence dordonnancement + dur ee de lordonnanceur

Tche bloque

Tche prte

Tche en execution

Espace utilisateur temps

Latence dinterruption

Gestionnaire dinterruption

Odonnanceur (Scheduler) Espace noyau Latence ordonnanceur

Interruption (INT)

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

128

Linux et le temps reel

Preemption et latence

Latence du kernel Linux


Facteurs de latence dinterruption
par le kernel (section critiques : spinlock) interruption masquee ISR masquant linterruption quil traite dautres interruptions (interruptions imbriquees) arrive

Facteurs de latence dordonnancement


a ` chaque retour dISR (parfait !) mais : lordonnanceur est appele dautres interruptions (liees a ` des taches inferieures) arrive de priorites dordonnancement des taches duree :

sous 2.4 (O(n)) constant sous 2.6 (O(1)), proportionnel au nombre de taches

preemption inactive (section critique) eral, que sur un front de dans le cas gen lordonnanceur nest appele ` lhorloge systeme (1000Hz)

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

129

Linux et le temps reel

Preemption et latence

Motivation pour un Linux temps reel


es et commerciaux RTOS dedi
(debogage) Pour : performances (Vxorks, LynxOS) et fonctionnalites Contre : couts importants, sources majoritairement fermes

GPOS libre avec extension RT


Pour : Open sources, gratuit, nombreux drivers, support communautaire Contre : You can put racing stripes on a bulldozer but it wont go any faster (RTLinux Manifesto)
OS a ` usage gen eral (GPOS), design en partie contradictoire avec un RTOS ; modications importantes du noyau pour approcher les performances des RTOS commerciaux

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

130

Linux et le temps reel

: Xenomai un Linux temps reel

Solution pour rendre TR le noyau Linux


1/Modier le noyau
rendre le noyau le plus preemptible possible (ne granularity)

reduire le nombre de sections critiques appeler lordonnanceur + souvent mais judicieusement

integration progressive des modications dans le noyau 2.6 par des patches

2/Ajouter un micro noyau temps reel


concept du Dual Kernel ou co-noyau a ` Linux adosser un micro-noyau temps reel Linux tout en conservant les fonctionnalites implications :

virtualisation des interruptions IPC de communication inter-domaines entre Linux et le micro-noyau

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

131

Linux et le temps reel

: Xenomai un Linux temps reel

Patch : CONFIG PREEMPT VOLUNTARY

Points explicites de preemption


insertion de points de preemption (reordonnancement) dans les sections dexecution de code non-preemptible et de longue duree connu sous le nom de Low-Latency Patches par Ingo Molnar en 2001 developp e integration dans les nouveaux noyau 2.6 (CONFIG PREEMPT VOLUNTARY) inconvenients : travail manuel, inserer judicieusement les points de preemption

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

132

Linux et le temps reel

: Xenomai un Linux temps reel

Points explicites de preemption : Illustration


code avec points de preemption
void prune_dcache(int count) { DEFINE_RESCHED_COUNT; redo: spin_lock(&dcache_lock); for (;;) { if (TEST_RESCHED_COUNT(100)) { RESET_RESCHED_COUNT(); if (conditional_schedule_needed()) { spin_unlock(&dcache_lock); unconditional_schedule(); goto redo; } } /* do some work */ } spin_unlock(&dcache_lock); }
133

code non-preemptif
void prune_dcache(int count) { spin_lock(&dcache_lock); for (;;) { /* do some work*/ } spin_unlock(&dcache_lock); }

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

Linux et le temps reel

: Xenomai un Linux temps reel

Patch : CONFIG PREEMPT


Points implicites de preemption
` changer de tache pas de risque a si hors ISR et aucun spinlock bloque de reordonnancement chaque n dISR ou spinlock est une opportunite

Implementation
introduction dun compteur preempt count et la sortie dun spinlock incr/decremente lentree le compteur par preempt disable() et decr ement par prempt enable() increment e e en sortie de spinlock, si preempt count==0 alors preempt enable() appelle la fonction de reordonnancement la sortie dun ISR realise le meme test e a ` partir des noyaux 2.5.4 (CONFIG PREEMPT) integr

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

134

Linux et le temps reel

: Xenomai un Linux temps reel

Patch : CONFIG PREEMPT RT


Le patch Realtime Preemption
faire de Linux un kernel totalement preemptif ` conception entierement preemptible, modication importante du code ` totalement deterministe vis-a-vis de lordonnancement, et la gestion des interruptions mecanisme dheritage de priorite maintenu par Ingo Molnar patch en developpement latence : <100 s mais jitter de 300s objectif : Integration dans le noyau ofciel (CONFIG PREEMPT RT)

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

135

Linux et le temps reel

: Xenomai un Linux temps reel

Preemption du noyau linux


Evolution quantitative

Linux 2.0

Linux 2.22.4

Premptible Linux 2.42.6

Realtime Linux 2.6 (in progress)

Code Premptible
Acadmie Navale
` et Systemes ` Systemes temps reel embarques

Code Nonpremptible
136

Linux et le temps reel

: Xenomai un Linux temps reel

Linux + co-noyau
Le concept
est inser e entre le hardware et Linux un micro-noyau temps reel

specique ordonnanceur temps reel pas de dependance aux sections critiques Linux

les interruptions pour ses routines le micro-kernel capture en priorite avant Linux qui rec temps reel, oit alors des interruptions virtuelles (Virtualisation des interruptions) secondaire (actif qd le co-noyau inactif) Linux est un OS de priorite ` le micro-noyau garantit des temps de commutation de contexte tres courts performant (latence < 20s) ecie on ben de tout lenvironnement Linux (Xwindows, reseau) qui peut communiquer avec le micro-noyau via des IPC speciques

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

137

Linux et le temps reel

: Xenomai un Linux temps reel

Linux + co-noyau : historique

Deux implementations de la virtualisation


RTHAL : Realtime Hardware Abstraction Layer

interception et substitution des fonctions Linux gerant les interruptions ; materielles au prot du micro-noyau temps reel par RTLinux (proprietaire) utilise et RTAI (libre) ; par FSMLAB, rachat par VxWorks en 2007 approche brevetee ` permet le partage de ressources materielles par plusieurs systemes dexploitation concurrents ; developpement conjoint avec Xenomai par Philip Gerum sur un travail par Karim Yaghmour en 2001 ; theorique propose ` cause du brevet logiciel) migration de RTAI en 2003 sous ADEOS (a

ADEOS : Adaptive Domain Environment for Operating Systems

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

138

Linux et le temps reel

: Xenomai un Linux temps reel

: Bilan Linux temps reel

Type Linux preempt Linux RT PREEMPT RTAI Xenomai preemption native preemption native co-noyau co-noyau e integr

Archi. Toutes i386,ppc,arm, mips,x86 64 i386,arm i386,arm, ia64, ppc32/64

API Posix, noyau Posix, noyau specique user/noyau multiple, user/noyau

Latence moyenne 1-10ms 10-20 s < 5s < 5s

Latence maximale 70-400 ?s < 20s < 20s

Etat stable en devlpt. actif stable, dvlpt chaotique stable, dvlpt actif

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

139

Linux et le temps reel

: Xenomai un Linux temps reel

ADEOS
Un couche de virtualisation
disponible sous forme dun patch pour Linux permet la cohabitation de plusieurs domaines (OS complexe, nano-noyau,...) tous ces domaines voient la couche Adeos et sont en concurrence pour enements ` traiter des ev externes (INT) ou internes (appel systeme)

` chaque domaine : ADEOS notie sur demande a


les INT materielles ` appels systemes Linux (int 80h) ` par le kernel (changement de tache, evenements declenches signaux,..)

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

140

Linux et le temps reel

: Xenomai un Linux temps reel

ADEOS
enement ` Le pipe dev ou I-pipe
` une priorite statique pour capturer les INT chaque domaine a enements ` par priorite aux domaines a ` travers un tube ev dispatches virtuel ` linstallation des autres domaines root domain : le domaine necessaire a (via des modules kernels ou adjonction de code)

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

141

Linux et le temps reel

: Xenomai un Linux temps reel

Xenomai
Xenomai : un micro-noyau dans le domaine primaire ADEOS
reception prioritaire des INT, independamment des tentatives de masquage par les ISR et sections critiques de Linux latence dINT predictible presence de 2 domaines entre lesquels une tache temps reelle xenomai peut migrer : primaire (Xenomai) et secondaire (Linux) quand elle a ` besoin dun appel systeme Linux par Xenomai peut etre lINT capturee au choix remis dans le tuyau pour Linux

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

142

Linux et le temps reel

: Xenomai un Linux temps reel

Xenomai
permettant de programmer Xenomai est un noyau temps reel

entierement ` des taches temps reel dans lespace noyau xenomai ; (TR) dans lespace utilisateur des taches temps reel

Tache TR dans lespace noyau Xenomai


` sous forme dun module noyau programmation particuliere ` co-noyau heritage des premiers RTOS a utile pour developper des drivers temps reel ` deconseiller a : pas de protection memoire, dutilitaires de debogage

Tache TR dans lespace utilisateur


` la fois dans le domaine primaire ADEOS tache executable a (micro-noyau) ou le domaine secondaire (Linux) tout en etant par Xenomai ordonnancee programmation sous forme dune application classique ` utilisation dune bibliotheque pour lAPI Xenomai
Acadmie Navale
` et Systemes ` Systemes temps reel embarques

143

Linux et le temps reel

: Xenomai un Linux temps reel

Xenomai
Tache TR dans lespace utilisateur

Domaine Linux (noyau standard) ISR ordonnanceur Migration Domaine Xenomai (conoyau) ISR ordonnanceur TR Virtualisation dinterruptions Contrle masque IRQ Sources dinterruptions Application TR espace kernel Applications TR espace utilisateur

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

144

Linux et le temps reel

: Xenomai un Linux temps reel

Xenomai
Tache TR dans lespace utilisateur (details)
protection memoire pour la tache ee dans le domaine Xenomai (primaire) execut

ee par lordonnanceur TR de xenomai ; ger du noyau Linux, tache toujours prioritaire sur une tache aucune inference Linux non-TR ; au hardware) ; latence minimaliste (lie ` si la tache fait un appel systeme Linux : dans le domaine Linux (secondaire) tache migree de la tache la priorite TR ; le noyau Linux herite la tache TR reste ainsi en competition avec les taches du domaine Xenomai ; ` aux appels systemes ` tache TR a acces Linux ; ` Linux) ; (competition possible avec taches interne a latence superieure si la tache fait un appel API Xenomai : dans le domaine Xenomai (primaire) tache migree

ee dans le domaine Linux (secondaire) execut


Acadmie Navale

` et Systemes ` Systemes temps reel embarques

145

Linux et le temps reel

: Xenomai un Linux temps reel

Xenomai
Tache TR dans lespace utilisateur
illustration de la migration entre domaines
Appel systme Linux

domaine Linux domaine Xenomai temps Appel API Xenomai Migration Execution de la tche Xenomai Bouclier dinterruption (optionel)

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

146

Linux et le temps reel

: Xenomai un Linux temps reel

Xenomai API
Caracteristiques
erique le noyau Xenomai fournit les services dun RTOS gen lAPI native est une API parmi dautres utilisant ces services skins disponibles (POSIX, VxWorks,..) en plus de lAPI Native syntaxe commune pour la programmation dans lespace noyau et utilisateur

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

147

Linux et le temps reel

: Xenomai un Linux temps reel

Xenomai API/Posix
Categories de services
gestion des taches

une tache en parametre ` creer avec une priorite rt task create() / pthread create() denir une thread comme periodique rt task set periodic() / pthread make periodic np() denir une thread comme periodique rt timer read() / clock gettime() un semaphore creer rt sem create() / sem init() un gestionnaire dinterruption (noyau) creer rt intr create() / pthread intr attach np()

gestion du temps et alarmes

synchronisation

gestion dinterruption

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

148

Linux et le temps reel

: Xenomai un Linux temps reel

Programmation avec lAPI Native et Posix

` letude on se limite a de lAPI Native et Posix de Xenomai les autres API fournissent les memes services avec une syntaxe differente on presentera la programmation dans lespace noyau (module) et utilisateur (programmation classique) en labsence de programmation au niveau dun driver, on privilegiera la programmation dans lespace utilisateur (programmation plus classique, usage C++ possible, protection memoire)

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

149

Linux et le temps reel

: Xenomai un Linux temps reel

Programmation dans lespace Noyau


Caracteristiques
les taches se programment comme des modules noyaux ees uniquement dans le domaine primaire : noyau Xenomai execut ` pas dappels systemes du hardware (ring 0) mais risques associes programmation au plus pres
#include <native/task.h> #include <native/timer.h> #define RTITI_TASK_PRIO #define RTITI_TASK_MODE #define RTITI_TASK_STKSZ RT_TASK myTask; /*descripteur de t ache*/ void mineTask (void* cookie) { rt_task_set_periodic(NULL, TM_NOW, SAMPLING_PERIOD); while(1) { rt_task_wait_period(NULL); ... } }
Acadmie Navale
` et Systemes ` Systemes temps reel embarques

99 /*priorit e la plus elev ee*/ T_FPU|T_CPU(0) /*CPU 1 si plusieurs*/ 0 /*default size*/

150

Linux et le temps reel

: Xenomai un Linux temps reel

int init_module (void) { rt_timer_set_mode( TM_ONESHOT ); /*initialisation du timer ns*/ rt_task_create( &mytask, "rtiti_task",TASK_STKSZ,TASK_PRIO,TASK_MODE ); /*creatio return 0; }

void cleanup_module (void) { rt_task_delete( &myTask ); /*destruction de la t ache*/ } MODULE_LICENSE("GPL");

Structure de programmation dun module noyau


il contient obligatoirement 2 fonctions :

lors de linsertion du module dans le noyau init module () : fonction appelee ; (initialisation variables, structures, taches et objets temps reel) lors du dechargement cleanup module () : fonction appelee du module es) (liberation des divers objets cre
` et Systemes ` Systemes temps reel embarques

Acadmie Navale

151

Linux et le temps reel

: Xenomai un Linux temps reel

Programmation dans lespace Noyau


Makele
` la compilation de module sous linux 2.6 makele similaire a necessite la presence des sources du noyau Linux sur la machine exemple de Makele : compilation du module exemple.c
obj-m = exemple.o

KDIR = /lib/modules/$(shell uname -r)/build PWD = $(shell pwd) EXTRA_CFLAGS = -I/usr/xenomai/include -I/usr/xenomai/include/posix -I/usr/include/ default: $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules clean: rm -f *.o *.ko *.mod.c

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

152

Linux et le temps reel

: Xenomai un Linux temps reel

Programmation dans lespace Noyau


Exemple dune tache periodique avec lAPI Posix
#include <posix/posix.h> #define SAMPLING_PERIOD pthread_attr_t pthread_t attr; m_thread; 1 /*en seconde, ici*/

void* mineTask (void* cookie) { struct timespec tp, rqtp; rqtp.tv_sec=SAMPLING_PERIOD; rqtp.tv_nsec=0; clock_gettime( CLOCK_REALTIME, &tp) ; tp.tv_sec=tp.tv_sec+1; pthread_make_periodic_np(pthread_self(),&tp, &rqtp); while(1) { ... } return NULL; } Acadmie Navale
` et Systemes ` Systemes temps reel embarques

153

Linux et le temps reel

: Xenomai un Linux temps reel

int init_module (void) { struct sched_param par; par.sched_priority=99; printk("Exemple : init\n"); pthread_attr_init (&attr); pthread_attr_setschedpolicy(&attr,SCHED_RR); pthread_attr_setschedparam (&attr,&par); pthread_create( &m_thread, &attr,mineTask , NULL ); /*destruction de la t ache*/ return 0; }

void cleanup_module (void) { pthread_cancel( m_thread ); /*destruction de la t ache*/ printk("Exemple : exit\n"); } MODULE_LICENSE("GPL");

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

154

Linux et le temps reel

: Xenomai un Linux temps reel

Programmation dans le contexte utilisateur


les taches TR Xenomai se programment comme des threads dans un programme utilisateur classique on dispose des memes avantages que les programmes classiques : utilitaires de deboguage, protection memoire ` transparent aux services Linux par migration du domaine primaire acces au domaine secondaire si necessaire (usage de la lib C : stdio.h) exemple de makele : compilation du source exemple.c
APPLICATIONS = exemple XENO ?= /usr/xenomai XENOCONFIG=$(shell PATH=$(XENO):$(XENO)/bin:$(PATH) which xeno-config 2>/dev/null) CC=$(shell $(XENOCONFIG) --cc) CFLAGS=$(shell $(XENOCONFIG) --xeno-cflags) $(MY_CFLAGS) LDFLAGS=$(shell $(XENOCONFIG) --xeno-ldflags) $(MY_LDFLAGS) -lnative all:: $(APPLICATIONS) clean:: $(RM) $(APPLICATIONS) *.o

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

155

Linux et le temps reel

: Xenomai un Linux temps reel

Exemple Xenomai : tache periodique


RT_TASK task_desc; int main (int argc, char *argv[]) { int err; /* Disable paging for this programs memory. */ mlockall(MCL_CURRENT|MCL_FUTURE); /* Create a real-time task */ err = rt_task_create(&task_desc, "MyTaskName", TASK_STKSZ, TASK_PRIO, TASK_MODE); if (!err) /* If successfully created, start the task. */ rt_task_start(&task_desc,&sampling_task,NULL); ... }

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

156

Linux et le temps reel

: Xenomai un Linux temps reel

void sampling_task (void *cookie) { int err; /* The task will undergo a 100 usc periodic timeline. */ err = rt_task_set_periodic(NULL,TM_NOW,TASK_PERIOD); ... for (;;) { err = rt_task_wait_period(); if (err) break; /* Work for the current period */ } }

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

157

Linux et le temps reel

: Xenomai un Linux temps reel

Programmation dans le contexte utilisateur


Interface Posix
en evitant les fonctions non-portables de cette interface ( np) :

` la fois pour xenomai (TR dur) et Linux classique (TR mou) compilable a ` aux ordonnanceurs temps reel de Linux : SCHED FIFO, SCHED RR, acces (SCHED OTHER pour les non-TR)

APPLICATIONS = exemple XENO ?= /usr/xenomai XENOCONFIG=$(shell PATH=$(XENO):$(XENO)/bin:$(PATH) which xeno-config 2>/dev/null) CC=$(shell $(XENOCONFIG) --cc) CFLAGS=$(shell $(XENOCONFIG) --xeno-cflags) $(MY_CFLAGS) LDFLAGS=$(shell $(XENOCONFIG) --xeno-ldflags) $(MY_LDFLAGS) -lnative all:: $(APPLICATIONS) clean:: $(RM) $(APPLICATIONS) *.o

compilation Linux gcc -o exemple exemple.c -lpthread

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

158

Linux et le temps reel

: Xenomai un Linux temps reel

Exemple Xenomai : tache periodique


#include <posix/posix.h> #define SAMPLING_PERIOD

/*periode en secondes*/

int main(int argc, char* argv[]) { struct sched_param par; par.sched_priority=99; pthread_attr_init (&attr); pthread_attr_setschedpolicy(&attr,SCHED_RR); pthread_attr_setschedparam (&attr,&par); /* Avoids memory swapping for this program */ mlockall(MCL_CURRENT|MCL_FUTURE); pthread_create( &m_thread, &attr,rst , NULL ); /*creation de la tache*/ pthread_join ( m_thread, NULL); /*attente fin tache rst*/ pthread_cancel( m_thread ); } /*destruction tache*/

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

159

Linux et le temps reel

: Xenomai un Linux temps reel

void* rst(void *arg) { int i=0; struct timespec tp, rqtp; rqtp.tv_sec=SAMPLING_PERIOD; rqtp.tv_nsec=0; clock_gettime ( CLOCK_REALTIME, &tp) ; tp.tv_sec=tp.tv_sec+1; pthread_make_periodic_np(pthread_self(),&tp, &rqtp); while (i<10) { pthread_wait_np(NULL); printf("1periode\n"); i++; } }

/*attendre la nouvelle p eriode*/

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

160

Linux et le temps reel

Installation de Xenomai

Compilation/Conguration de Xenomai
Patch des source du noyau Linux
patch et source de la suite Xenomai disponible sous forme darchives (tar xf xenomai-xx.x.tbz) ancienne version : patch direct du kernel patch -p1 < ../xenomai/arch/i386/patches/[adeos-patch-for-your-kernel-version] version recentes : script interactif pour le patch sh xenomai/scripts/scripts/prepare-kernel.sh

Conguration/compilation identique au kernel linux


conguration (make menucong) compilation du noyau linux-xenomai (make)

Note
les services de gestion dinterruptions ne sont pas compil es par defaut
Acadmie Navale
` et Systemes ` Systemes temps reel embarques

161

Linux et le temps reel

Installation de Xenomai

Compilation de la suite Xenomai

La suite xenomai
compiler dans le repertoire source de Xenomai : (cd xenomai-xx.x ; ./congure ;make ;make install)

utilitaires de test de xenomai (latency) et information sur les ags de compilation (xeno-cong) ` entetes et bibliotheques pour les programmes du domaine secondaire (userspace) et les differents skin (API Native, POSIX, VXWORKS) documentation

dans /usr/xenomai installation par defaut

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

162

Annexe : API specique Xenomai (taches, timers, INT)

Plan
1

` Partitionnement, Systeme de chiers et Amorc age ` Partition et systeme de chiers Lamorc age (boot) ` Le systeme GNU/Linux Le mode noyau et les periph eriques ` Programmation systeme : modules et pilotes ` Programmation utilisateur et appel systeme Le temps reel mou/dur Temps reel Ordonnancement preemptif Communication et Synchronisation Linux et le temps reel Preemption et latence : Xenomai un Linux temps reel Installation de Xenomai timers, INT) Annexe : API specique Xenomai (taches,
Acadmie Navale
` et Systemes ` Systemes temps reel embarques

163

Annexe : API specique Xenomai (taches, timers, INT)

Gestion des taches et timers


erence Ref : Documentation html inclue avec les sources Gestion des taches
rt rt rt rt rt rt rt task task task task task task task create(RT TASK* task, const char* name, ...) start(RT TASK* task, void(*)(void *cookie) entry, void* cookie) delete(RT TASK* task) join(RT TASK* task) suspend(RT TASK* task) resume(RT TASK* task) set periodic (RT TASK *task, RTIME idate, RTIME period) Creation dune nouvelle tache Demarre la tache TR entry Destruction de la tache Attente n de la tache Mise en attente de la tache Reprendre la tache Rendre la tache periodique (a utiliser avec wait period) Attente de la la prochaine periode de la tache Modie la priorite Installe un gestionnaire de signal ...

rt task wait period () rt task set priority (RT TASK *task, int prio) rt task catch(void(*)(rt sigset t) handler) ...

API temps
rt timer set mode (RTIME nstick) rt timer tsc (void) rt timer spin (RTIME ns) rt timer ns2tsc (SRTIME ns)
Acadmie Navale

Demarre le timer. Argument TM ONE SHOT pour un timer aperiodique et une valeur en ns pour un timer periodique. Retourne la valeur courante du TSC Attente active (charge le CPU) Conversion ns vers nombre de ticks CPU
164

` et Systemes ` Systemes temps reel embarques

Annexe : API specique Xenomai (taches, timers, INT)

API services dinterruption


association dune routine de gestion (ISR) avec une INT lISR doit etre une fonction courte, non-bloquante ee lISR peut lancer une tache differ a ` lentree de lISR et demasqu en sortie interruption masquee ee

rt intr create (RT INTR *intr, const char *name, unsigned irq, rt isr t isr, rt iack t iack, int mode) rt intr create (RT INTR *intr, const char *name, unsigned irq, int mode) rt intr delete (RT INTR *intr) rt intr wait (RT INTR *intr, RTIME timeout) rt intr enable (RT INTR *intr) rt intr disable (RT INTR *intr)

un descripteur dINT associe a ` lISR isr Cree dans lespace kernel Creation dun descripteur dINTdans lespace user pour utilisatoin avec rt intr wait Destruction du descripteur dINT ` la prochaine INT Suspend la tache jusqua Demasque linterruption Masquer linterruption

Acadmie Navale

` et Systemes ` Systemes temps reel embarques

165