Systèmes d Exploitation

Documents pareils
Cours 1 : La compilation

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

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

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

Conventions d écriture et outils de mise au point

Quelques éléments de compilation en C et makefiles

Traduction des Langages : Le Compilateur Micro Java

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Gé nié Logiciél Livré Blanc

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Java - la plateforme

Machines Virtuelles. et bazard autour. Rémi Forax

Chapitre VI- La validation de la composition.

Évaluation et implémentation des langages

Annexe : La Programmation Informatique


Algorithmique I. Algorithmique I p.1/??

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

Java Licence Professionnelle CISII,

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

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Initiation à l algorithmique

Programmation C. Apprendre à développer des programmes simples dans le langage C

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février :30 à 20:30

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

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Machines virtuelles Cours 1 : Introduction

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

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

Sciences de Gestion Spécialité : SYSTÈMES D INFORMATION DE GESTION

L informatique en BCPST

Représentation d un entier en base b

Notions fondamentales du langage C# Version 1.0

Présentation du PL/SQL

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Plan du cours. Historique du langage Nouveautés de Java 7

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

Solution logicielle pour le pilotage et l ERM. Journées d études IARD 26 mars mars 2010

Chapitre I Notions de base et outils de travail

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

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

Rappel sur les bases de données

ALGORITHMIQUE ET PROGRAMMATION En C

Algorithmique et Programmation, IMA

Mon premier rpm. 7 juin Avant de commencer RPM URPMI RPMBUILD... 2

Outils pour la pratique

Environnements et Outils de Développement Cours 1 Introduction

Espaces numériques de formation Tableau de présentation synthétique des usages pédagogiques

Logiciel Libre Cours 3 Fondements: Génie Logiciel

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)

Cours de Programmation 2

Architecture des ordinateurs

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

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

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

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Efficacité énergétique pour les particuliers : une solution pour le monitoring énergétique

REALISATION D UNE CALCULATRICE GRACE AU LOGICIEL CROCODILE CLIPS 3.

ANALYSE CATIA V5. 14/02/2011 Daniel Geffroy IUT GMP Le Mans

Utilisation d objets : String et ArrayList

Définitions. Numéro à préciser. (Durée : )

I. Introduction aux fonctions : les fonctions standards

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

GOL502 Industries de services

Programmation Objet Java Correction

Programmation parallèle et distribuée

Introduction à MATLAB R

Objets et Programmation. origine des langages orientés-objet

TP réseaux 4 : Installation et configuration d'un serveur Web Apache

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

MIS 102 Initiation à l Informatique

Simplifier l intégration des systèmes RH et garantir une version unique des données de l employé. D

Programmer en JAVA. par Tama

La Certification de la Sécurité des Automatismes de METEOR

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

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

Chap III : Les tableaux

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

Algorithmique, Structures de données et langage C

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Comment reproduire les résultats de l article : POP-Java : Parallélisme et distribution orienté objet

Une introduction à Java

Auto-évaluation Programmation en Java

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Algorithmique avec Algobox

Solutions du chapitre 4

Le langage C. Séance n 4

Gestion mémoire et Représentation intermédiaire

Formation Excel. Introduction Les Bases du Logiciel Le comportement des cellules. Calculs élaborés. Les feuilles de calculs élaborées

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

1 Introduction C+ + Algorithm e. languag. Algorigramm. machine binaire. 1-1 Chaîne de développement. Séance n 4

Corrigés des premiers exercices sur les classes

Estimation des charges. «Le travail se dilate jusqu à remplir le temps disponible»

PROFIS Installation. Module 4: Module 3D Design

Transcription:

Systèmes d Exploitation chapitre 2 Désignation de l Information F. Moal 2012/2013 Objectifs Comprendre la chaîne de production des programmes : Traduction/compilation Editeur de liens Chargeur 2 1

Schémas d exécution d un programme Un programme Psource dans un langage (impératif) L décrit une suite d actions à exécuter par une machine (virtuelle) ML Le programme est une suite d instructions dont chacune spécifie une action (passage d un état initial à un état final) La machine ML est capable d exécuter (interpréter) le programme Psource, c est-à-dire de traduire en actions de ML la suite d instructions de Psource. 3 Schémas d exécution d un programme Comment faire si on ne dispose pas de la machine ML, mais d une machine différente, Mphys? Deux solutions de base a) Traduire Psource -> Pobj équivalent pour la machine Mphys, et exécuter Pobj sur Mphys => Schéma de compilation (traducteur : compilateur) b) Construire pour Mphys un simulateur de la machine ML, et exécuter Psource sur ce simulateur. => => Schéma d interprétation (simulateur : interprète) Une solution mixte compiler Psource pour une machine intermédiaire Mint ; construire un interprète de Mint sur Mphys 4 2

Compilation et interprétation : principe 5 Compilation et interprétation : comparaison Compilation Interprétation + Efficacité le code engendré s exécute directement sur la machine physique ce code peut être optimisé - Mise au point pas toujours facile de relier une erreur d exécution au texte source - Efficacité l interprétation directe est souvent longue (appel de sous-programmes) pas de gain sur les boucles facteur de x10 à x100 + Mise au point lien direct entre instruction et exécution possibilités étendues d observation et traces intégrées - Cycle de modification-rééxécution toute modification du texte source impose de refaire le cycle complet (compilation, édition de liens, exécution) + Cycle de modification-rééxécution cycle très court (modifier et réexécuter) 6 3

