Cours 1 1.Introduction Le matériel Introduction au langage C

Slides:



Advertisements
Présentations similaires
Module Systèmes d’exploitation
Advertisements

Premier programme en C :
Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour.
Rappels C.
Introduction au langage C
La machine virtuelle virtuelle utopie et/ou réalité ?
PLAN du COURS Introduction Structure des Systèmes Informatiques
A abstraction b assembleur c nombre binaire d bit e cache f UC g puce h compilateur i famille dordinateurs j contrôle k chemin de données l défaut m dé
Objectifs Identifier l’interface entre le logiciel de plus bas niveau et le matériel Comprendre la problématique de l’architecture du jeu d’instruction.
L ’informatique : la mécanique de l ’abstraction
Le jeu d ’instructions Introduction Un jeu d ’instruction classique
INTRODUCTION.
Les Ateliers de Génie Logiciel
Cours Visual Basic pour Application
Initiation à la programmation et algorithmique
Bases de l’Intelligence Artificielle Distribuée
SECURITE DU SYSTEME D’INFORMATION (SSI)
Principes de la technologie orientée objets
Démarche de résolution de problèmes
Concepts de base : la Classe Pour faire une comparaison simple, une classe serait a priori, une structure C avec des variables et des fonctions.
Réalisée par :Samira RAHALI
Cours 8 5. Appels de fonctions Le matériel Concepts de pile
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
TRANSMISSION DES DONNEES.
Architecture des Ordinateurs
Algorithmique et Programmation
Paradigmes de Programmation
Programmation multimédia 3
Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006.
Structures de données IFT-2000 Abder Alikacem Standard Template library Édition Septembre 2009 Département dinformatique et de génie logiciel.
IGL301 - Spécification et vérification des exgiences 1 Chapitre 1 Introduction (ref : Bray chapitre 1)
IFT 6800 Atelier en Technologies d’information
Module 2 : Préparation de l'analyse des performances du serveur
Cours 3 2. Représentation et traitement des informations Le matériel
Cours 4 3. Construction d’un ordinateur Le matériel Chapitre 3 CSA
8PRO100 Éléments de programmation Les types composés.
Cours 6 3. Construction d’un ordinateur Le matériel Chapitre 5 CSA
Structures de données IFT Abder Alikacem Gestion des exceptions Module 2 Département dinformatique et de génie logiciel Édition Septembre 2009.
Cours 5 3. Construction d’un ordinateur Le matériel
Analyse des Algorithmes
ANALYSE METHODE & OUTILS
Paradigmes des Langages de Programmation
INTRODUCTION.
SIF-1053 Architecture des ordinateurs
ALGORITHMIQUE ET PROGRAMMATION C
Cours de Structure et Technologie des composants d’ordinateurs
TD0 - Rappels. Acquis du programme 1 ère année Analyser et modéliser : un problème, une situation ; Imaginer et concevoir : une solution algorithmique.
Un survol du language C.
Le contenu est basé aux transparents du 7 ème édition de «Software Engineering» de Ian Sommerville«Software Engineering» de Ian Sommerville B.Shishedjiev.
La programmation système
Programmation Système et Réseau
Initiation à la conception des systèmes d'informations
Les types composés Les enregistrements.
S'initier au HTML et aux feuilles de style CSS Cours 5.
CSI 3525, Implémentation des sous-programmes, page 1 Implémentation des sous-programmes L’environnement dans les langages structurés en bloc La structure.
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
1 Copyright © Oracle Corporation, Tous droits réservés. Présentation des sous-programmes PL/SQL.
Cours LCS N°4 Présenté par Mr: LALLALI
INFOR 101 Chapitre 5 Marianne Morris.
Introduction et Généralités sur l’Algorithmique
S'initier au HTML et aux feuilles de style CSS Cours 5.
Sif Démarrage de VC++ n Démarrer -> Tous les programmes -> Microsoft Visual Studio > Microsoft Visual Studio 2005.
Système d’exploitation : Assembleur Semaine 01 Introduction.
Architecture Client/Serveur
IFT209 – Programmation Système
Chapitre 4 La représentation des nombres.
1.1: notions de bases de l’informatique
Java Réalisé par: Mouna POKORA. PLAN: Définition : Historique: Caractéristiques: un langage orienté objet: un langage interprété : un langage portable:
Chapitre 12 Surveillance des ressources et des performances Module S41.
Cours 1 1.Introduction Le matériel Introduction au langage C
Transcription de la présentation:

