CHAPITRE II : CHEMINEMENT D UN PROGRAMME DANS UN SYSTEME D EXPLOITATION

Documents pareils
Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Traduction des Langages : Le Compilateur Micro Java

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

Cours 1 : La compilation

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Annexe : La Programmation Informatique

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Généralités sur le Langage Java et éléments syntaxiques.

COMMUNICATEUR BLISS COMMANDE PAR UN SENSEUR DE POSITION DE L'OEIL

Conception de circuits numériques et architecture des ordinateurs

Cours Informatique Master STEP

Évaluation et implémentation des langages

MANUEL TBI - STARBOARD

Rappels Entrées -Sorties

Compilation (INF 564)

College Du Chinchon. Torniké Sidamonidzé 3C. M. Brulé

I. Introduction aux fonctions : les fonctions standards

ACTIVITÉ DE PROGRAMMATION

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Chapitre 2. Classes et objets


Exercices INF5171 : série #3 (Automne 2012)

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Présentation du langage et premières fonctions

Bases de programmation. Cours 5. Structurer les données

O b s e r v a t o i r e E V A P M. Taxonomie R. Gras - développée

Analyse de sécurité de logiciels système par typage statique

ORACLE TUNING PACK 11G

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Vers l'ordinateur quantique

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

TEXT MINING von 7

Chapitre 5 : Les procédures stockées PL/SQL

Cours 1 : Qu est-ce que la programmation?

Diagramme de classes

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

Gestion mémoire et Représentation intermédiaire

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Rappels d architecture

Cours de Programmation 2

Recherche dans un tableau

Algorithmique & Langage C IUT GEII S1. Notes de cours (première partie) cours_algo_lgc1.17.odp. Licence

Les structures. Chapitre 3

Présentation du PL/SQL

chapitre 4 Nombres de Catalan

Initiation à la programmation en Python

UE Programmation Impérative Licence 2ème Année

Méthodes de développement. Analyse des exigences (spécification)

Septembre 2012 Document rédigé avec epsilonwriter

Gérer ses fichiers et ses dossiers avec l'explorateur Windows. Février 2013

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Java Licence Professionnelle CISII,

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Programme awk------introduction rapide

Structurer ses données : les tableaux. Introduction à la programmation

Les clusters Linux. 4 août 2004 Benoît des Ligneris, Ph. D. benoit.des.ligneris@revolutionlinux.com. white-paper-cluster_fr.sxw, Version 74 Page 1

ALGORITHMIQUE ET PROGRAMMATION En C

Chapitre IV : La Tenue Des Livres Le journal Le grand Livre

Entrepôt de données 1. Introduction

Chapitre I : le langage UML et le processus unifié

Introduction au langage C

modules & compilation

Représentation d un entier en base b

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Intelligence Artificielle et Systèmes Multi-Agents. Badr Benmammar

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

La méthode des cas et le plan marketing : énoncé seul

Chap III : Les tableaux

Interpréteur d algèbre relationnelle

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données

Introduction à NetCDF

Une protection antivirus pour des applications destinées aux dispositifs médicaux

SEP 2B juin 20. Guide méthodologique de calcul du coût d une prestation

Organiser vos documents Windows XP

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

1) Installation de Dev-C++ Téléchargez le fichier devcpp4990setup.exe dans un répertoire de votre PC, puis double-cliquez dessus :

À la découverte de l ordinateur

l'ordinateur les bases

ITIL V2 Processus : La Gestion des Configurations

Reaper : utilisations avancées

modélisation solide et dessin technique

MATHÉMATIQUES. Les préalables pour l algèbre MAT-P020-1 DÉFINITION DU DOMAINE D EXAMEN

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Le Langage De Description De Données(LDD)

Programmation C++ (débutant)/instructions for, while et do...while

Dossier projet isn 2015 par Victor Gregoire

Cours admin 200x serveur : DNS et Netbios

Mise en route et support Envision 10 SQL server (Avril 2015) A l'intention de l'administrateur SQL Server et de l administrateur Envision

1 Gestionnaire de Données WORD A4 F - USB / / 6020 Alco-Connect

