Vous êtes sur la page 1sur 30

Rapport de recherche, Applications temps r eel sur smartphones : Etude de lOS Android

Anthony BARTHOLOME COULON Fabien MOUEZA Peter TREGUER Fabien

Universit e de Nantes Ann ee universitaire 2010-2011

Table des mati` eres


Introduction 1 Pr esentation et etude dAndroid 1.1 Pr esentation g en erale dAndroid . . . . . . . . . . . 1.2 Pr esentation technique dAndroid . . . . . . . . . . . 1.3 Installation dAndroid . . . . . . . . . . . . . . . . . 1.3.1 Installation Androidx86 en multiboot . . . . 1.3.2 Installation Androidx86 en machine virtuelle 1.3.3 Utilisation ` a partir dun liveCD . . . . . . . . 1.3.4 Compilation des sources . . . . . . . . . . . . 1.3.5 Sur un t el ephone portable . . . . . . . . . . . 2 Pr esentation du temps r eel, essai sur 2.1 Pr esentation du temps r eel . . . . . 2.2 Notions . . . . . . . . . . . . . . . . 2.2.1 Etat dun processus . . . . . 2.2.2 Temps R eel . . . . . . . . . . 2.3 Etude dAndroid pour le temps r eel . 2.4 Travaux d eja eectu es . . . . . . . . 2.5 Autres pistes de recherches . . . . . Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 4 4 5 6 6 6 6 7 7 8 8 9 9 9 10 11 12 13 13 14 14 14 15 17 17 17 17 18 19 19 22 23 23 23 23 23

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

3 Premi` ere approche de recherche : Modication de lordonnanceur 3.1 Etude de lordonnanceur CFS de Linux . . . . . . . . . . . . . . . . . 3.2 Resultats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1 Notion de t aches . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.2 Th eorie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.3 Pratique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Seconde approche : Application du patch 4.1 Patch RTAI . . . . . . . . . . . . . . . . . 4.2 Etude de larborescence Android . . . . . 4.2.1 bionic . . . . . . . . . . . . . . . . 4.2.2 bootable . . . . . . . . . . . . . . . 4.2.3 build . . . . . . . . . . . . . . . . . 4.2.4 dalvik . . . . . . . . . . . . . . . . 4.2.5 kernel . . . . . . . . . . . . . . . . 4.2.6 development . . . . . . . . . . . . 4.2.7 device . . . . . . . . . . . . . . . . 4.2.8 external . . . . . . . . . . . . . . . 4.2.9 frameworks . . . . . . . . . . . . . 4.2.10 hardware . . . . . . . . . . . . . . RTAI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 pour Linux sur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

4.3

4.2.11 ndk . . 4.2.12 packages 4.2.13 prebuilt 4.2.14 system . 4.2.15 sdk . . . Resultats . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

24 24 24 25 25 26 27

Conclusion

Android

Introduction
Dans le cadre du module Initiation ` a la recherche, nous avons et e aect e` a un sujet de recherche Applications temps r eel sur smartphones : etude de lOS Android. Un des objectifs est d etudier lOS Android du point de vue des garanties temporelles quil peut orir pour statuer sur son ad equation vis-` a-vis des exigences des applications temps r eel. Il sagira notamment didentifer les points de lOS qui limitent actuellement lutilisation dAndroid pour le temps r eel. Pour ce faire, le travail sera r eparti en quatre grandes parties. Il yaura la pr esentation g en erale dAndroid, celle de lordonnancement temps r eel et les deux approches de recherche que nous avons eu durant les quelques mois qui nous ont et e accord es pour ce travail. La premi` ere partie consistera ` a etudier Android. Dans cette partie, il nous faudra d ecouvrir ce quest Android. Quel est son but, et les moyens mis en oeuvre pour les ex ecuter. Il nous faudra comprendre comment fonctionne Android en g en eral dans un premier temps, puis dune mani` ere plus approndie dans un second temps. Cette etude nous faciletera le travail par la suite. Il est plus dur de travailler sur un syst` eme inconnu. Il nous faudra ensuite comprendre ce quest le temps r eel, puis tester si Android est compatible avec des applications temps r eel. Tester egalement les performances dAndroid. Pour eectuer tous ces tests il sera n ecessaire de linstaller sur un ordinateur. Il yaura donc egalement des tutoriaux complets sur linstallation de ce syst` eme initialement pr evu pour des t el ephones sur des architectures x86. Nous verrons egalement ou en est la recherche sur ce domaine. Pour cela, nous etudierons quelques articles traitant du m eme sujet. La troisi` eme partie se basera sur l etude de lordonnanceur de Linux. En eet, Android se basant sur Linux, peut etre sera til possible de modier cette partie pour obtenir ce que lon recherche. Nous expliquerons le pourquoi de cette partie dans le chapitre concernant Android. La quatri` eme et derniere partie, sera une etude plus en d etails de larborescence dAndroid pour ainsi pouvoir utiliser Le patch RTAI. Le patch RTAI initialement pr evu pour Linux, est un patch permettant de modier lordonnanceur de Linux pour le rendre compatible temps r eel. Il est donc possible que ceci r eponde ` a notre probl` eme. Ceci sera davantage expliqu e dans la partie concern ee. Chacune des deux derni` eres parties aura une pr esentation g en erale sur le but recherch e, le d eroulement de la recherche et les r esultats obtenus.

A L TEX

Android

Chapitre 1

Pr esentation et etude dAndroid


1.1 Pr esentation g en erale dAndroid

Android (prononc e Andro de) est un syst` eme dexploitation open source pour smartphones, PDA et terminaux mobiles con cu par Android, une startup rachet ee par Google, et annonc e ociellement le 5 novembre 2007. Dautres types dappareils poss edant ce syst` eme dexploitation existent, par exemple des t el eviseurs et des tablettes [17] Android peut servir ` a de multiples ns. Des centaines de milliers dapplication tournent aujourdhui sur ce quon appelle lAndroid Market. Sur cette plateforme de t el echargement on peut trouver toutes sortes dapplications telles que google maps, youtube, g eolocalisation, gestion des contacts...Il est possible de trouver des applications sur enormement de domaines (horaires de trains, applications darchitecture....). Cest pourquoi Android est aujourdhui en pleine expansion, et gagne chaque jour de nombreux utilisateurs en plus.

Figure 1.1 Evolution dAndroid [11]

A L TEX

Comme le montre le graphique, Android est devenu le leader en tant que syst` eme dexploitation des smartphones. Il est devenu si important quil serait plus que protable que ce syst` eme puisse ex ecuter des applications temps r eel. Nous allons par la suite voir si ce syst` eme peut le g erer.

1.2

Pr esentation technique dAndroid

Android est bas e sur le noyau 2.6 de Linux pour fonctionner. En eet, Android nest pas un syst` eme dexploitation totalement ind ependant. Sur le sch ema suivant, on peut remarquer quAndroid est constitu e de plusieurs couches. La plus basse est le noyau de Linux sous la version 2.6. Cest ce noyau qui g ere les pilotes de base, mais egalement le boot du la machine. Au niveau sup erieur, donc propre a Android nous avons les libraries. Ces libraries g erent toutes les biblioth` eques utilent ` a l ex ecution dAndroid. Dans cette couche, nous pouvons egalement trouver ce qui sappelle Android Runtime, qui contient la machine virtuelle Dalvik sur laquelle repose Android. A un niveau bien sup erieur, nous avons les frameworks, qui permettent ` a tous les d eveloppeurs de cr eer leurs applications. Au niveau le plus haut, nous avons les applications.

Figure 1.2 Architecture dAndroid [15] Maintenant que nous connaissons larchitecture dAndroid, nous allons essayer de linstaller sur un ordinateur.

1.3
1.3.1

Installation dAndroid
Installation Androidx86 en multiboot