Cours 1 1.Introduction Le matériel Introduction au langage C 2017-04-01 1.Introduction Qu'est-ce que l’architecture des ordinateurs? Interaction Logiciel/Matériel Le matériel Chapitre 1 de CS et CSA Introduction au langage C http://melem.developpez.com/langagec/initc/ http://docs.linux.cz/programming/c/c_marshall/CE.html sif-1053

Qu'est-ce que l’architecture des ordinateurs? 2017-04-01 sif-1053

Qu'est-ce que l’architecture des ordinateurs? 2017-04-01 sif-1053

Qu'est-ce que l’architecture des ordinateurs? 2017-04-01 sif-1053

Qu'est-ce que l’architecture des ordinateurs? 2017-04-01 sif-1053

Qu'est-ce que l’architecture des ordinateurs? 2017-04-01 sif-1053

Qu'est-ce que l’architecture des ordinateurs? 2017-04-01 sif-1053

Qu'est-ce que l’architecture des ordinateurs? 2017-04-01 sif-1053

Qu'est-ce que l’architecture des ordinateurs? 2017-04-01 sif-1053

Qu'est-ce que l’architecture des ordinateurs? 2017-04-01 sif-1053

Qu'est-ce que l’architecture des ordinateurs? 2017-04-01 Cortex-A9: Pouvant servir dans des appareils qui requièrent peu d’énergie comme les IPhone, Ipad etc… sif-1053

Qu'est-ce que l’architecture des ordinateurs? 2017-04-01 Tablette comme la Galaxy Tab 10.1 de Samsung sif-1053

Qu'est-ce que l’architecture des ordinateurs? 2017-04-01 Tablette comme la Galaxy Tab 10.1 de Samsung (CPU: Dual-Core 1Ghz, 16 Go Mémoire Flash, WiFi, Dual Camera) sif-1053

Qu'est-ce que l’architecture des ordinateurs? 2017-04-01 Téléphone intelligent comme le Galaxy S4 mini: http://www.nextpowerup.com/news/1278/samsung-galaxy-s4-mini-features-exynos-5210.htm sif-1053

Qu'est-ce que l’architecture des ordinateurs? 2017-04-01 Téléphone intelligent comme le Nexus 4 (Google): http://www.google.ca/intl/fr/nexus/4/specs/ sif-1053

Qu'est-ce que l’architecture des ordinateurs? 2017-04-01 Tablette comme la Nexus 10 (Google): http://www.google.com/nexus/10/ sif-1053

Qu'est-ce que l’architecture des ordinateurs? 2017-04-01 Montre intelligente comme la Galaxy Gear (Samsung): http://www.metronews.fr/high-tech/ifa-2013-samsung-galaxy-gear-caracteristiques-prix-date-et-fonctionnalites/mmid!i6oxiW6ftQ4o/ sif-1053

Qu'est-ce que l’architecture des ordinateurs? 2017-04-01 Système d’exploitation Android sif-1053

Qu'est-ce que l’architecture des ordinateurs? 2017-04-01 Système d’exploitation Android sif-1053

Qu'est-ce que l’architecture des ordinateurs? 2017-04-01 sif-1053