STAGE IREM 0- Premiers pas en Python

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

Classer et partager ses photographies numériques

Conservation des documents numériques

Cours Informatique 1. Monsieur SADOUNI Salheddine

Transcription:

14 CHAPITRE II : CHEMINEMENT D UN PROGRAMME DANS UN SYSTEME D EXPLOITATION 2.1 CHAINE DE PREPARATION D UN PROGRAMME : Le développement d un programme, depuis l analyse du problème jusqu'à sa mise au point, nécessite de nombreux outils logiciels qui constituent un environnement de programmation. Pour fonctionner, ces outils utilisent les services du système d exploitation. La figure suivante illustre un environnement de programmation contenant un nombre minimum d outils classiques. Idée Editeur de texte Programme source Traducteur (assembleur/compilateur) Sous-programmes de librairie Editeur de liens Programme objet Sous-programmes traduits à part Programme exécutable Chargeur Exécution Programme chargé Débogueur Figure 2.1 Etapes de préparation d un programme.

Systèmes d exploitation des Ordinateurs 15 L éditeur de textes : Un éditeur de texte (text editor) est un logiciel interactif qui permet de saisir du texte à partir du clavier et le stocker dans un fichier. Le Traducteur : Le traducteur est un logiciel qui, traduit un programme source écrit en langage de haut niveau en un programme objet. L éditeur de textes : Un éditeur de liens (linker) est un logiciel qui permet de combiner plusieurs programmes objet en un seul programme exécutable. Le Chargeur : Le programme exécutable, obtenu après l édition de liens, doit être chargé en mémoire centrale pour être exécuté. Le chargeur (loader) s occupe de cette tâche. Le débogueur : Le débogueur (debugger) est un logiciel qui facilite la mise au point de programmes (détection et correction des erreurs, ou bugs). Il permet d examiner le contenu de la mémoire ainsi que le contenu des différents registres. Ainsi, on peut suivre l exécution pas à pas, c est à dire instruction après instruction. 2.2 LA TRADUCTION D UN PROGRAMME : Pour l'ordinateur, un programme écrit dans un langage qui n'est pas le sien est en fait une simple suite de caractères plus ou moins longue. Il doit être traduit par un traducteur. Le traducteur peut se présenter sous l'une des deux formes suivantes: L'interpréteur parcourt en permanence la suite de caractères, analyse les actions définies par le programme, exprimées dans le langage évolué, et exécute immédiatement la séquence d'action de la machine qui produit les mêmes effets. Le compilateur parcourt la suite de caractères, analyse les actions du programme et la traduit en une suite d'instructions dans le langage de la machine. Quels que soient le langage et la méthode de traduction utilisés, le programme est toujours une suite de caractères. C'est ce que nous appellerons un programme source. Le traducteur doit analyser cette suite de caractères pour retrouver les constituants essentiels, vérifier la conformité avec la définition du langage, et en déduire la sémantique. Un interpréteur doit ensuite exécuter les actions correspondant à cette sémantique, alors qu'un assembleur ou un compilateur doit traduire cette sémantique dans un autre langage. On appelle programme objet, le résultat de cette traduction. 2.2.1 L'analyse lexicale L analyse lexicale a pour but de segmenter le programme source et en tirer tous les items lexicaux (constantes, variables, mots clés, ). Exemple : soit le programme suivant. begin x := 23; end Cette suite de caractères doit être découpée de la façon suivante: Begin x := 23 ; end LOUKAM Mourad