Vous pouvez installer Android sur un ordinateur comme tout autre syst` eme dexploitation. Pour ce faire, commencez par t el echarger limage cd sur http ://www.android-x86.org/download. En choisissant de pr ef erence la derni` ere version stable. 2 choix sorent alors ` a nous. soit une installation par CD soit une installation par USB Si vous poss` edez un netbook, la plupart du temps sans lecteur CD il vous est indispensable de prendre la version USB. Sinon choisissez selon ce que vous pr ef erez. Ici nous prenons la version android-x86-1.6-r2.iso. Il vous faut ensuite graver limage CD. Il ne nous reste plus qu` a proc eder ` a une installation classique de syst` eme dexploitation. Red emarrez votre ordinateur avec le CD ou la cl e USB et installer Android comme un linux classique en choisissant votre partition. Au d emarrage suivant vous obtiendrez le choix entre votre (vos) ancien(s) syst` eme(s) et Android.

1.3.2

Installation Androidx86 en machine virtuelle

Linstallation en machine virtuelle vous permet de ne pas avoir ` a choisir au d emarrage sur quel syst` eme vous voulez d emarrer. Vous pourrez lancer Android quand bon vous semble. Lutilisation di ere l eg erement selon linux ou Windows. Dans les deux cas devez commencer par t el echarger limage cd sur http ://www.androidx86.org/download. installation sous linux Sous linux, commencez par installer virtual box. Pour ce faire, ex ecutez la commande sudo apt-get install virtualbox-ose Installation sous Windows Pour installer VirtualBox sous Windows vous devez vous rendre ` a cette adresse http ://www.android-x86.org/download T el echargez la version pour Windows et installez la. Utilisation de VirtualBox VirtualBox est un logiciel de virtualisation totalement gratuit. Une fois t el echarg e et install e, ex ecutez VirtualBox. Cliquez alors sur Nouvelle, dans la fen etre qui souvre faites suivant, Donnez un nom comme Android, choisissez Linux comme systeme et 2.6 comme version. Il est ensuite conseill e dutiliser aux environs de 300 Mio pour la m emoire vive.Faites suivant trois fois en laissant une image de disque de taille variable.Choisissez lemplacement ou stocker le disque virtuel.Puis enn cliquez sur Terminer. Lors du lancement VirtualBox vous demandera de lui donner le chier iso que vous avez pr ec edemment t el echarg e. Vous pouvez maintenant utiliser Android. Si vous voulez utiliser VMWare plutot que virtual box ceci est tout ` a fait possible et la marche ` a suivre est identique.

1.3.3

Utilisation ` a partir dun liveCD

Il est possible dutiliser Android sans forc ement linstaller. Ceci est la m ethode la plus simple mais pas toujours la plus pratique lorsque que lon veut installer des programmes sur Android. Cest pl utot une m ethode pour tester le syst` eme. Pour utiliser un live CD, vous devez le t el echarger ` a cette adresse : http ://www.android-x86.org/downloadhttp ://www.android-x86.org/download Prenez la version live. Il vous faut alors la graver, et vous pouvez directement lutiliser. (Il est aussi possible de le faire par USB au lieu dun CD).

1.3.4

Compilation des sources

Sous Linux, (ici test e sous ubuntu 10.10) il est possible de t el echarger et compiler les sources android. Pour ce faire, il faut se rendre sur le site : source.android.com/source/download.html Il faut alors suivre le tutorial indiqu e. Attention, avant de faire la partie Building the code il faut modier la version de gcc install ee. Si vous poss edez la version 4.3 il ny aura pas de soucis, par contre si vous avez la version 4.4, il faut la downgrader. Pour connaitre la version de gcc, lancer la commande : gcc -v Pour downgrader ex ecutez ces commandes : sudo apt-get install gcc-4.3 g++-4.3 g++-4.3-multilib rm /usr/bin/gcc rm /usr/bin/g++ ln -s /usr/bin/gcc-4.3 /usr/bin/gcc ln -s /usr/bin/g++-4.3 /usr/bin/g++ Vous aurez alors a compiler android par la commande make Nous disposons maintenant dun Android compil e. A moins de disposer dune plateforme compatible Android, le mieux serait de pouvoir lutiliser sur un ordinateur. Nous allons donc utiliser un emulateur pour cela. Nous pouvons trouver cet emulateur dans le sdk fourni par la communaut e Android. Le sdk est t el echargeable ` a cette adresse : http ://developer.android.com/sdk/index.html. Il faut extraire larchive. [8] Puis pour ex ecuter lemulateur : export PATH=$PATH:/chemin dacces au sdk/android-sdk-linux_x86/tools export ANDROID_SOURCE=~/dossier dinstallation dandroid export ANDROID_PRODUCT_OUT=${ANDROID_SOURCE}/out/target/product/generic_x86 export ANDROID_PRODUCT_OUT_BIN=${ANDROID_SOURCE}/out/host/linux-x86/bin export PATH=${PATH}:${ANDROID_PRODUCT_OUT_BIN}:${ANDROID_PRODUCT_OUT}; emulator -system system.img -data userdata.img -ramdisk ramdisk.img A partir dici une fen etre souvre, cette fen etre contient l execution dAndroid que lon a compil e.

1.3.5

Sur un t el ephone portable