Schéma mixte d exécution Objectifs Principe Essayer de combiner les avantages des schémas de compilation et d interprétation Améliorer la portabilité des programmes entre machines, via un langage intermédiaire standard Définir un langage intermédiaire et une machine virtuelle capable d interpréter ce langage Écrire un compilateur du langage initial (source) vers le langage intermédiaire Écrire un interprète du langage intermédiaire (c est-à-dire un simulateur de la machine virtuelle) 7 Cycle de vie d un programme compilé Compilation vers programme objet absolu (adresses fixées en mémoire) contrainte : le programme ne peut pas être déplacé en mémoire (par ex. pour le combiner avec d autres) Compilation vers programme objet translatable (adresses définies à une translation près) nécessité de passer par un chargeur pour rendre le programme exécutable (le programme translatable n est pas exécutable tel quel) 8 4

Cycle de vie d un programme compilé Exemples > gcc -c prog.c produit un programme objet translatable dans le fichier prog.o > gcc -o prog prog.c produit un programme objet absolu dans le fichier prog (appelle le compilateur et le chargeur) 9 Schéma général programme source compilateur module objet en LBT module objet en LBT bibliothèque éditeur de liens programme en LBT bibliothèque dynamique chargeur programme en binaire ABSOLU 10 5

Code exécutable et chargeurs Format simple d instructions machine : <code-op> <registre><opérande> - Programme objet absolu (exécutable) : toutes les adresses sont absolues - Programme objet translatable (ou relogeable) : les adresses sont relatives au début du programme 11 Fonctionnement d un chargeur Format du binaire translatable toutes les informations dans la partie adresse ne sont pas translatables (ex : E/S) il faut donc un indicateur associé à toute adresse, signalant si elle est translatable ou non ; cet indicateur est placé par le compilateur lors de la génération du code Fonctionnement du chargeur l adresse absolue de chargement A est fournie en paramètre algorithme du chargeur: copier le segment St contenant le binaire translatable dans un segment Sa pour toute adresse a contenue dans le segment Sa faire si a translatatable alors a = a +A le segment Sa contient maintenant le binaire absolu 12 6

Fonctionnement d un chargeur Illustration de la notion de liaison liaison = établissement de la relation entre une entité (abstraite) et sa réalisation physique programme source identificateur Compilateur binaire objet translatable adresse relative dans segment Chargeur binaire objet absolu adresse absolue 13 Composition de programmes Pourquoi parler de composition de programmes? Applications réalisées par assemblage de parties construction modulaire, facilite la conception et l évolution des programmes Applications utilisent des fonctions fournies par des bibliothèques Conséquence : un programme ne s exécute pratiquement jamais seul 14 7

Composition de programmes Le problème de la composition : encore un exemple de liaison le programme P fait appel à une procédure p incluse dans un programme Q construit séparément Question : lors de la compilation de P, quelle adresse va-t-on associer à p (appel )? Réponse : il est impossible de le savoir tant qu on ne connaît pas le programme Q La liaison dans P entre la procédure p et son adresse ne peut être faite que dans une phase postérieure à la compilation, utilisant simultanément P et Q : c est l édition de liens 15 Fonctionnement d un éditeur de liens (1) 16 8

Fonctionnement d un éditeur de liens (2) Format du binaire translatable (très simplifié) 17 Fonctionnement d un éditeur de liens (3) Principe de l éditeur de lien à 2 passes (simplifié) Phase initiale : Concaténation l éditeur de liens réunit bout à bout l'ensemble des segments binaires translatables dans un segment objet unique. Toute information a alors une adresse (relative) dans ce segment objet (le binaire translatable global) Passe 1 : collecte des références À partir des tables des définitions externes, l éditeur de liens construit une table globale des symboles. Une entrée de cette table contient le nom d une procédure fournie et l adresse (relative) correspondante dans le segment objet. Passe 2 : résolution des références externes À partir des tables des références externes, l éditeur de liens retrouve toutes les instructions faisant référence à une procédure externe, et met dans la partie adresse de chacune de ces instructions l adresse relative trouvée dans l entrée de la table globale des symboles correspondant à la procédure externe utilisée. 18 9

Fonctionnement d un éditeur de liens (4) À la fin de la passe 2, toutes les références externes doivent avoir été résolues. Si ce n est pas le cas, l éditeur de liens signale les références non résolues, et le programme global ne peut pas être exécuté Le programme global doit encore passer par le chargeur pour obtenir un binaire exécutable. Souvent, la fonction du chargeur est incluse dans l éditeur de liens, qui produit alors directement le binaire exécutable 19 Exemples La commande gcc permet d appeler à la fois le compilateur, l éditeur de liens et le chargeur Un programme composé de deux parties prog1.c et prog2.c : gcc prog1.c prog2.c gcc -c prog1.c prog2.c gcc -o prog prog.o prog1.o Utilisation de bibliothèques Recherche des références externes dans des bibliothèques, fournies par le système Spéc : -l<nom> l éditeur de liens recherche la bibliothèque lib<nom>.a Règles de recherche (où trouver les bibliothèques, etc.) 20 10

Question Peut-on éviter les 2 passes? Si non, pourquoi? Si oui, dans quels cas? 21 Liaisons dynamiques Edition de liens précédente : statique + Programme auto-suffisant - Taille!! Sur les systèmes actuels : Edition de liens dynamique (.dll,.so) + Taille!! - Dépendances du programme 22 11

Liaisons dynamiques Exemple : hello.c #include<stdio.h> int main() { printf("hello!\n"); return 0; } gcc c hello.c gcc hello.o -o hello.default gcc -shared hello.o -o hello.shared gcc -static hello.o -o hello.static ls l : -rw-r--r-- 1 root root 65 2006-01-23 11:04 hello.c -rwxr-xr-x 1 root root 11516 2006-01-23 11:05 hello.default -rw-r--r-- 1 root root 856 2006-01-23 11:04 hello.o -rwxr-xr-x 1 root root 6489 2006-01-23 11:05 hello.shared -rwxr-xr-x 1 root root 471195 2006-01-23 11:05 hello.static 23 12