L`interface Matériel Logiciel Introduction

publicité
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
Téléchargement