D eja sur Android Ceci est LA m ethode la plus simple, si vous d esirez utiliser le syst` eme Android. Si vous poss` edez un t el ephone portable qui tourne d eja sur Android, vous navez rien ` a faire juste lutiliser. En changeant la rom Sur certains t el ephones, il vous est possible de changer votre syst` eme. La plupart des t el ephones compatibles sont ` a la base sous Windows Mobile. Ce changement de rom nest malheureusement pas stable du tout et la moiti e des fonctionnalit es des t el ephones ne sont pas prises en charges.

Android

Chapitre 2

Pr esentation du temps r eel, essai sur Android


2.1 Pr esentation du temps r eel

En une phrase, on parle de temps r eel quand les informations quon traite sont toujours aussi pertinentes par rapport ` a quand elles ont et e emises. En informatique industrielle, on parle dun syst` eme temps r eel lorsque ce syst` eme informatique contr ole (ou pilote) un proc ed e physique ` a une vitesse adapt ee ` a l evolution du proc ed e contr ol e.(sources wikipedia.fr) Les syst` emes en temps r eel doivent prendre en compte des contraintes temporelles. Ces contraintes temporelles sont aussi importantes que le r esultat que le syst` eme renvoi. Le syst` eme ` a des d elais, ces d elais doivent imp erativement etres respect es. Les syst` emes informatiques temps r eel sont aujourdhui pr esents dans de nombreux secteurs dactivit es : dans lindustrie de production par exemple, au travers des syst` emes de contr ole de proc ed e (usines,centrales nucl eaires), dans les salles de march e au travers du traitement des donn ees boursi` eres en temps r eel , dans la eronautique au travers des syst` emes de pilotage embarqu es (avions, satellites), ou encore dans le secteur de la nouvelle economie au travers du besoin, toujours croissant, du traitement et de lacheminement de linformation (vid eo, donn ees, pilotage a distance, r ` ealit e virtuelle, etc.). Le d eveloppement de syst` emes temps r eel n ecessite donc que chacun des el ements du syst` eme soit lui-m eme temps r eel, cest-` a-dire permette de prendre en compte des contraintes temporelles. Un syst` eme dexploitation con cu pour prendre en compte ces contraintes est appel e syst` eme dexploitation temps r eel. [20] Parmis ces syst` emes dexploitation g erant le temps r eel nous avons : Adeos ART Linux ChorusOS DSP/BIOS eCos ELinOS FreeRTOS iRmx ITRON LynxOS MicroC/OS-II Nucleus OS-9 OSE OSEK/VDX pSOS PikeOS QNX RedHawk RSX-11 RT-11 RT-LAB RTAI RTEMS RTLinux ou Real Time Linux RTOS-UH RTX SCEPTRE

A L TEX

SCIOPTA Symbian OS VRTX

VxWorks Windows CE Xenomai

Pouvoir utiliser le temps r eel sous Android pourrait etre dune importance capitale. Le nombre de tablettes tactiles utilisant Android est en constante hausse. A laide de ces tablettes ou de simples t elephones portables, il serait possible de r ealiser les exemples pr ec edemment donn es. Ce nest pas un march e` a ignorer. Il nous faut donc savoir si Android est capable de supporter le temps r eel.

2.2
2.2.1

Notions
Etat dun processus

Un processus peut etre dans di erents etats : D sommeil irr evocable R ex ecution S en sommeil mais red emarrable, notamment par le scheduler T arr et e X mort Z zombie, mort mais pas accus e au parent cf 2.1

Figure 2.1 Etats dun processus et principales transitions. On voit que certains etats sont des etats puits et quon ne peut en sortir par le simple scheduler : gestion manuelle par red emarrage ou kill -9 Et lordonnancement intervient lors du passage dun etat ` a lautre.

2.2.2
Priorit e

Temps R eel

Le probl` eme avec lordonnanceur CFS Linux est quil nest pas temps r eel, au sens que les t aches sont dot ees dune priorit e dynamique et que le but du temps r eel de base est davoir des t aches prioritaires une bonne fois pour

toute. Hors CFS essaie de r epartir le m eme temps ` a toutes t aches, si bien quune t ache qui prend le processeur passe dune faible priorit e` a une haute priorit e, et une fois quelle a utilis e son timeslice, elle devient moins prioritaire : on voit donc que la priorit e dynamique change et cest le principe intrins` eque dune t ache sous CFS avec la convention dynamicpriority = max(100, min(staticpriority bonus + 5, 139)) cf [14] p260 Au niveau du code, on le voit dans la fonction recalc task prio( ) Plusieurs temps r eels Certes, le noyau Linux dAndroid g` ere bien du temps r eel avec SCHED FIFO SCHED RR mais ce nest pas du vrai temps r eel car [14] p312 : e FCFS(First Come First Served)premier rendu premier servi SCHED FIFO bas SCHED RR qui assure une pr eemption qu` a intervales r eguliers et non pas quelconques De plus, il ne faut pas confondre temps r eel mou qui tol` ere une certaine variation du temps de latence temps r eel pur qui ne soure daucun retard

2.3

Etude dAndroid pour le temps r eel

Nous allons maintenant essayer de voir si Andro d fonctionne en temps r eel. Pour cela nous allons nous appuyer sur quelques articles de recherche. Le premier [12] est un article testant Android sur le temps r eel. Pour ce faire, des tests sur la Texas Instrument Zoom II Mobile d evelopment kit ont et es r ealis es. Ces tests ont pour but de d eterminer si Android est capable de respecter des contraintes temporelles. Pour faire ces tests, ils ont cr eer deux applications la premi` ere partie est lapplication Test qui va ex ecuter des t aches selon des temps donn es, le test permettra de savoir si des violations d ech eances ont eu lieu. Le test donnera egalement le nombre de ces violations. la deuxi` eme partie est lapplication Loading qui va faire tourner le CPU et les autres I/O ressources. Ceci an de faire saturer le syst` eme. Cette application a trois etats, un etat eteint, ou lon test que les t aches sans rien dautre. Un etat normal ou les ressources sont utilis ees moyennement, et un etat fort ou un maximum de ressources est utilis e. Les r esultats sont alors ecrits dans des chiers textes. voici par exemple le diagramme obtenu lors dun loading fort

Figure 2.2 d elais

Nous voyons sur ce graphique plusieurs choses. Le S de la l egende est pour Slippage, qui est le temps dattente entre le moment ou lon demande d ex ecuter la t ache et le moment ou elle s ex ecute r eellement. Nous remarquons que ce temps est de plus en plus long. De plus, le Slippage est de plus en plus fr equent. Il en ressort plusieurs probl` emes. Il ya un temps de latence dans le noyau de Linux, mais egalement un autre temps de latence pour passer la main a ` la machine virtuelle dAndroid Dalvik. Il ya lors des tests des temps de r eponse trop important. Si nous utilisons Android pour des applications ` a forte demande temps r eel, nous voyons bien quAndroid nest pas capable de le g erer.Android ne semble donc pas adapt e par d efaut ` a du temps r eel.

2.4

Travaux d eja eectu es

Nous ne sommes certainement pas les premiers ` a nous pencher sur ce probl` eme. Si nous voulons vraiment avancer, il nous faut commencer par regarder ou en est la recherche sur ce domaine aujourdhui. Une entreprise Esol ` a lair de travailler sur ce domaine sp eciquement. Apr` es lecture de larticle quils ont publi e [13], nous pouvons voir quils nont pas fait que sint erresser au probl` eme. Ils ont trouv e une solution bien ` a eux. En eet, Android repose sur Linux 2.6 qui ` a la base nest pas un syst` eme temps r eel. Esol a donc d ecid e denlever Linux pour mettre leur propre syst` eme dexploitation. Le kernel de Linux ` a donc et e remplac e par eT-Kernel Adaptor for Android. voici un sch ema repr esentant leur produit nal :

Figure 2.3 architecture esol Cette solution semble tr` es ecace, dapr` es ce quils peuvent ecrire. Cependant, cette solution nest pas libre. De plus, ils ne travaillent que sur leurs propres mat eriel, ce nest pas une solution temps r eel grand public. Nous gardons quand m eme leur id ee de modier le kernel pour obtenir du temps r eel, m eme si nous ne developperons pas comme eux notre propre kernel. Nous pouvons pl utot envisager une modication du noyau de Linux, sous forme de patch. Cette solution nous semble d eja plus envisageable.

2.5

Autres pistes de recherches

A partir du dernier article qui nous etait fourni [4]. Nous en apprenons davantage sur lordonnanceur de Linux. Ce qui sera certainement une piste ` a etudier plus en d etails. Nous expliquerons le fonctionnement de lordonnanceur dans la partie suivante. Une des possibilit es d ecrite est donc de modier lordonnanceur de Linux, pour quil accepte le temps r eel, cela rejoint un peu le point pr ec edent, sans etre tout ` a fait pareil. Ici on modierai directement le code de lordonnanceur, il nest pas question de patch. Ici nous chercherons donc comment et ou est impl ement e lordonnancement pour le modier. Une autre solution plus avantageuse serait de modier egalement la VM Dalvik. Dans la partie pr ec edente, on a vu quAndroid reposait sur Linux au niveau le plus bas. Au niveau juste au dessus nous avons la couche runtime avec ` a lint erieur la VM Dalvik. Une solution pourrait etre de faire en sorte que cette machine virtuelle accepte dordonnancer du temps r eel. Nous expliquons davantage lutilit e de Dalvik et son fonctionnement dans la partie d ecrivant larborescence dAndroid. En bref, avoir un Linux temps r eel et une machine virtuelle temps r eelle donnerait une performance bien plus elev ee. Pour rendre la VM Dalvik temps r eelle, on peut l etendre en utilisant RTSJ (Real-Time Specications for Java). Dalvik etant ecrite en JAVA, on peut utiliser cette extension. Le probl` eme majeur reste donc de modier lordonnanceur CFS de Linux. Nous voyons donc que deux approches se d egagent aux vues des recherches qui se font d eja. La premi` ere serait de modier Linux ` a la main cest ` a dire aller chercher dans le noyau Linux ou se passe lordonnancement, et le modier pour le rendre temps r eel. La deuxi` eme approche serait dessayer de regarder les solutions qui existent d eja pour essayer de patcher Linux pour le rendre temps r eel. Nous voyons quand m eme que les deux solutions reposent sur le m eme principe modier Linux et non (ou seulement en partie) Android. Dans les grandes lignes, pour rendre le noyau temps r eel, on devra sattacher ` a: sensibilit e aux interruptions en noyau, ISR attention au ph enom` ene dinversion de priorit e ressources g erees par mutex plus performantes que les verrous tournants unit es de temps nes

Android

Chapitre 3

Premi` ere approche de recherche : Modication de lordonnanceur


3.1 Etude de lordonnanceur CFS de Linux

Android 2.2 Froyo est bas e sur un noyau linux 2.6.35.7. Depuis la version 2.6.23 du noyau on utilise lodonnanceur Completly Fair Scheduler (ou CFS). Il est bas e sur un arbre binaire de recherche rouge-noir. Le principe est simple : on trie les processus en fonction du temps pass e en ex ecution sur le processeur et on les stock dans cet arbre. Le processus qui aura pass e le plus de temps en ex ecution sera tout ` a droite de larbre. Ainsi lordonnanceur choisi toujours la tache la plus ` a gauche. La tache est ensuite r eins er ee dans larbre et gr ace ` a aux propri et es des arbres rouge-noire il reste ` a peu pr` es equilibr e.

Figure 3.1 Arbre de priorit e des taches Lordonnanceur CFS est impl ement e dans kernel/kernel/sched fair.c Les fonctions importantes de lordonnanceur sont d enie dans la structure sched class. enqueue task(...) est la m ethode qui ajoute les taches dans larbre rouge-noire. 13
A L TEX

dequeue task(...) supprime une tache. pick next task(...) choisit la prochaine tache ` a etre ex ecut ee. ethode qui peut faire les pr eemptions. Elle est appel ee par scheduler tick(void) elle m eme task tick(...) est la m appel ee en boucle par le timer.

3.2

Resultats

Quand on veut rajout e la gestion des taches temps r eel dans lordonnanceur CFS on saper coit quil y a une incompatibilit e avec la structure utilis e. En eet la gestion des priorit es est faite par un arbre qui trie les taches par temps dex ecution. Cependant la priorit e des taches temps r eel nest pas bas e sur le m eme crit` ere. Si par exemple on veut avoir un ordonnancement de type EDF on ne peut pas avoir un arbre qui trie les taches ` a la fois par deadline et par temps dex ecution. La prise en compte des taches temps r eel par lordonnanceur de linux demande donc une refonte de sa structure. En se contentant dun simple RT, comme RM, il faut quand m eme [3] respect des ech eances temporelles bonne gestion de la mont ee en charge car jusqu ` a un seuil critique, la surcharge ne doit pas etre pr ejudiciable au respect des ech eances si un pool de t aches doit etre trait e, le syst` eme doit dire ` a lavance si cest possible ou pas avant de se lancer dans des calculs, qui peuvent engager de gros risques : pr edictibilit e le syst` eme doit etre robuste et une t ache ne doit pas mettre en p eril lint egrit e du syst` eme. pour etre facilement maintenable sans conna tre parfaitement le syst` eme tout entier, le paradigme doit etre bas e sur le modulaire. Le noyau Android est-il CFS donc complexit e O(1) avec le noyau 2.6 ? En eet, pour respecter la pr edictibilit e, un temps constant est tout indiqu e, m eme si pour conna tre cette donn ee sp ecique, li ee au mat eriel qui interpr` ete le code compil e du scheduler par exemple, il faut faire des mesures exp erimentales. une connaissance parfaite du mat eriel(DMA,processeur) doit etre requise, ce qui nest jamais le cas dans la r ealit e.Certes ils permettent des acc el erations, mais sont une source dincertitude dommageable en situation critique. une autre source dindeterminisme est le comportement du gestionnaire de t ache lui-m eme : gestion des ressources,etc. Pour etre s ur de ne pas etre ennuy e par des al eas, on se contentera de simples RM sans ressources. Il vient : comment lancer la gestion de telle t ache ? Comme sous GNU Linux, on peut lancer des t aches par un premier processus init. Et les red emarrages ne font pas de mal ` a la machine et sont rapides(voir ultra rapide : red emarage ` a la vol ee,sans boot) car on est en emulation.

3.2.1

Notion de t aches

Ce sont les entit es qui seront trait ees par le scheduler. On peut aussi dire processus ou par abus de langage, d emons. La petite di erence vient quen principe un d emon reste toujours en arri` ere plan et ninterragit avec lutilisateur quindirectement ; on dit aussi des services(voire processus batch [5] p256), dont la sant e est primordiale, cest pourquoi ils sont eux-m emes g er es par des super-serveurs (inetd,xinetd qui g` erent notamments les int erruptions par red emarrage automatique en cas de bug par exemple). Si on regarde plus pr ecis ement un processus, cest la donn ee dun descripteur de processus qui permettent au scheduler le g erer convenablement. [14] indique quil contient di erents champs : state, thread info, usage ags, run list tasks, mm, real parent parent, tty, thread, fs, les, signal pending.

3.2.2

Th eorie

Par une simple simulation hors-ligne des valeurs calcul ees par le ordonnanceur.

3.2.3

Pratique

En introduidant des m etriques (ps,graphique, moniteur syst` eme(notion de monitor ?)) pendant que le scheduler est en situation.Comme le chat de Schr odinger, ca change l eg` erement le comportement, mais peut etre consid er e comme n egligeable, dautant plus si ces m etriques sont prises en compte par le scheduler et bien trait ees(id eee de r ecursion : le ordonnanceur doit traiter une entit e qui le mesure lui-m eme ?), et si les vraies t aches montent en charge, leur proportion de prise de processeur augmente(seuil critique ?). Protocole Dans la vulgarisation scientique, les r esultats ne sont pas envoy es directement ` a l ecran ` a cause de gros temps de latence. Des solution sont donc des sorties des mesures de temps de changement d etats haut ou bas dune t aches par des ports parall` eles ; ou par des sorties chiers pour analyse ` a postiori. R esultats attendus, comparaisons Les plus simples comparaisons sont de voir la di erence pour un syst` eme normal et temps r eel entre syst` eme charg e 3.2 ou pas 3.3 . La charge peut etre apport ee par des top rapproch es top -d 0

Figure 3.2 Di erence pour un syst` eme non temps r eel entre non charg e et charg e

Figure 3.3 Di erence pour un syst` eme temps r eel entre non charg e et charg e

Android

Chapitre 4

Seconde approche : Application du patch RTAI pour Linux sur Android


RTAI est une extension libre de Linux. Cette extension permet au syst` eme de g erer des t aches temps r eelles. RTAI fonctionne sous la forme dun patch ` a appliquer directement au noyau de Linux. Etant donn e quAndroid est bas e sur un noyau Linux, nous allons par la suite essayer de patcher ce noyau, pour quAndroid tourne en temps r eel.

4.1

Patch RTAI

Pour comprendre comment fonctionne RTAI, nous avons commenc e par lessayer sur un Linux classique. Nous avons r ecup er e un kernel sur kernel.org. Nous navons pas pris nimporte lequel, nous avons pris le 2.6.35.7. Ce kernel est celui sur lequel se repose Android 2.3 auquel nous avons pr ec edemment r ecup er e les sources. Il nous faut maintenant r ecup erer la version de RTAI qui permet de patcher ce kernel. Apr` es quelques recherches il sagit de RTAI 3.8.1. Nous la t el echargeons donc sur www.rtai.org. Pour appliquer le patch nous avons suivi le tutoriel http ://cedric.cnam.fr/ bouzefra/installation rtai.pdf [7] Ce tutoriel expose point par point comment appliquer RTAI sur un noyau Linux dont on dispose des sources. Ce tutoriel est pour une ancienne version de RTAI et de Linux mais la proc` edure nayant pas chang e, cela ne pose pas de soucis. On obtient un chier patch.txt qui indique que le patch sest correctement install e. Ce chier patch est donn e en annexe. Si on applique ce patch ` a larborescence Android, nous obtenons un chier patch.txt remplis derreurs. Il nous faut nous placer dans le dossier kernel pris de Linux, et la le patch se d eroule correctement egalement. Nous obtenons ainsi un Android temps r eel. Nous reste maintenant ` a le compiler. Pour ce faire, nous suivons la proc` edure d ecrite dans le tutorial pr ec edemment donn e. Nous obtenons ainsi un Android compil e bas e sur un noyau temps r eel. Cependant, lorsque nous l executons, nous nobtenons quun ecran noir. Le patch RTAI a du modier des el ements quAndroid ` a besoin. Il nous faut maintenant trouver ce qui utilise les chiers modi es par RTAI.

4.2
4.2.1

Etude de larborescence Android


bionic

Ce terme fait penser aux extensions m ecaniques et robotiques de lHomme. Y-a-il un rapport. libc libdl libm libstdc++ libthread db linker : ce sont principalement des biblioth` eques pour d evelopper en C. Il ya les librairies partag ees, dynamique,math ematique... Il ya egalement du C++, de la gestion de parall` elisme, de lassemblage en ex ecutable ELF(donc compatible Linux). Bionic semble etre un nom quelconque, mais marque la sp ecicit e par rapport aux biblioth` eques POSIX GNU Linux : en [8]

17

A L TEX

4.2.2

bootable

Notion de d emarrage sous Linux En fait le d emarrage est une succession de prise en charge de mat eriel et codes. Cette prise en charge est de plus en plus importante au cours de la session car la reconnaissance est incr ementale et est bas ee sur la capacit e du cha non pr ec edent [16]. Pour nous, le d emarrage est tr` es important car cest par lui quon pourra introduire notre textbfscheduler qui fonctionnera alors en autonome. Ainsi, ` a lappui sur le bouton ON dun PC, on passe par le mode R eel du processeur x86 [16] [5] : le POST qui teste les di erents mat eriels le bootstrapping avec entre autres le BIOS( Basic Input/Output System) qui est une ROM qui teste le mat eriel non volatile comme les disques durs, carte PCI, lecteur de CD-ROM qui se trouvent ` a des adresses pr ed enies. Selon les mat eriels bootables et lordre de nos pr ef erences, il donne la main au CD-ROM ou ` a des gestionnaires de d emarrage de second niveau : GRUB, LILO, etc, selon les secteurs de boot(446octets) du Master Boot Record (MBR) en d ebut de disque,suivi par notamment 64 pour une table de 4 partitions primaires maximum. GRUB, LILO Ce sont les d emarreurs des disques durs impl ementant GNU Linux. Ils chargent surtout les OS correspondant, et leur donnent la main : que ce soient des vrais syst` emes avec noyau( avec certaines options) ou de simples programmes. Ils donnent eux-m eme la main au noyau en mode r eel o` u on a acc` es qu` a 1MB de m emoire non prot eg ee, o` u evidemment ce nest pas le vrai noyau qui est charg e On passe alors au mode prot eg e qui lance : le vrai noyau et des fonctions processeurs plus etendues comme la pagination. Le noyau devant sappliquer au contenu dun disque, pour pouvoir lire ses donn ees(en EXT2,3,4,etc), il lance les premiers drivers disques sp eciques ` a la partition pour pouvoir la monter, gr ace ` a initrd ou initramfs(la di erence est une simple optimisation de la m emoire en taille, fragmentation, ind ependance ` a un autre syst` eme de chier). init(), le p` ere de tous les processus. Cest lui qui lance les processus utilisateurs et les d emons : consoles, login. Apr` es, pendant la session, le processeur peut passer : en mode noyau : il a alors tous les droits(processeur, noayau), mais doit avoir les droits root, car passer dans ce mode peut planter la machine, il faut donc des gens qui savent ce quils font(codeurs du noyau, ou root). Autre grand avantage : ce code peut pr eempter dautre code. ou mode utilisateur : mode s ecuris e o` u la machine nest pas en p eril. cf 4.1

Figure 4.1 S equence de d emarrage sous Linux

O` u intervient le scheduler ? [5]p257 : alors quon aurait pu croire que c a allait etre une sorte de super processus ` a la priorit e dynamique maximale 100 ([14] p260), ce n est pas un processus mais une simple fonction qui est appel ee lors de chaque laps de temps slice, et qui traite les di erentes listes par priorit es. Sous Android En gravant les CDs sous Linux, bootable fait plut ot penser ` a la section damor cage des CDs pour pouvoir d emarrer une distribution au d emarrage de lordinateur(POST) i.e. Power On Self Test). bootablenest pas pr esent dans larbre Linux. En regardant la structure sous Android, on voit bootloader diskinstaller recovery. Donc, notre premi` ere impression se voit conrm ee. Sur Linux, pour graver un CD-ROM, on utilise mkisofs et cdrecord , et ce qui le rend bootable : ? ?. De prime abord, on peut se demander ce que les CD viennent faire l` a, sachant que les appareils Android sont soit des ` cela, on r t el ephones, soit des tablettes sans fonction de gravure. A epond que comme l emulation pr econis ee par nous ` a partir dun CD, si cette proc edure marche, linstallation sur nimporte quel CD est cens ee fonctionner de fait sur nimporte quelle machine PC ; dautre part, cest peut- etre aussi du code emprunt e` a Linux pour une adoption de masse pour les machines sous Android. Dautre part, si on nenvisage pas encore beaucoup de PC sous Android, noublions pas aussi que les cl es USB autres cartes Flash sont elles aussi bootables et plus envisageables car les tablettes proposent souvent des ports d edi es.

4.2.3

build

La cr eation de quoi ? Du noyau, comme xcong ;make ;make install pour installer un noyau et ses modules ? Ce module se compose de core libs target tools. core ne contient presque que des .mk, ce sont donc des directices de compilation libs target d esigne les cibles sur lesquelles intaller Android, avec board/generic pour des mat eriels generiques, sans noyau, trait es par emulation, permetant une prise en charge de purs syst` emes user, ces produits sont pour le moins exotiques(cf README.txt). tools : di erent utilitaires (bizarre le traitement des progragrammes Java par des .mk dans beginverbatimbuild/tools/droiddoc/src endverbatimau lieu de Ant). Par qui sont utilis es ces utilitaires ?

4.2.4

dalvik

G en eralit es Dalvik est une machine virtuelle bas ee sur les registres qui g` ere la plate-forme Java sur les appareils mobiles Android. Dalvik a et e ecrit par Dan Bornstein qui la nomm e dapr` es le village de p echeurs de Dalv k en Islande [19]. Cette VM permet dex ecuter les applications qui ont et e converties en un ex ecutable compact Dalvik (.dex), un format adapt e aux syst` emes limit es en termes de m emoire et de vitesse du processeur. On trouve donc Android sur des appareils le plus souvent mobiles comme un t el ephone portable, une tablette num erique, etc... bref la plupart des appareils qui n ecessitent un OS embarqu e et poss edant peu de ressources. Une fois les application Android compil ees en chiers .dex elles sont automatiquement zipp es en chier .apk (Android Package) [6]. Les classes compil ees en .dex deux fois moins lourdes quun chier jar qui aurait et e g en er e pour une machine virtuelle java quelconque [1]. On a g en eralement plusieurs classes java dans un seul chier DEX. Le chiers DEx procurent une tr` es bonne optimisation car durant la g en eration dun chier .dex on a recours ` a des r ep etitions minimale, des associatiosn par type et des labels implicites. Pendant linstallation chaque chier DEX est v eri e et les optimisations telles que le byte-swapping, bytepadding, la liaison statique et les m ethodes in-line sont eectu ees pour minimiser l evaluation du temps dex ecution et eviter les violations de s ecurit e. Larticle cit e pr ec edemment est un extrait du livre de Sayed Hashimi, Satya Komatineni et Dave MacLean, Pro Android 2 [2]. On trouve dans cet article un exemple du gain despace que procure la Dalvik VM. Pour un simple navigateur Internet qui equivaut ` a 500Ko en chier .jar avec une VM java, equivaut ` a 200Ko avec les chiers .dex et la machine virtuelle Dalvik.

La Dalvik VM utilisant les registres et non une pile, diminue ainsi le temps dex ecutions de 30% gr ace ` a une diminution de 30% du nombre dinstructions par rapport ` a une utilisation dans une VM comme la Java VM. Cette diminution du nombre dinstructions implique donc une diminution des acc` es en m emoire. Ce syst` eme du chiers DEX ` a un impacte direct sur loptimisation de la m emoire, de la gestion de la batterie et sur la fr equence du CPU. En revenche on ne peut pas utiliser le Java byte-code avec Android, on est oblig e de passer par les chiers de classes qui seront donc transform es en chiers DEX. On trouvera la comparaison entre un chier .jar et un chier .dex sur la gure 4.2 [9].

Figure 4.2 jar vs. .apk Voici les di erents dossiers que lon peut trouver dans le dossier dalvik : (liste non-exhaustive) dalvikvm : appel des lignes de commande de la machine virtuelle Dalvik dexdump : imitation dun objdump dexlist : liste toutes les m ethodes de toutes les classes concr` etes dans un ou plusieurs chiers .dex dexopt : optimisation des commande DEX et v erication des entr ees dvz : g` ere les instances de la VM libcore : toutes les librairies dont dalvik a besoin libdex : librairies en relation avec le format .dex libnativehelper : fonctions daide pour les classes dAndroid vm : codes de la machine virtuelle Dalvik D emarrage La machine virtuelle Dalvik est capable de faire tourner plusieurs processus ind ependants ayant chacun une adresse et une m emoire s epar ees. Durant le d emarrage dun dispositif ou p eriph erique un processus est charg e de d emarrer la machine virtuelle elle-m eme. On dispose dun processus de la VM nomm e Zygote responsable de linitialisation et du chargement des classes Android les plus utilis ees par la plus grande partie des applications. Ce zygote ouvre un socket qui accepte les commandes dune application quand une nouvelle application Android est d emarr ee. Le zygote cr ee un ls qui sera cette application. Les classes que lon a charg e dans le Zygote vont servir ` a cette application et sont partag ees avec toutes les applications lles du Zygote. On chargera dans ce ls les classes propres ` a lui-m eme. On peut voir

ce syst` eme sur limage 4.3. Une telle approche permet d economiser de la RAM et et daugmenter la rapidit e de d emarrage des di erentes applications. On ne peut pas utiliser le syst` eme de temps r eel de Linux dans la machine virtuelle Dalvik.

Figure 4.3 Zygote Heap (Tas)

Garbage Collector Passons maintenant ` a la partie Garbage Collector de la machine virtuelle Dalvik. Les di erentes threads sarr etent eux-m emes ou sont suspendus par le Garbage Collector (GC) ou un debugger. La machine virtuelle g` ere tous les threads cr e es gr ace ` a une structure interne du style dune map. Le GC soccupe de la gestion de la m emoire dynamique en supprimant ou d epla cant les donn ees qui ne sont plus utilis ees par les applications. Tous les processus ont leur propre tas et un tas partag e avec les di erents processus ls du Zygote (cf 4.3). Chaque tas est g er e s epar ement par le GC. Les donn ees contenues dans le tas du Zygote ne sont bien entendu pas supprim ees par le GC car elles sont partag ees entre di erents processus ls, la gestion de la m emoire ne peut quen etre am elior ee. Le GC utilise lalgorithme mark and sweep. Lalgorithme Mark and Sweep est probablement le plus simple et le plus connu. Dans son principe, lorsque le GC se d eclenche, il part des r ef erences racines de lapplication et suit r ecursivement toutes les r ef erences quil rencontre. Chaque objet ainsi visit e est marqu e, il est eectivement accessible au programme, et ne doit en aucun cas etre supprim e. Dans un deuxi` eme temps, le GC joue le r ole du balayeur (op eration sweep), il parcourt lin eairement le tas, objet par objet, et supprime tout objet qui nest pas marqu e et r ecup` ere la m emoire qui lui etait allou ee. Bien entendu, il eace egalement les marques des objets survivants en pr evision de la prochaine collecte [10]. On peut voir le m ecanisme sur la gure 4.4. Il est evident que la collecte des objets (du moins la premi` ere etape mark) ne peut seectuer que si tous les threads applicatifs sont arr et es. Donc lorsque le GC se lance, lapplication sinterrompt compl` etement. Lalgorithme Mark and Sweep est tr` es simple, mais pose un certain nombre de probl` emes : son temps dex ecution est proportionnel ` a la taille du tas il laisse le tas fragment e il fonctionne mal si les objets nont pas une taille globalement uniforme Voil` a pour la partie GC de dalvik, on va maintenant voir si la VM g` ere lordonnancement temps-r eel sous Android. La Dalvik VM g` ere-t-elle lordonnancement sous Android ? La machine virtuelle Dalvik ne supportant pas la compilation Just-in-Time (JIT) pour linstant (en cours de pr eparation pour une prochaine version), toute la partie ordonnancement est trait ee par lordonnanceur du noyau Linux dAndroid ainsi que la gestion de la m emoire et la gestion et la s ecurit e des processus. Pour information la compilation JIT, plus commun ement appel ee compilation ` a la vol ee en fran cais, est une technique visant ` a am eliorer la performance de syst` emes bytecode-compil es par la traduction de bytecode en code