Qu'est-ce que l’architecture des ordinateurs? 2017-04-01 Un ordinateur est une machine capable de résoudre des problèmes en appliquant des instructions préalablement définies. La suite des instructions décrivant la façon dont l ’ordinateur doit effectuer un certain travail est appelée programme. ou Un ensemble d ’unités électroniques qui sous le contrôle d ’instructions storées dans sa propre unité de mémoire accepte et store de l ’information, exécute des opérations arithmétiques et logiques et produit les résultats conséquents. sif-1053

Qu'est-ce que l’architecture des ordinateurs? 2017-04-01 sif-1053

Qu'est-ce que l’architecture des ordinateurs? 2017-04-01 sif-1053

Qu'est-ce que l’architecture des ordinateurs? 2017-04-01 Avec le développement de l’INTERNET, la notion d’architecture répartie à fait de plus en plus sa place L’architecture des ordinateurs doit donc incorporer le réseau L’architecture des ordinateurs est alors un ensemble de composantes matérielles et logicielles coopérants et ce souvent en réseau, pour exécuter des programmes sif-1053

Qu'est-ce que l’architecture des ordinateurs?: Cloud computing 2017-04-01 Voir la page WEB de Wikipédia: http://fr.wikipedia.org/wiki/Cloud_computing#Syst.C3.A8mes_de_cloud_computing sif-1053

Interaction Logicielle/Matérielle 2017-04-01 sif-1053

Interaction Logicielle/Matérielle 2017-04-01 sif-1053

Interaction Logicielle/Matérielle 2017-04-01 sif-1053

Logiciel => Langages 2017-04-01 L'ensemble des instructions exécutables directement par un ordinateur forme un langage qui permet aux gens de communiquer avec cet ordinateur. C'est ce qu'on appelle le langage machine. Lorsqu'on conçoit un nouvel ordinateur, il convient de choisir les instructions qui forment le langage machine. Il est donc souhaitable que ces instructions soient les plus simples possibles. Par contre, ces langages sont alors si primitifs qu'il est extrêmement pénible et fastidieux de les utiliser. sif-1053

Comment percevoir la machine? 2017-04-01 Cette simple observation a mené,avec les années, à définir l ’ordinateur comme une « collection structurée d ’abstractions ». Dans ce modèle, chaque niveau d ’abstraction repose sur le niveau précédent. On arrive donc à concevoir la machine comme étant une « structure organisée » (Structured Computer Organization). sif-1053

Les niveaux d’abstraction 2017-04-01 Chaque nouveau niveau est défini par un nouveau jeu d ’instructions plus pratique à utiliser, par l ’humain, que le langage du niveau précédent. Ces nouvelles instructions forme un langage, par exemple L1, de la même façon que l ’ensemble des instructions machine forme le langage L0. N ’oublions pas que l ’ordinateur ne peut exécuter que des programmes écrits dans son langage machine, soit L0. sif-1053

Il y a deux techniques pour réaliser ce passage : 2017-04-01 On va donc devoir nécessairement « passer » du langage L1 ou Ln au langage L0. Il y a deux techniques pour réaliser ce passage : La traduction ou la compilation; l ’interprétation. À quel niveau maintenant doit se situer « l ’engin » responsable de réaliser le passage d ’un niveau au précédent? Réponse, à tous les niveaux! sif-1053

2017-04-01 Comment? En imaginant pour chaque niveau un « ordinateur hypothétique » que l’on appelle une machine virtuelle. Ainsi, chaque niveau est également défini par sa machine virtuelle, M0, M1, Mn. On peut écrire des programmes pour les machines virtuelles comme si elles existaient réellement. Pour que la traduction ou l'interprétation reste assez simple il faut que les langages Ln et Ln-1 ne soient pas trop différents. sif-1053

2017-04-01 sif-1053

