Introduction aux systèmes Informatiques: L’interface Matériel Logiciel A3- 2016/2017 Léon Mugwaneza Polytech’ Marseille / Dépt. Informatique (bureau A118 ) [email protected] Introduction Cours d’Interface Matériel Logiciel ? Qu’est ce que c’est ? ☞ ☞ Un programme C extrait de votre cours d’Algorithmique, Programmation et Structures de données I ☞ Un programme pour un ordinateur comme celui-ci ✑ Comment «ça marche» ? ? Comment fait-on «exécuter» un tel programme par un ordinateur ? 2 Cours d’Interface Matériel Logiciel? ✑ Comment faire exécuter le programme ci-dessus par un ordinateur ? (extrait cours d’Algo. Prog. & Struct. de données I ) § Passage du code source à un programme exécutable : …>gcc nom_fichier.c –o nom_exec § gcc: un compilateur C § l’option –o permet de donner un nom à l’exécutable (sinon par défaut le fichier est nommé a.out) § Pour commencer, pas de compilation séparée § Exécution du programme : …>./nom_exec Premier exemple …> ☝ Oui mais …. ? Qu’est ce qu’un programme exécutable? ? Qu’est ce qu’un compilateur ? ? Qu’est ce qu’un ordinateur ? ? Où est la fonction printf que le programme utilise? ? … 3 … Interface Matériel Logiciel? § Programme exécutable vs langage C void s w a p ( i n t v [ ] , in t k ) { i n t te m p ; te m p = v [ k ] ; v [ k ] = v [k + 1 ]; v[ k+ 1 ] = t em p; } Extrait d’un programme en langage C « compilateur » 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 1 1 0 1 0 0 1 1 1 1 1 1 0 1 1 1 1 1 0 0 0 1 1 0 0 00 11 00 00 00 00 00 0 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 11 00 00 00 00 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 Extrait d’un programme exécutable MIPS (langage machine) 4 … Interface Matériel Logiciel ? § Que fait le compilateur ? void s w a p ( i n t v [ ] , in t k ) { i n t te m p ; te m p = v [ k ] ; v [ k ] = v [k + 1 ]; v[ k+ 1 ] = t em p; } procedure swap(var v :array[0..40] of integer, k : integer); begin var temp : integer; temp := v[k]; v[k] := v[k+1]; v[k+1] := temp; end; Compilateur C (eg: gcc –S) Compilateur Pascal sw ap: m u li $ 2 , $ 5 , 4 a d d $ 2 , $ 4 ,$ 2 lw $ 1 5 , 0 ($ 2 ) lw $ 1 6 , 4 ($ 2 ) sw $ 1 6 , 0 ($ 2 ) sw $ 1 5 , 4 ($ 2 ) jr $31 langage d’assemblage Assembleur 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 1 1 0 1 0 0 1 1 1 1 1 1 0 1 1 1 1 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 langage machine 5 … Interface Matériel Logiciel? ☛ Autres questions qu’il est «légitime» de se poser : ? Comment «ça se passe exactement» quand on utilise les des sousprogrammes écrits par d’autres (bibliothèques, compilation séparée) ? ? Qu’est-ce qu’un éditeur de liens (linker) ? ? Comment lance-t-on l’exécution d’un programme exécutable? ? Comment partage-t-on l’ordinateur entre plusieurs programmes? ? Comment signaler les erreurs (ex. segmentation fault) ? ? Comment protéger l’ordinateur (et les autres programmes) des erreurs dans un programme ? ? Qu’est ce qu’un système d’exploitation? ? Comment se font les entrées/sorties (saisie au clavier, écriture sur disque, affichage à l’écran, ….)? ? Quelle est la différence entre le langage d’assemblage et le langage machine ? ? Quel langage comprend effectivement un ordinateur? (c-à-d quel est l’interface matériel/logiciel?) ? … 6 Ordinateur = matériel + logiciel (COMPUTER = HARDWARE + SOFTWARE) Logiciel (Software) Interface matériel/logiciel (HW/SW Interface) Matériel (Hardware) 7 Le matériel • Les 5 composants d’un ordinateur Processeur (processor) Unité de Contrôle (control path) Chemin de données (Datapath) Entrées (Input) Mémoire Centrale (Memory) Sorties (Output) 8 Vers écran, clavier, … lect e et d urs CD isqu ette disque dur Le matériel (un vieux PC) 9 «Sous le couvercle » d’un macbook air 10 Les 5 composants d’un ordinateur Sorties Chemin de données Mémoire Unité de Contrôle Entrées Processeur • Le processeur lit les instructions et les données de la mémoire, écrit les données en mémoire • Les unités d’entrée écrivent les données dans la mémoire • Les unités de sortie lisent les données de la mémoire • Le chemin de données comprend des opérateurs pour implanter le répertoire d’instructions (partie opérative) • L’unité de contrôle génère les commandes pour la réalisation des opérations sur le chemin de données, la mémoire, les entrées et les sorties Q : Interface offert par le matériel ? Jeu d’instructions (ISA: Instruction Set Architecture) ➵ Aussi appelé Langage Machine (Machine Language) 11 Un processeur Pentium De dessus De dessous 12 INTEL Core i7 De dessous De dessus 13 un processeur pentium III (de dedans) 14 Ordinateur = Matériel + Logiciel Outils et Env. de Prog. (Compilateurs, …) Applications Logiciel Système d’exploitation Interface matériel/Logiciel Processeur Mémoire E/S Chemins de données et de contrôle Circuits digitaux Circuits VLSI Matériel • Logiciel = Applications + Logiciel Système – Logiciel système : ensemble des programmes qui ne sont pas des applications ☛ Ordinateur : plusieurs niveaux d’abstraction 15 Le logiciel système • Outils pour la préparation des programmes à l’exécution – compilateurs (gcc, cc, gpc, javac, …) – assembleurs (as, gas, nasm, spim, …) – éditeurs de liens (ld, ...) – interpréteurs (lisp, perl, jvm, sh, …) • Le système d’exploitation (operating system) – gestion mémoire, gestion des entrées et sorties – gestion des fichiers – partage du processeur ✎ Le système d’exploitation assure 2 fonctions : – Virtualisation du matériel (cache les détails du matériel en définissant un interface de plus haut niveau, un ordinateur plus simple à utiliser) – la gestion, le partage et la protection des “ressources” Note : pour certains, le système d’exploitation comprend tout ce que nous appelons ici «logiciel système» (des fois certaines applications) 16 Objectif du cours «Interface Matériel Logiciel» Comprendre l’interface entre le Logiciel et le Matériel d’un ordinateur applications systèmes d’exploitation ISA langages de programmation (compilateur) Architecture des ordinateurs : • jeu d’instructions (ISA) • organisation et implantation matérielle (cf. cours d’Architecture des ordinateurs A3) technologie 17 Contenu du cours • Préparation d’un programme pour exécution (interface compilateur) – Langage machine (ISA – Instruction Set Architecture) – Langage d’assemblage – Traduction des langages de « haut niveau » [ – L’assemblage – L’édition des liens et le chargement ] • Mécanismes à la base des systèmes d’exploitation – Exceptions (appels système, erreurs, interruptions) – Notion de processus (multiprogrammation) [ – gestion de la mémoire (mémoire virtuelle) ] – gestion des entrées/sorties – protection 18 Articulation avec les autres cours? • Pré-requis pour le cours d’Interface Matériel Logiciel : pratiquement aucun. Mais on s’appuiera sur les 2 cours d’informatique que vous suivez en parallèle avec celui-ci : – A3 – Algorithmique et programmation et structures de données I » connaissance d’un langage de haut niveau, style impératif (C, Pascal, …) – A3 – Initiation à l’informatique (unix) » utilisation d’un système d’exploitation – niveau utilisateur «curieux» («conscient») • Le cours d’Interface Matériel Logiciel est un pré-requis pour : – A3 - Architecture des ordinateurs » jeux d’instructions (illustration sur le MIPS) – Un cours de compilation » traduction des langages de haut niveau – A4 - systèmes d’exploitation » mécanismes à la base des systèmes d’exploitation 19 Bibliographie • Hennessy and Patterson, « Computer Architecture & Design : The Hardware/Software Interface», 2nd Ed., (Morgan Kaufman Publishers, 1997) [MIPS - simulateur spim-, Dec Vax 11] (Annexe A fournie) (1 ex. à la BU) 3ème édition sortie en 2005, 4ème édition sortie en 2009 (2 ex à la BU), 5ème édition sortie en 2013 (1 ex à la BU) (le cours est illustré en utilisant comme exemple le jeu d’instructions de l’architecture MIPS-I décrit dans l’annexe A de la 2ème édition) • Bryant and O’Hallaron, «Computer Systems : A programmer ’s perspective», (prentice hall 2003) [INTEL IA32] ☛ 2è édition sortie en 2011 (Pearson) • Andrew Tanenbaum, « Architecture de l’ordinateur», 4ème ed. (Dunod, 2001) [utraSparc II, Sun JVM, Pentium II] (plus de 20 exemplaires à la BU) ➘ Traduction de : Andrew Tanenbaum, «Structured Computer Organization», 4th Ed., (Prentice Hall, 1999) [utraSparc II, Sun JVM, Pentium II] (1 ex. à la BU), 5 ème édition en langue anglaise sortie en 2005 • KIP R. Irvine, « Assembly language for INTEL-Based Computers» 5th Ed. (Pearson, 2007), 6è édition sortie en 2010 • Kane and Heinrich, « MIPS RISC Architecture», (Prentice Hall, 1994) – plus généralement les livres de référence des processeurs 20 Organisation pratique du cours ☞ http://leon.mugwaneza.perso.luminy.univ-amu.fr/iml3-1617.html – 24 heures de cours (12 séances de 2h) – 22 heures de TD (11 séances de 2h, 2 groupes) – 14h de TP (7 séances de 2h, 4 groupes) – Evaluation des étudiants par l’enseignant – 1 examen écrit à la fin du cours (prévu le 25/1/2017 de 8h à 14h) – des points de participation (ajoutés à la note d’examen, y compris à la 2ème session : «sticky points») – passage volontaire au tableau en TD – réponses aux questions «rémunérées» (en cours, TD, TP) – TP rendus qui « marchent » rendus dans les délais – Evaluation du cours par les étudiants – Vous serez contactés par les services de l’école pour remplir un questionnaire sur le web ☞ Faites-le, c’est très utile pour l’année prochaine ! ☞ Donc n’attendez pas ce questionnaire pour signaler des choses qui ne vont pas 21