Figure 4.4 Algorithme Mark & Sweep machine natif au moment de lex ecution. La compilation ` a la vol ee se base sur deux anciennes id ees : la compilation de bytecode et la compilation dynamique [18].

4.2.5

kernel

Nous nallons pas trop nous etendre sur le noyau dAndroid car cest un simple noyau Linux quand celui-ci nest pas patch e. Nous parlerons donc simplement de lordonanceur quutilise le noyau Linux. Ce r epertoire est vraiment le moins d epaysant pour ceux habitu es ` a Linux car on y trouve les m emes notions, mais pas forc ement organis ees pareil. Et cest bien le plus int eressant car londonnancement a justement trait au noyau. On y trouve : arch : qui contient les scripts et sources r epartis par architectures au nombre de 23 block : contient les utilitaires bloc dont ioctl, elevator, scheduler dentr ees/sorties. crypto : contients des utilitaires de g en eration de cl e, nombres al eatoires Documentation : vraiment une mine dor et constitue un tr` es bon d epart pour comprendre le noyau. M eme une possibilit e de g en erer une documentation hypertexte. drivers : les di erents modules noyau allant de la gestion d energie ACPI, aux drivers de disques durs, LEDs rmware : contient plus danciens softs rattacch es ` a danciennes cartes graphiques, etc. Les extensions sont en .ihxx fs : on y voit ce qui fait la richesse imbattable de Linux : sa compatibilit e avec ici 71 syst` emes de chiers ! On y voit aussi les utilitaires li ees : ecriture, lecture, ouverture,etc. include : les di erentes structures du noyau. init : pour le d emarrage : calibration dunit es de temps calibr ees ` a la vitesse processeur ipc : InterProcessus Communication avec la notion denvois de messages entre t aches, dont les s emaphores pour les acc` es concurrents aux ressources. kernel : s emaphores, mutex,les 2 ordonnanceurs normal et rt, workqueues pour ordonner les t aches lib : des librairies utilitaires : compression,tris, appel syst` eme, les kobjects(certains champs noyaux sont encapsul es), le contr ole dint egrit e CRC. mm : vient de Memory Management. On y g` ere les probl` emes de m emoires avec une transparence des read, write par des translations daddresses, memoire virtuelle, etc. net : g` ere les protocoles r eseau : AX25, bluetooth, IPV4/6, rewall qui abien une base dans le noyau et non pas une application ` a 100%, etc samples : des exemples de modules comme un controle de tas, etc scripts : programmes qui rendent la lecture de traces dappels syst` emes,etc, plus agr eables.

security : les surcouches de contr ole bas es sur MAC(Mandatory Access Control)comme Tomoya, Smack, comme le sont SELinux pour Fedora ou AppArmor sous Suse. Gr ace ` a des politiques pr ed enies. C a permet une int egrit e des binaires et autres m eme apr` es quun attaquant ait acquis des acc` es root. sound : pour avoir des serveurs de sons, des mixeurs, MIDI, etc. tools : di erents codes pour tester le bon comportement de di erents aspects : gestion de touches, processeur,etc usr : acc` es ` a des utilitaires de cr eation de initramfs pour le d emararage, avec possibilit e de compresser larchive virt : pour la virtualisation noyau kvm (concurrent de Virtualbox) : consomme peu, mais plus gourmand pour l emulation graphique. Ordonnanceur