Langage et machine virtuelle sont en relation très étroite Langage et machine virtuelle sont en relation très étroite. Toute machine a son langage machine formé de l'ensemble des instructions de base qu'elle peut exécuter. On peut donc dire qu'une machine définit un langage. Mais réciproquement un langage définit une machine et, plus précisément, un langage définit la machine qui peut exécuter tous les programmes écrits en ce langage. Un ordinateur composé de n couches peut donc être vu comme n machines virtuelles distinctes, chaque machine virtuelle ayant son propre langage. Ainsi, nous utilisons indifféremment les termes “machines virtuelles, “couches” et “niveaux”. 2017-04-01 sif-1053

Les machines contemporaines présentent six niveaux. 2017-04-01 Les machines contemporaines présentent six niveaux. Si on résume, on peut dire qu'un ordinateur peut être vu comme une suite de couches, chaque couche englobant toutes les couches précédentes. Une couche représente un certain niveau d'abstraction et comporte divers objets et opérations sur ces objets. sif-1053

2017-04-01 Langage C sif-1053

L0: Couche logique digitale. 2017-04-01 L0: Couche logique digitale. Objets manipulés sont des portes logiques (ET, OU). Combinaisons de portes (registres, circuits du CPU). Données manipulées: niveaux logiques 0, 1, tensions 0-5 V. L1: Couche microarchitecture (microcommande). Comporte des registres et une unité arithmétique et logique (ALU). Données manipulées: Signaux de contrôle provenant du microprogramme (unité de contrôle) sif-1053

L2: Couche ISA (Instruction Set Architecture). 2017-04-01 L2: Couche ISA (Instruction Set Architecture). Données manipulées: Les instructions machines, codes d ’instructions en binaire. L3: Couche OS (couche hybride). Données manipulées: Instructions interprétées par le OS. Instructions interprétées directement par le microprogramme. sif-1053

L4: Couche langage d ’assemblage. 2017-04-01 L4: Couche langage d ’assemblage. Données manipulées: Forme symbolique d ’un des langages L2, L3. Un assembleur traduit le langage assembleur (L4) en codes d ’instruction. L5: Couche langage de haut niveau. Données manipulées: Instructions de haut niveau. Langages C, C++, JAVA etc,. Compilateur traduit le langage de haut niveau en langage L3 ou L4. Interprétation dans certain cas (JAVA) sif-1053

2017-04-01 COUCHES L5 L4 L2 sif-1053

L’abstraction logicielle est aussi importante : mais n’oubliez pas la RÉALITÉ 2017-04-01 Dans la plupart des cours de programmation l’emphase est mise sur l’abstraction Types de données abstraits Notions de pointeur absentes Les abstractions ont des limites Principalement lorsque des erreurs (bugs) surviennent Il faut alors bien comprendre l’implémentation matérielle Bienfaits Permet de devenir de meilleurs programmeurs Facilite la corrections des bugs Facilite le développement de programmes performants Prépare l’étudiant à d’autres cours Système d’exploitation, Réseau, Architecture réparties, Programmation en temps réel sif-1053

RÉALITÉ #1 2017-04-01 Les données de type int sont-elles nécessairement entières, et celles float sont-elles réelles ? Exemples x2 ≥ 0? Float: OUI! Int: arithmétique signée ??? 40000 * 40000 --> 1600000000 50000 * 50000 --> ?? (x + y) + z = x + (y + z)? Unsigned & Signed Int: OUI! Float: (1e20 + -1e20) + 3.14 --> 3.14 1e20 + (-1e20 + 3.14) --> ?? sif-1053

2017-04-01 Nous ne pouvons plus assumer les propriétés habituelles des opérations arithmétiques A cause des représentations internes des données qui sont finies Opérations sur les entiers respectent les propriétés de commutativité, associativité, distributivité Opérations sur les réels doivent respecter un ordre déterminé (précision des résultats) et la valeur des signes sif-1053