16 2.2.2 L'analyse syntaxique Le résultat obtenu après analyse lexicale est une suite de symboles. Mais, toute suite de symboles ne constitue pas un programme. Il faut donc vérifier la concordance de la suite avec la structure du langage, sans se préoccuper, pour le moment, de la sémantique du programme. C'est ce que l'on appelle l'analyse syntaxique. La plupart des langages de programmation modernes définissent une syntaxe du langage par des règles de production, qui décrivent la façon dont on peut construire une suite de symboles pour qu'elle constitue un programme. Le programmeur construit alors son programme en appliquant ces règles de façon répétitive. L'analyse syntaxique consiste à retrouver, à partir du programme source, ou en fait à partir de la suite de symboles, quelles sont les règles que le programmeur a appliquées. 2.2.3 L'analyse sémantique Après avoir contrôlé la correction du programme, et en avoir obtenu la structure syntaxique, la traduction continue par la phase d'analyse sémantique, qui a pour but de trouver le sens des différentes actions voulues par le programmeur. Trois problèmes doivent alors être résolus: quels sont les objets manipulés par le programme, quelles sont les propriétés de ces objets, quelles sont les actions du programme sur ces objets. 2.2.4 La génération et l'optimisation de code La phase de génération de code est la phase de traduction proprement dite. Elle n'est entreprise que si aucune erreur n'a été trouvée. Elle consiste à construire un programme équivalent à la sémantique obtenue dans la phase précédente, dans un nouveau langage, et donc en particulier dans le langage de la machine lui-même. 2.3 L EDITION DE LIENS : Les programmes relativement complexes ne peuvent être écrits entièrement dans un seul fichier, il est nécessaire de pouvoir les découper en morceaux, chacun d'eux pouvant alors être modifié, compilé et testé séparément des autres. Les morceaux doivent ensuite pouvoir être rassemblés pour former le programme complet. Nous avons appelé module source un tel morceau de programme pouvant être traité de façon indépendante par un traducteur, et module objet le résultat de cette traduction. Nous nous intéressons maintenant à la reconstruction du programme complet à partir des modules objets. Nous avons appelé édition de liens cette opération. Elle est réalisée par un programme spécifique, appelé éditeur de liens (en Anglais link editor). 2.3.1 La notion de module translatable Les traducteurs séparent souvent l'espace mémoire du module en plusieurs sections suivant la nature de leur contenu, comme par exemple:

Systèmes d exploitation des Ordinateurs 17 code des instructions, données constantes, données variables. Ces différentes sections, gérées séparément par le traducteur peuvent être mises n'importe où en mémoire. Les informations de placement produites par le traducteur précisent alors pour chaque emplacement qui contient une adresse, la section à laquelle cette adresse se réfère. On dit alors que le module objet est translatable. L'opération de translation consiste à ajouter à chacun des emplacements qui contient une adresse, la valeur de l'adresse effective d'implantation finale de la section. 2.3.2 La notion de lien La construction d'un programme à partir d'un ensemble de modules n'est pas simplement la juxtaposition en mémoire de l'ensemble de ces modules. Il est nécessaire d'assurer une certaine forme de coopération entre les modules, et donc qu'ils puissent communiquer. Cette communication peut se faire par variable globale, c'est-à-dire qu'une variable appartenant à un module est accessible depuis un ou plusieurs autres modules. Elle peut se faire par appel de procédure, c'est-à-dire qu'une procédure ou une fonction appartenant à un module est accessible depuis un ou plusieurs autres modules. On appelle lien l'objet relais, qui permet à un module d'accéder à un objet appartenant à un autre module. L'établissement de ce lien passe par un intermédiaire, le nom du lien, permettant de le désigner dans les deux modules. Ce nom est en général une chaîne de caractères. Nous appellerons lien à satisfaire la partie du lien située chez l'accédant, et lien utilisable la partie située chez l accédé. Fig. 2.6 La notion de lien. LOUKAM Mourad

18 A titre d exemple, considérons les deux programmes en langage C suivants : prog1.c et prog2.c. Prog1.c extern int v1 ; extern int proc1(int x) ; float v2 ; main() int a, x ; x = v1 + proc1(a) ; Prog2.c int v1 ; extern float v2 ; int proc1(int x) ; main() float b ; b = v2 *2; int proc1(int x) int y ; return (x * y /2) ; On remarque dans cet exemple que pour le programme Prog1.c les liens à satisfaire sont la variable v1 et la procédure proc1, alors que le lien utilisable est la variable v2. par contre pour Prog2.c, le lien à satisfaire est la variable v2 alors que les liens utilisables sont la variable v1 et la procédure proc1. Module Liens à satisfaire Liens utilisables Prog1.c Prog2.c Variable v1 Procédure Proc1 Variable v2 Variable v2 Variable v1 Procédure proc1