4.2.6 4.2.7

development device

Ce dossier correspond ` a tous les appareils qui sont support es par la version dAndroid que lon est entrain de traiter. Par exemple dans notre cas nous utilisons une version qui poss` ede les dossiers suivants : asus : eeepc et laptops dell : sparta un pc avec ecran tactil r eversible tegatech : tegav2 un Tablet PC viewsonic : viewpad10 un TabletPC viliv : viliv s5 un Tablet PC vm On voit que tous ces appareil sont mobiles et pour la plupart ont de faibles resources.

4.2.8

external

Ce dossier contient tous les librairies externes ` a Linux. Celles qui sont utiles pour au bon d eroulement dAndroid. Nous avons par exemple, la librairie Guava de Google qui permet lutilisation de MultiMap, BiMap, la simplication en g en eral des collections ou des Splitter. Il ya egalement la librairie libXML et XMLwriter pour lire et ecrire les chiers xml. Junit pour les tests unitaires. LibPng pour les chiers dimage .PNG. Jpeg pour les chiers jpeg. Bison et Flex pour g en erer du code. La librairie Bzip pour g erer la compression de donn ees. Webkit pour g erer le navigateur internet. En bref, ce dossier contient toutes les librairies utiles. Lordonnanceur que nous voulons modier n etant pas une librairie, ce dossier ne nous est pas r eellement utile pour ce que nous voulons faire.

4.2.9

frameworks

Comme son nom lindique ce dossier contient les cadres de travails. Ici nous pouvons remarquer la pr esence de chiers ayant un rapport avec lordonnancement. Notamment les chiers OperationScheduler.java se trouvant dans frameworks/ex/common/java/com/android/common. Cependant nous ne tenons pas vraiment en compte ces chiers, etant donn e que rtai ne les utilise pas. Nous gardons cependant la trace au cas ou il faudrait modier le patch RTAI pour prendre en compte ces chiers. Le reste des chiers na pas vraiment dutilit e du point de vue ordonnancement. Il ne sagit que des frameworks pour g erer le t el ephone, tels que les modules utilisant le wi, opengl ou autres.

4.2.10

hardware

Ce dossier na pas vraiment dint eret au niveau du temps r eel. Cest pourquoi nous naurons quune approche partielle du contenu du dossier. Ce dossier est compos e de plusieurs dossiers : alsa sound libhardware libhardware legacy

libsensors ril alsa sound Ce dossier contient tous les chiers en rapport avec le son mat eriel. A savoir quil est possible dutiliser comme mat eriel de sortie audio : Earpiece ou ecouteurs en fran cais speaker, les hauts parleurs Bluetooth mat eriel en bluetooth Headset casque Bluetooth-A2DP : Advanced Audio Distribution Prole (A2DP) prol de distribution audio avanc ee. libhardware Ce dossier contient les libs utiles au r epertoire suivant libhardware legacy. libhardware legacy Ce dossier contient tous les chiers en rapport avec du mat eriel tels que le gps, la batterie, la gestion du wi ... tout sauf laudio et laccelerometre. libsensors Dans ce dossier se trouve un unique chier. Celui ci permet de g erer lacc el erom` etre. Laccelerom` etre permet de Un acc el erom` etre est un capteur qui, x e` a un mobile ou tout autre objet, permet de mesurer lacc el eration lin eaire de ce dernier. On parle encore dacc el erom` etre m eme sil sagit en fait de 3 acc el erom` etres qui calculent les 3 acc el erations lin eaires selon 3 axes orthogonaux. sources wikipedia.fr Ce dernier permet de d etecter lorsque le t elephone change daxe. ril Androids Radio Interface Layer (RIL) permet une couche dabstraction entre les services de t el ephonie et le mat eriel radio. Cest cette partie qui permet de pouvoir t el ephoner.

4.2.11

ndk

NDK permet aux d eveloppeur dint egrer du code natif (du C ou C++ par exemple) dans leur applications android qui sont elles m eme d evellop ees en Java. Cel` a permet davoir des portions de codes performantes au sein dune application tournant sur la machine virtuelle Dalvik.