Nous devons avoir une connaissance de l’assembleur RÉALITÉ #2 2017-04-01 Nous devons avoir une connaissance de l’assembleur Vous n’aurez certainement pas la chance de coder de grosses applications en assembleur Les compilateurs modernes sont bien meilleurs et sont beaucoup plus patients que nous La connaissance de l’assembleur est importante pour comprendre l’exécution des programmes au niveau de la machine Comprendre le comportment des programmes lors de bugs Pour améliorer la performance des programmes Implémentation de systèmes logiciels intégrés sif-1053

RÉALITÉ #3 Gestion de la mémoire La mémoire n’est pas infinie 2017-04-01 Gestion de la mémoire La mémoire n’est pas infinie Elle doit être allouée et gérée Plusieurs applications sont dominées par leurs besoins de mémoire Les bugs d’accès mémoire sont pernicieux Les effets sont distants dans le temps et l’espace Les performances d’accès à la mémoire ne sont pas uniformes Les accès cache et mémoire virtuelle affectent grandement la performance des programmes L’adaptation des programmes aux caractéristiques de la mémoire peut amener une grande amélioration de la vitesse d’exécution sif-1053

Erreur d’accès mémoire 2017-04-01 Erreur d’accès mémoire (voir le projet ErreurAccesMemoire sur le site ftp du cours) main () { long int a[2]; double d = 3.14; a[2] = 1073741824;/*accès fautif ??????????????*/ printf("d = %.15g\n", d); exit(0); } sif-1053

C et C++ ne protègent pas les accès mémoire 2017-04-01 C et C++ ne protègent pas les accès mémoire Références hors limites dans un tableau Valeur invalide de pointeurs Usage abusif des fonctions malloc/free Peu amener des bugs importants L’effet d’un bug peut se faire sentir ou non dépendant du système et du compilateur Action à distance Un objet corrompu n’est pas nécessairement relié logiquement à celui accédé L’effet d’un bug peut être observé longtemps après avoir été généré Comment faire alors pour éviter ces problèmes? Programmer en Java … en LISP ???? Comprendre les interactions possibles au niveau de la mémoire Utiliser des outils permettant la détection des erreurs de références mémoire sif-1053

RÉALITÉ #4 2017-04-01 La complexité asymptotique n’est pas seulement ce qui compte au niveau de la performance Les facteurs constants sont aussi importants Nous pouvons facilement améliorer la performance d’un programme de l’ordre de 10:1 avec une codification appropriée L’optimisation doit être faite à plusieurs niveaux: algorithme, représentations des données, procédures, les boucles La compréhension de l’architecture favorise l’optimisation des performances Comment les programmes compilent et s’exécutent Comment mesurer la performance des programmes et identifier les goulots d’étranglement Comment améliorer la performance sans amputer la modularité du code et la généralité sif-1053

Les ordinateurs ne font pas qu’exécuter des programmes RÉALITÉ #5 2017-04-01 Les ordinateurs ne font pas qu’exécuter des programmes Ils échangent des données Les I/O sont importantes à la fiabilité des programmes et leur performance Ils communiquent entre eux par réseaux Plusieurs aspects matériels sont à l’avant plan en présence d’un réseau Opérations concurrentes par des processus autonomes Compatibilité entre plate-forme sif-1053

Exemple d’interaction Logicielle/Matérielle 2017-04-01 /* begin hello */ #include <stdio.h> int main() { printf("hello, world\n"); return 0; } /* end hello */ Édition du fichier hello.c voir l’annexe de CSA, Microsoft Visual C++ Developer Studio, p. 567 sif-1053

Exemple d’interaction Logicielle/Matérielle 2017-04-01 sif-1053

Exemple d’interaction Logicielle/Matérielle 2017-04-01 sif-1053

Exemple d’interaction Logicielle/Matérielle 2017-04-01 sif-1053

Exemple d’interaction Logicielle/Matérielle 2017-04-01 sif-1053

Exemple d’interaction Logicielle/Matérielle 2017-04-01 sif-1053