280 likes | 506 Views
Systèmes d’Exploitation & Machines Virtuelles. Architectures et Conception des logicielles de base pour les systèmes informatiques Par Gilles Grimaud U niversité des S ciences et T echnologies de L ille http://www.lifl.fr/~grimaud/Cours. Format de l’enseignement. 13 x 1h30 de cours
E N D
Systèmes d’Exploitation & Machines Virtuelles Architectures et Conception des logicielles de base pour les systèmes informatiques Par Gilles Grimaud Université des Sciences et Technologies de Lille http://www.lifl.fr/~grimaud/Cours
Format de l’enseignement 13 x 1h30 de cours Et 12 x • 1h30 TD dont 1 CC et • 1h30 TP • 3 sujets de 4,5 heures • 1 évaluation
Objectif du cours • Objectifs Acquérir des notions : • d’architecture des systèmes d’exploitation ; • d’exploitation des matériels informatiques ; • de sécurité fournies par les systèmes ; • du rôle/activité des couches logicielles de base. Maîtriser les principes fondateurs des systèmes d’exploitation en vue de : • Savoir utiliser les outils logiciels fournis ; • Savoir concevoir des composants système.
Rôles et fonctions d’un système d’exploitation Un Système informatique est un ensemble cohérent de matériels et de logiciels destinés à assurer le traitement automatique d’informations. Un tel système : • est relié au monde extérieur à l’aide de circuit d’accès (écran, imprimante, clavier, scanner, capteurs, liaison réseau, …) ; • gère l’information (stockage, désignation, recherche, mise en forme, …) ; • cadre et opère la transformation de l’information adaptés aux rôle du système informatique (exécution de programmes variés selon les besoins, …) ; Les supports fondamentaux de l’informatique sont : les mécanismes de mémoires, les mécanismes de traitement, les mécanismes de communication.
Du circuit électronique au document Web Vers des modèles de plus en plus abstraits… Une montre à quartz est un système informatique : • il stocke la « date » courante ; • Il transforme cette information au cours du temps ; • Il communique le résultat à l’utilisateur du système. Un serveur Web est un système informatique : • Il exploite un système de fichiers, ou une base de données ; • pour produire un document spécifique ; • qu’il retransmet au client qui le lui a demandé. Quartz additionneurs Bascules Bascules traitement mémoire communication Cristaux liquides Bascules Internet Servlet&Php B.D. communication traitement mémoire Fichier
Fonctions d’un système d’exploitation Avec des prétentions variables en fonction des différents besoin, les systèmes d’exploitation assurent fondamentalement trois tâches : • Gérer le matériel ; • Fournir une abstraction du matériel ; • Fiabiliser/sécuriser/administrer l’exécution des traitements.
Petite Histoire des systèmes d’exploitation Les débuts 1ers Systèmes Temps partagé Systèmes graphique micro noyaux Exo noyaux SDS 930 Multics Unix Solaris Linux ST76 MS-DOS MS-Windows McOS- X - MacOS TOS Workbench Chorus MAC X-kernel VM Ware 1945 1955 1965 2003 1975 1985 1995
Quelques paradigmes pour la conception système Liaison Déf. : « relier une ressource (éventuellement matérielle) à un symbole. Permettre la manipulation de la ressource au travers de leur symbole. » Objet : permettre la manipulation symbolique des ressources, leurs partage entre plusieurs applications. Exemple : liaison entre nom de fichier est un flux. Abstraction Déf. : « abstraire, cacher, la complexité d’une ressource (éventuellement matérielle) en proposant une interface logicielle simplifiée » Objet : réduire la complexité apparente du système informatique. Exemple : bibliothèques de bases. Virtualisation (Virtuel : qui pourrait être mais qui n’est pas.) Déf. : « Remplacer l’accès a un matériel réel par l’accès à un matériel qui pourrait être mais qui n’est pas… » Objet : exposer un matériel réel ou imaginaire et néanmoins le gérer. Exemple : Système de mémoire virtuelle, Machines Virtuelle.
clefs pour la programmation des systèmes d’exploitation 1. Programmation en couchePrincipe de programmation par bibliothèques… Appel de routines systèmeUn système d’exploitation peut être représenté au minimum comme un ensemble de bibliothèques logicielles qui fournissent des fonctions plus simple à manipuler que le matériel. Les systèmes d’exploitation peuvent ce résumer à un ensemble de procédures fournies une bonne fois pour toutes pour simplifier l’utilisation du matériel. Exemple : Un système de fichier.
Les systèmes d’exploitation :une clef pour la tour de Babel ? Application PHP Application Interprète PHP Serveur Web Logiciel de base Socket TCP abstraction Routage IP administration Pilote Ethernet gestion Carte réseau Matériel
Le système d’exploitation :Support pour applications Application 2 Application 1 Application 3 Support d’exécution des applications Logiciel Pilote 1 Logiciel Pilote 2 Matériel 1 Matériel 2
Principes de la programmation des systèmes d’exploitation 2. Intégration de l’asynchronisme « La plus part du temps les programmes attendent un événement extérieur saisie d’un mot au clavier, réception d’un message via le réseau, signal de fin d’impression de l’imprimante…» Entrelacer l’exécution des programmesUn système d’exploitation doit donner la main à un autre programme lorsqu’un programme est en attende. Les systèmes d’exploitation peuvent définir un ensemble de procédures de tel sorte qu’une application soit « endormie » la main lorsqu’elle attend quelque choses et qu’elle soit « réveillée » lorsque les données sont reçues. Des tampons d’émission et de réception permettent de temporiser les réveils et les endormissement des applications qui utilisent une ressource particulière. Exemple : Un gestionnaire d’accès à un disque dur.
Principes de la programmation des systèmes d’exploitation 3. Programmation par cadre de travail « On ne vous dit plus quelles procédures le système met à votre disposition, mais quand et pourquoi le système appellera vos procédures pour que votre programme fonctionne !» Appel en RetourUn système d’exploitation peut définir la manière. Les systèmes d’exploitation peuvent définir un ensemble de procédures que le programmeur d’application doit définir et qui sont appelée lorsqu’un événement relatif à une application se produit. Exemple : Un système de gestion de fenêtre graphique.
Le système d’exploitation :Cadre de travail pour applications Cadre de travail Application 1 Application 2 Support d’exécution des applications Pilote 1 Pilote 2 Matériel 1 Matériel 2
le microprocesseur 16 Registres indifférenciés PC = n°15; LR = n°14; (SP = n°13) Les opérations machines Unité Arithmétique & Logique : CCCC 00 I Op(4) S Rn(5) Rd(5) [Imm|Rm]+LSL(12)Op = AND, EOR, SUB, RSB, ADD, ADC, SBC, RSC, TST, TEQ, CMP, CMN, ORR, MOV, BIC, MVNI = 0 Immediate I = 1 Register + ShiftS = 0 don’t set CC I = 1 Set Condition Code Accès mémoire : CCCC 01 IPUBWL Rn(5) Rd(5) [Imm|Rm+LSL](12)I = 0 Immediate I = 1 Register + Shift P = 0 Post P = 1 pre U = 0 down U = 1 up B = 0 Word B = 1 Byte W = 0 no WriteBack W = 1 WriteBack L = 0 LOAD L = 1 STORE Flot de contrôle : CCCC 1010 Offset(24) ou CCCC 0001 0x2FFF1 RnBL offset, … BX Rn Traitement des signaux matériels : déroutement pour les interruptions et exceptions. Rappel sur le fonctionnement d’un processeur (RISC) : • Lire une opération • Décoder • Lire les données entrantes • Exécuter l’opération • Ecrire les données sortantes Clk données 32 ARM7 TDI IT adresses 32 7
Gérer le microprocesseur Charger un programme Copier en mémoire centrale l’ensemble des mots mémoires qui constituent les opérations (machines) qui compose le programme à charger. Reloger les adresses mémoires du programme s’il contient des @ particulières. Exécuter un programme « Brancher » ou « sauter » sur la première instruction du programme chargé. Partager le temps d’exécution entre programmes Utiliser les signaux interruptions basé sur le temps pour donner successivement la main à différents programmes : Signaux d’horloge Prog. n°2 Prog. n°2 Prog. n°1 Prog. n°1 -proc Interruption Interruption Interruption Ordonnanceur Ordonnanceur Ordonnanceur
S’abstraire du microprocesseur Exécuter un programme c’est faire pointer le registre « pointeur de programme » sur la première instruction machine. Au fur et à mesure des cycles d’horloges, le programme s’exécute. Comment un programme écrit en C, en PhP ou en Java fait dans ce contexte pour s’exécuter sur un microprocesseur ? Trois techniques de base pour s’abstraire du langage machine : • les compilateurs : • Convertir le fichier « source » en code « machine » ; • les interpréteurs : • Exécuter un programme « machine » qui décode et exécute le source ; • les machines virtuelles : • Définir un nouveau format de machine (virtuelle), puis compiler vers ce format puis décoder et exécuter ce format.
S’abstraire du microprocesseur :L’exemple d’Unix et du langage C Fichier code Cexample.c Fichier assembleurexample.s Contenu binaire géré int foo(inti); intmain(intargc,char**argv){int i; i = 3 ; i = foo(i) ;}int foo(int i){return i + 1 ;} main STR lr,[sp,#-4]! MOV R0,#3 BL foo MOV R0,#0 LDR lr,[sp],#4 BX lr foo ADD R0,R0,#1 BX lr E5 2D E0 04 E3 A0 00 03 EB FF FF FC E3 A0 00 00 E4 9B E0 04 E1 2F FF 1E E2 80 00 01 E1 2F FF 1E compilation assemblage
Les mémoires On peut qualifier les supports de mémoires disponibles selon trois critères : Type d’accès adressage Vitesse d’accès Registres & Mem interne L / E interne immédiat RAM L / E bus Rapide (1 Mot / 7 ns) ROM bus L 1 Mot / 120 ns CD ROM, DVD L interface 512 octets / 73 s 1 EEPROM, FlashRAM L / E 2 bus 1 Mot / 80 ns M-RAM, Fe-RAM L / E bus Rapide ( 1 Mot / 26 ns) Disques, Disque Dur interface L / E 4096 octets / 520 s 1 Opto-magnétique L / E interface Lent 1 + latence importante2 écriture avec délais important 64 Octets / 5ms
Gérer les mémoires Gérer les registres : Stratégie d’optimisation du code généré (compileur) Gérer les mémoires derrière le bus : Système de cache (matériel) ; Virtualisation de la mémoire (MMU). Gérer les mémoires derrière une interface : Système de cache (logiciel) ; Mapping de la mémoire externe derrière la mémoire virtuelle.
S’abstraire des mémoires Il existe un grand nombre de d’abstractions utilisées pour exploiter la mémoire. Abstraction de l’adressage : Système de fichier, base de données, mémoire objet, … Abstraction des méthodes d’accès : Lecture et écriture avec contrôle d’accès, Gestion du polymorphisme, externalisation, Mémoire fiable, mémoires transactionnelles, Abstraction des méthodes d’allocations : Allocation et déallocation dynamique, déallocation implicite (ramasse miette).
S’abstraire des mémoires : L’exemple des systèmes de fichiers Un disque dur : un ensemble de secteurs de taille fixe (e.g. 512 octets) X 4 octets Magic Number X 32 octets Volume Name X 32 octets Fomater ID Secteur Boot X 32 octets Fomat Date SuperBloc (MBR) X 4 octets FAT Size X 4 octets FAT First Dir Block X 4 octets CheckSum val … Unused space Secteur utilisable … 1110000110001011100011101010111011100… Un secteur utilisable peut être : Un secteur I-node Un secteur data V[1,2,3,4] Type i-node V[5,6,7,8] size … Direct 1 … indirect indirect 2
Type i-node Taille Direct 0 … indirect Id 0 Id 0 Id 0 Id 0 Indirect 2 Id 1 Id 1 Id 1 Id 1 Id 2 Id 2 Id 2 Id 2 … … … … S’abstraire des mémoires : L’exemple des systèmes de fichiers Un disque dur : un ensemble de secteurs de taille fixe (e.g. 512 octets) Files Data Files Data Files Data Files Data Files Data Files Data
Plan (prévisionnel) du cours • Introduction au cours de système Partie I : Système et mémoires 2. Gestionnaire de la mémoire persistante (système de fichiers). 3. Virtualisation de la mémoire de travail (allocateur/ dé allocateur). • Abstraction de la mémoire de travail (gestionnaire de mémoire objet). • Mémoire transactionnelle (un exemple de propriété non fonctionnel). Partie II : Système et microprocesseur 6. Gestion du microprocesseur (Chargement, édition de lien, initialisation, exécution). 7. Abstraction du microprocesseur (Compilateur, Interpréteur, Machine Virtuelle). • Mécanisme de partage de la ressource proc et d’ordonnancement des taches. • Problèmes d’ordonnancement, ordonnancement temps réel et exclusion mutuelle. Partie III : Architecture et sécurité des systèmes d’exploitation • Isolation par adressage/dynamique (MMU) & Isolation par typage/Statique (JVM). • Architecture des systèmes d’exploitation. Partie IV : Exploitation des systèmes Unix 12. Processus, signaux, mémoire partagée. 13. Synchronisation, sémaphore et moniteurs.