4.2.12

packages

Ce dossier contient des sources Java. apps : Applications principales dandroid comme telles que le t el ephone ou le calendrier. experimental : Applications de log de bugs, de statistiques et de performances. inputmethods : Gestion du clavier providers wallpapers

4.2.13

prebuilt

Ce dossier contient des outils d ej` a pr ecompil es. Ils sont regroup es en sous dossiers suivant larchitecture pour laquelle ils sont compil es (arm, linux, windows, etc ...).

4.2.14

system

Ce dossier est compos e de plusieurs dossiers : bluetooth core extras netd vold bluetooth Comme son nom lindique ce dossier soccupe de la partie bluetooth dAndroid. Cest ici quest d eni la cr eation et lutilisation du bluetooth pour connecter divers appareils. Inutile daller plus loin ce nest pas ce que nous recherchons. core Ce dossier contient les dierentes commandes dun systeme unix, ce qui a donc et e retir e du noyau Linux pour mettre ici. Nous avons lensemble des d enitions des commandes telles que mkdir ls cd.... Ainsi que diverses librairies. Ceci a donc et e retir e du noyau de Linux il nous faut donc v erier si RTAI utilisait ces chiers pour le patch. Il nous faut donc garder ces chiers. extras Ce dossier contient plusieurs types de sources. Aucune en rapport avec lordonnancement. Nous avons seulement un chier schedtest.c, mais cest un chier de test comme son nom lindique. Il nest pas n ecessaire de le changer en priorit e. Le dossier extras contient tous les chiers de test des di erents modules impl ement es dans Android. Il contient egalement diverses informations comme les droits de super utilisateur. Il ya cependant le dossier latencytop qui semble etre int erressant et en rapport avec le temps de r eponse selon les processus. Il semble donc important den garder une trace. netd Ici nous pouvons trouver les chiers en rapport avec Internet. Ce qui nest pas ce que nous recherchons. vold Vold pour VolumeDaemon permet de g erer les medias externes. Nous ne trouverons pas dordonnancement ici.

4.2.15

sdk

Ce dossier propose un ensemble doutils de d eveloppement et de d ebugage dapplication Android. androidprefs anttasks : Ant est un outil automatique de compilation pour Java (comme Make lest pour C) . apkbuilder : Apk est un format de chier sp ecique ` a Android. Cest une variante du format Jar. archquery : Outil programm e en Java qui retourne larchitecture du processeur sur lequel tourne le Java VM (x86, PowerPC ou autre). ddms : Dalvik Debug Monitor Server est un outil qui est integr e` a Eclipse pour faire du d ebugage en temps r eel dune application. draw9patch : Outil pour cr eer des images bitmap redimensionnables (des boutons par exemple). dumpeventlog eclipse : Plugin Eclipse pour pouvoir cr eer des applications Android. emulator : Emulateur de t el ephone pour tester les application Android. eventanalyszer

les hierarchyviewer : Visionneuse dinterface utilisateur. jarutils : Outil de manipulation de chier Jar. layoutlib api layoutlib utils layoutopt : Outil danalyse de chier xml d ecrivant linterface utilisateur. ninepatch : Classe Java d enissant les images bitmap redimentionnables. screenshot : Outil pour faire des captures d ecran. sdklauncher sdkmanager sdkstats templates traceview : Outil graphique de d ebugage utilisant des chiers de log (devant etre g en er es par la classe Debug ou par DDMS).

4.3

Resultats

Nous pouvons tirer quelques conclusions ` a la n de cette recherche. Le patch RTAI se basant sur le noyau 2.6.35.7 pour le patcher, est applicable sur le kernel dAndroid 2.3. Cependant, il semble faire quelques modications quAndroid ne supporte pas, car bien que patch e sans erreur, Android nest alors plus executable. L etude de larborescence dAndroid nous permet de voir que peu de chiers sont en rapport avec lordonnancement. Le patch RTAI ne devrait alors pas poser de soucis. Seulement ` a la vue de notre execution nous pouvons voir que cela ne marche pas. Il est alors certainement probable que le souci vienne soit du kernel lui m eme qui ` a et e modi e par rapport au linux 2.6. Soit de Dalvik qui utilise cet ordonnanceur, et en utilisant un ordonnanceur patch e ne tourne plus. Le patch doit modier l egerement un code indispensable ` a Dalvik. Il faut donc soit modier le patch RTAI, ce qui ne semble pas etre la meilleure des id ees car il doit utiliser le minimum n ecessaire pour g erer des t aches temps r eelles. Soit regarder, ou Dalvik utilise les chiers patch es. Ce qui semble etre une id ee bien plus raisonnable.

Android

Conclusion
Ce projet sur le temps r eel a et e pour nous une formidable occasion de consolider nos connaissances sur le noyau Linux et plus encore sur le syst` eme Android qui nous etait inconnus dans son contenu. Ce sujet nous avait d ej` a attir e car nous sommes des convaincus dAndroid pour sa place dans le march e dans le futur, donc notre connaissance ne sera sans doute pas vaine. Surtout, quavec cet OS de Google, on peut etudier ses sources libres tans au niveau du noyau que de p eriph eriques derniers cris comme les acc el erom` etres, 3G embarqu ee,t el evision, etc. Mais le but de notre etude allait au-del` a, avec pour objectif la mise en temps r eel du noyau. En eet, y r eussir sesait une formisable aubaine pour la recherche informatique et tout un chacun, accessible gratuitement avec une simple tablette ou t el ephone. Mais nos recherches sur ce qui existait d ej` a sur Android temps r eel r ecent nont r ev el e que des solutions propri etaires, qui plus est avec du hardware adapt e, il sagit dune niche o` u linformation est condentielle, donc ces solutions sont sans doute tr` es ch` eres. Par cons equent, ca ne nous int eresse pas, et va ` a lencontre de la recherche qui partage les connaissances acquises. Nous restaient alors les solutions de greer des r ealiseurs de noyau open source pour rendre notre noyau r eel. Au premier abord, ca semblait la moins bonne solution, ` a cause de la profusion de plus de cent modications ` a faire et ` a comprendre, pour les reporter sur le noyau Android,qui est modi e. Mais, nalement, ce patch RTAI semble compiler sans erreur sur Android, donc cest cens e fonctionner.Mais mis en situation, Andoid patch e nous donne un ecran noir. Donc, en cours de validation, cest un espoir. Lautre solution etait de carr ement de modier lordonnanceur, mais c a demande de plus vaste connaissances que juste patcher un noyau : priotit e, t aches,runqueues,etc. C a demande donc plus de temps pour les mettre en oeuvre, mais il ny a pas trop de raison pour que ce ne soit pas possible. On esp` ere donc avoir assez d ebroussaill e le terrain pour de futurs travaux, voire r ealis es par nous. Ce f ut aussi loccasion dapprendre ` a travailler sur un m eme sujet vraiment dactualit e pendant une longue p eriode, supervis es par un responsable de nos recherche. On a appris le travail en equipe,supervis e. En loccurence, ` a luniversit, on a appris a travailler de fa con autonome par rapport aux coll` egues en faisant des mises aux point hebdomadaires. Mais, cela doit faire partie du quotidien de recherche, on reste quand m eme sur notre n, car les contraintes de temps nont pas permis dexplorer toutes les pistes jusquau bout.

27

A L TEX

Android

Bibliographie
[1] Sayed Hashimi Satya Komatineni Dave MacLean. How the dalvik virtual machine works on google android. http://www.ctoedge.com/content/how-dalvik-virtual-machine-works-google-android. [2] Sayed Hashimi Satya Komatineni Dave MacLean. Pro Android 2. APress, 2010. [3] Giorgio C. Buttazzo. Hard Real-Time computing Systems. [4] Luis Miguel Pinho Claudio Maia, Luis Nogueira. Evaluating android os for embedded real time systems os pert 2010. [5] Alan Cox. Essential Linux Device Drivers. [6] DalvikVM.com. Dalvik virtual machine insights. http://www.dalvikvm.com/#Dex-File-Format. [7] Centre detude et de recherche en informatique et communication. Installation de rtai. http://cedric.cnam. fr/~bouzefra/installation_rtai.pdf. [8] Discuz. Google android native libc bionic library. google-android-native-libc-bionic.html. http://discuz-android.blogspot.com/2008/10/

[9] David Ehringer. The dalvik virtual machine architecture. http://davidehringer.com/software/android/ The_Dalvik_Virtual_Machine.pdf, 2010. [10] Thomas Gil. Tout ce que vous avez toujours voulu savoir sur les ramasses-miettes .net et java. http://www. dotnetguru.org/articles/GC/GC.html#sous-sectionMark%20and%20Sweep. [11] http ://france android.fr/. Android en leader. http://france-android.fr/tag/android/. [12] Bhupinder S. Mongia. Reliable real time applications on android os whitepaper 2010. [13] Yasuyo Murakami. Android on a highly reliable real time os. [14] Nissanke. Understanding the Linux kernel 3rd Ed. [15] Robert Pogson. Android android-code-walk-through/. code walk-through. http://mrpogson.com/2010/11/06/

[16] Wikipedia. http://en.wikipedia.org/wiki/Booting#Boot_sequence_on_standard_PC_.28IBM-PC_ compatible.29. [17] Wikipedia. Android. http://fr.wikipedia.org/wiki/Android. [18] Wikipedia. Just-in-time compilation. http://en.wikipedia.org/wiki/Just-in-time_compilation. [19] Wikipedia. Machine virtuelle dalvik. http://fr.wikipedia.org/wiki/Machine_virtuelle_Dalvik. [20] Wikipedia. Systeme temps reel. http://fr.wikipedia.org/wiki/Systeme_temps_reel.

28

A L TEX

Android

Index
.apk, 19 .dex, 19 .jar, 19 ech eances, 14 acc el erom` etre, 24 Bluetooth, 24 charge, 14 contraintes temporelles, 8 Dalvik, 5, 19 dalvikvm, 20 Dan Bornstein, 19 dexdump, 20 dexlist, 20 dexopt, 20 dvz, 20 ELF, 17 gcc, 7 ioctl, 22 kill, 9 libcore, 20 libdex, 20 libnativehelper, 20 POST, 19 temps r eel, 8 vm, 20

29

A L TEX