ebook img

Analyse des pointeurs pour le langage C PDF

244 Pages·2017·4.61 MB·French
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Analyse des pointeurs pour le langage C

INSTITUT DES SCIENCES ET TECHNOLOGIES École doctorale nO432 : Sciences des Métiers de l’Ingénieur Doctorat ParisTech T H È S E pour obtenir le grade de docteur délivré par l’École nationale supérieure des mines de Paris Spécialité « Informatique temps-réel, robotique et automatique » présentée et soutenue publiquement par Amira MENSI 24 juin 2013 Analyse des pointeurs pour le langage C Directeur de thèse : François IRIGOIN Co-encadrement de la thèse : Fabien COELHO Corinne ANCOURT T Jury H M. Denis BARTHOU, Professeurdesuniversités,ENSEIRB Président M. François IRIGOIN, Professeur,CRIMINESParisTech Directeur È M. Paul FEAUTRIER, Professeur,ÉcolenormalesupérieuredeLyon Rapporteur M. Lionel LACASSAGNE, Maîtredeconférence,UniversitéParisSud Rapporteur S Mlle. Elisabeth BRUNET, Maîtredeconférence,TélécomSudParis Examinateur Mme. Corinne ANCOURT, Maîtredeconférence,CRIMINESParisTech Invité E M. Fabien COELHO, Maîtredeconférence,CRIMINESParisTech Invité MINES ParisTech Centre de Recherche en Informatique 35rueSaint-Honoré,77305Fontainebleau,France (Pagedetitre) Résumé Les analyses statiques ont pour but de déterminer les propriétés des programmes au mo- mentdelacompilation.Contrairementauxanalysesdynamiques,lecomportementexactdupro- grammenepeutêtreconnu.Parconséquent,onarecoursàdesapproximationspourremédierà cemanqued’information.Malgrécesapproximations,lesanalysesstatiquespermettentdesop- timisations et des transformations efficaces pour améliorer les performances des programmes. Parmilespremièresanalysesduprocessusd’optimisationfigurel’analysedespointeurs.Sonbut estd’analyserstatiquementunprogrammeenentréeetdefournirenrésultatuneapproximation des emplacements mémoire vers lesquels pointent ses variables pointeurs. Cette analyse est considérée comme l’une des analyses de programmes les plus délicates et l’information qu’elle apporte est très précieuse pour un grand nombre d’autres analyses clientes. En effet, son ré- sultat est nécessaire à d’autres optimisations, comme la propagation de constante, l’élimination du code inutile, le renommage des scalaires ainsi que la parallélisation automatique des pro- grammes. LelangageCprésentebeaucoupdedifficultéslorsdesonanalyseparlalibertéqu’iloffreaux utilisateurs pour gérer et manipuler la mémoire par le biais des pointeurs. Ces difficultés appa- raissentparexemplelorsdel’accèsauxtableauxparpointeurs,l’allocationdynamique«malloc» ainsi que les structures de données récursives. L’un des objectifs principaux de cette thèse est de déterminer les emplacements mémoire vers lesquels les pointeurs pointent. Ceci se fait en assurantplusieursdimensionscomme: • lasensibilitéauflotdecontrôle,c’est-à-direlamiseàjourdesinformationsd’unpointpro- grammeàunautre; • la non-sensibilité au contexte, c’est-à-dire l’utilisation de résumés au lieu de l’analyse du corpsdelafonctionàchaqueappel; • la modélisation des champs pointeurs des structures de données agrégées, dans laquelle chaquechampreprésenteunemplacementmémoiredistinct. D’autres aspects sont pris en compte lors de l’analyse des programmes écrits en C comme la précision des emplacements mémoire alloués au niveau du tas, l’arithmétique sur pointeurs ou encore les pointeurs vers tableaux. Notre travail, implémenté dans le compilateur parallélliseur PIPS (Parallélisation interprocédurale de programmes scientifiques), permet d’analyser les ap- plications scientifiques de traitement du signal tout en assurant une analyse intraprocédurale préciseetuneanalyseinterprocéduraleefficacevialesrésumés. Mots clés : analyse statique de programmes, analyse de pointeurs, sensibilité au flot de contrôle,sensibilitéaucontexte. Abstract Staticanalysisalgorithmsstrivetoextracttheinformationnecessaryfortheunderstandingand optimizationofprogramsatcompiletime.Thepotentialvaluesofthevariablesoftypepointerare themostdifficultinformationtodetermine.Thisinformationisoftenusedtoassessiftwopointers are potential aliases, i.e. if they can point to the same memory area. An analysis of pointers, also called points-to analysis, may provide more precision to other analyses such as constant propagation, analysis of dependencies or analysis of live variables. The analysis of pointers is veryimportantfortheexploitationofparallelisminscientificCprogramssincethemostimportant structures they manipulate are arrays, which are typically accessed by pointers. It is necessary to analyse the dependencies between arrays in order to exploit the parallelism between loops. Points-toanalysismayalsoattempttohandlerecursivedatastructuresandotherstructuresthat areaccessedbypointers.Thisworkprovidesapoints-toanalysiswhichis: • flow-sensitive,bytakingintoaccounttheorderofexecutionofinstructions; • field-sensitive,sincestructurefieldsaretreatedasindividuallocations; • context-insensitive,becausefunctionssummariesarecomputedtoavoidre-analyzingfunc- tionsbodies. Other issues such as heap modeling, pointer arithmetics and pointers to arrays are also taken into account while analyzing C programs. Our intraprocedural analysis provides precise results to client analyses, while our interprocedural one allows to propagate them efficiently. Our work is implemented within the PIPS (Parallélisation interprocédurale de programmes scientifiques) parallelizer, a framework designed to analyze, optimize and parallelize scientific and signal pro- cessingapplications. Keywords:staticanalysis,points-toanalysis,flow-sensitive,context-insensitive,field-sensitive. Remerciements Cette thèse a été préparée au Centre de recherche en Informatique (CRI) de l’École des minesdeParis(MINESParisTech),sousladirectiondeFrançoisIrigoin. Jevoudraistoutd’abordexprimermareconnaissanceàFrançoisIrigoin,pourm’avoiraccueilli au CRI, de m’avoir proposé un sujet de thèse très riche et très motivant. Durant toute la thèse il a été disponible, patient et les nombreux échanges d’idées et de conseils que nous avons eu ont grandement contribué à l’avancement de mes travaux. Son aide et ses conseils ont été inestimables. Je remercie mes encadrants de thèse Corinne Ancourt et Fabien Coelho pour m’avoir suivi tout au long de cette thèse et pour leurs conseils éclairés et leur encouragements. Je suis très reconnaissanteenversPierreJouvelotpourtoutel’aideapportéeaucoursdecettethèsedepuis l’étudebibliographiquejusqu’àlaformalisationetlarelecturedelathèseainsiqueBéatriceCreu- silletpourl’attentionqu’elleaportéeàmestravaux,poursadisponibilitéetsescontributionsqui ontpermisd’intégreretd’exploitermontravaildanslecompilateurPIPS. Je suis très reconnaissante envers les membres du CRI, je me rappellerai toujours avec un grandplaisirlesbonsmomentspassésavecRobertMahl,ClaireMédrala,DouniaKhaldi,Mehdi Amini,Vivienmaisonneuve, OlivierHermont,ClaudeTadonki,SamuelBenveniste, AntoniuPop, BenoîtPinetenparticulierJacquelineAltimiradontlesupportmoraletlabonnehumeurnem’ont jamaisfaitdéfaut. MerciaussiauxmembresdudépartementinformatiquedeTelecomSudParisquim’ontsou- tenu durant les derniers mois de préparation de soutenance, je pense en particulier à Elisabeth Brunet,RachidHabeletChantalTaconet. Ungrandmerciàmafamille,etauxamisElise,Safa,Nidhal,Xavier,Manon,SanaetBrunozzo pour leur soutien inconditionnel et leurs encouragements. Enfin un merci particulier à celui qui m’a soutenu et motivé durant les moments de doute. Et qui a été présent dès le premier jour jusqu’àceluidelasoutenance,monamour,Gilles. Table des matières Tabledesmatières ix Tabledesfigures xv Listedestableaux xvii 1 Introduction 1 1.1 Contexte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.1.1 L’importancedulangageC . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.1.2 LespointeursenC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2 Motivations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2.1 Importancedel’optimisationdesprogrammes . . . . . . . . . . . . . . . . 2 1.2.2 Lamémoired’unprogramme . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2.3 Optimisationdesprogrammesenprésencedepointeurs. . . . . . . . . . . 4 1.3 Problématiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.3.1 Déterminationdesciblesdepointeurs . . . . . . . . . . . . . . . . . . . . . 5 1.3.2 Analysedepointeursoud’alias? . . . . . . . . . . . . . . . . . . . . . . . . 5 1.3.3 Analyserlesstructuresdedonnéesrécursives . . . . . . . . . . . . . . . . 5 1.3.4 Abstractiondelamémoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.4 Contributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.4.1 TraitertouteslesinstructionsdulangageC?. . . . . . . . . . . . . . . . . . 6 1.4.2 Concevoiruneanalyseintraprocéduraleprécise . . . . . . . . . . . . . . . 7 1.4.3 Concevoiruneanalyseinterprocéduralemodulaire . . . . . . . . . . . . . . 7 1.4.4 Répondreauxbesoinsdesapplicationsscientifiques . . . . . . . . . . . . . 8 1.4.5 Modéliserl’allocationdynamiqueauniveaudutas . . . . . . . . . . . . . . 8 1.5 Structuredelathèse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2 Lesanalysesclientesetlesobjectifspourlecompilateur 11 2.1 Lareprésentationdesarcspoints-to . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.1.1 Structurededonnées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.1.2 Affichagedelarelationpoints-to . . . . . . . . . . . . . . . . . . . . . . . . 12 2.1.3 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.2 Leseffetsmémoireetl’analysedespointeurs . . . . . . . . . . . . . . . . . . . . . 13 2.2.1 Définitions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.2.2 Leseffetsenprésencedepointeurs . . . . . . . . . . . . . . . . . . . . . . 13 2.3 Leschaînes«use-def»etlasuppressionducodeinutile . . . . . . . . . . . . . . 15 2.3.1 Leschaînes«use-def» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.3.2 Suppressiondecodeinutile . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.3.3 Les chaînes use-def et la suppression de code inutile sans information points-to . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.3.4 Chaînesuse-def etsuppressiondecodeinutileavecl’informationpoints-to 18 2.3.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.4 L’analysedesdépendancesetlaparallélisation . . . . . . . . . . . . . . . . . . . . 19 2.4.1 L’analysedesdépendancesetlaparallélisationsansinformationpoints-to . 21 2.4.2 L’analysedesdépendancesetlaparallélisationavecl’informationpoints-to 22 2.4.3 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.5 Lasuppressiondesous-expressionscommunes . . . . . . . . . . . . . . . . . . . 24

Description:
24 juin 2013. Analyse des pointeurs pour le langage C. Directeur de thèse : François IRIGOIN. Co-encadrement de la thèse : Fabien COELHO . Merci aussi aux membres du département informatique de Telecom SudParis qui m'ont sou- Amer Diwan, Kathryn S. McKinley, and J. Eliot B. Moss.
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.