19/09/2011 Introduction aux Systèmes d’Exploitation christophe Renaud 1ère année cycle d’ingénieur Version 1.0 du 19/09/2011 Objectifs du cours Comprendre la notion de système d’exploitation Son utilité Ses fonctionnalités Être capable d’utiliser les fonctionnalités de base d’un système Linux Commandes principales Langage de scripts 1 19/09/2011 Plan du cours Introduction Notion de système de gestion de fichier Interpréteur de commandes Introduction Ordinateur = ensemble de dispositifs physiques Processeur Mémoire Carte mère Périphériques Écrans Disques durs Imprimantes … Problème : Comment faire fonctionner (correctement) tous ces dispositifs physiques ? Comment rendre leur utilisation simple à l’utilisateur ? 2 19/09/2011 Définition Système d’exploitation = Ensemble des programmes qui se chargent de tous les problèmes relatifs à l’exploitation des fonctionnalités d’un ordinateur. 2 rôles distincts : Interface entre la machine et l’utilisateur Interface entre la machine et les programmes d’application Notion de machine virtuelle Le système cache toutes les difficultés d’utilisation du matériel L’utilisateur ne voit qu’un vue simplifiée de la machine Schématisation Couche applicative Couche système Navigateur web Calculatrice Interpréteurs de commandes éditeurs Jeu vidéo Interface graphique Système d’exploitation (« noyau ») Langage machine (assembleur) Couche matérielle Micro-programmes Dispositifs physiques 3 19/09/2011 Actuellement Exemples de système d’exploitation Windows Unix Mac/OS Android … Où trouve-t-on les S.E. ? Ordinateurs Téléphones portables Assistant personnels Cartes à puce … Historique (1) 1ère génération : 1940 – 1955 Apparition des premiers ordinateurs Basés sur des tubes à vide, des relais et des connecteurs Apparition du terme « bug » Le programmeur utilise seul toute la machinerie Eniac (1946 - 17468 tubes à vide) Colossus (1943 - 2000 tubes à vide) 4 19/09/2011 Historique (2) 2nde génération : 1955 – 1965 Apparition des transistors Amélioration de la fiabilité Possibilité de commercialisation Systèmes de traitement par lots (« batch ») Le programmeur fournit son programme à un opérateur sur bande magnétique ou sur cartes perforées Les programmes sont regroupés et soumis les uns après les autres par l’opérateur L’opérateur récupère les résultats sur bande ou sur cartes perforées et les distribue aux programmeurs Historique (3) 3ème génération : 1965 – 1980 Apparition des circuits intégrés Réduction du rapport coût/performance Standardisation Systèmes à base de SPOOL (Simultaneous Peripheral Operation On-Line) Les programmes sont stockés sur disque dur au fur et à mesure de leur arrivée Un seul programme traité à la fois Développement de la multiprogrammation Plusieurs programmes traités en même temps Développement de systèmes à temps partagé Les utilisateurs accèdent en même temps à la machine Multics (entièrement écrit en langage C) 5 19/09/2011 Historique (4) 4ème génération : 1980 - ??? Développement des circuits LSI et VLSI Apparition des ordinateurs personnels Développement des systèmes actuels reprenant les grands principes des systèmes utilisés sur les mini-ordinateurs Développement des réseaux locaux et d’internet Développement des systèmes distribués Définitions Multiprogrammation : Plusieurs programmes sont exécutés en même temps sur la machine Objectif : optimiser l’utilisation du processeur Les entrées-sorties (lecture/écriture en mémoire, sur disque, etc. sont beaucoup plus longues à exécuter que les instructions classiques du processeur) Implique un partage des ressources qui doit être géré par le système Temps partagé : Plusieurs utilisateurs utilisent simultanément la machine Connexion depuis leur propre terminal Implique un contrôle des ressources en fonction des utilisateurs 6 19/09/2011 Les classes de S.E. Mono-utilisateur : Un seul utilisateur Généralement pas de notion d’usager ni de mécanisme de protection des données Exemple : MS-DOS, Windows 3.1 Multi-utilisateurs : Plusieurs utilisateurs Multi-tâches Implémentent des mécanismes de protection Exemples : Linux, Mac-OS Systèmes temps-réel Contrôle de processus complexes en milieu industriels Systèmes distribués Gèrent un réseau de machines distantes L’utilisateur de voit qu’une seule machine Plan du cours Introduction Notion de système de gestion de fichier Interpréteur de commandes 7 19/09/2011 Notion de Système de Gestion des Fichiers Tâche la plus visible du SE Organiser les données de l’utilisateur Organiser les données du système Être indépendant du périphérique de stockage Définitions : Fichier : ensemble de données ayant un lien logique, mémorisées sous un nom unique Exemple : les pixels d’une image, les caractères constituant le texte d’un rapport, etc. Dossier (répertoire) : ensemble de fichiers ayant un lien logique entre eux et mémorisés au même endroit Objectif : faciliter la recherche des données par l’utilisateur Remarque : un dossier peut contenir d’autres dossiers Organisation du SGF Représentation la plus commune : arborescence Dossier « racine » Point d’entrée sur le périphérique Un dossier peut contenir simultanément d’autres dossiers et des fichiers 8 19/09/2011 Exemple : arborescence windows C: Program Files Program Data Programs Temp Windows Users Toto Titi Desktop Images Tata Downloads Arborescence LINUX (extrait) / bin boot dev Programmes de démarrage du système Contient les exécutables de diverses commandes utiles et des interpréteurs de commande Dossier racine etc Fichiers de configuration Fichiers correspondants aux périphériques connectés ou connectables au système home usr tmp Fichiers temporaires Effacés au redémarrage du système Fichiers des différents utilisateurs Exécutables Bibliothèques Documentations 9 19/09/2011 L’arborescence étudiant / … … … home … … EILCO toto Répertoire « racine » de l’étudiant toto Format des noms de fichier Dépendent du système d’exploitation Format, Caractères autorisés MS-DOS LINUX 8 caractères . 3 caractères Longueur d’un nom de fichier quelconque Pas d’espace, ni de caractères non alphanumériques Tous les caractères sont autorisés, sauf le / Majuscules et minuscules non différenciées Différentiation des majuscules et des minuscules Extension significative - Applications : .bin, .com, .exe Extension non significative Les fichiers commençant par . sont des fichiers cachés (par défaut) Conseil sous linux (lisibilité) Éviter les espaces et les caractères spéciaux Noms de fichiers en minuscule Noms des dossiers personnels commençant par une majuscule Conserver l’extension pour les formats standards (portabilité) 10 19/09/2011 Notion de droits Principe : Différentier les utilisateurs en fonction de leurs prérogatives Objectifs : Sécuriser les données des utilisateurs Sécuriser les données systèmes Fondamental dans le cas d’un système multi-utilisateurs Sous Windows : Deux types d’utilisateurs : Administrateur : Possède le droit de modifier le système (installation de logiciels par exemple) Non administrateur : Ne peut modifier que ses propre données Gestion des droits sous Linux (1) 3 types d’utilisateurs : User : le propriétaire d’un fichier ou d’un dossier Group : chaque utilisateur appartient à un groupe, créé par l’administrateur du système Other : tous les autres utilisateurs du système 3 types de droits : Lecture (r) : le contenu du fichier peut être lu ou copié ; Le contenu du répertoire peut être visualisé Écriture (w) : Modification autorisée pour le fichier Création ou suppression de fichiers possible dans un dossier Exécution (x) : Le fichier peut être exécuté (c’est une application ou un script) Le dossier peut être accédé (on peut s’y déplacer) 11 19/09/2011 Gestion des droits sous Linux (2) Chaque fichier / dossier dispose donc de 9 droits distincts : user r w group x r w other x r w x - - - Exemple r w - r - - Fichier non exécutable éditable par son propriétaire et consultable uniquement par les membres du groupe Remarque : existence d’un utilisateur « root » qui a tous les droits (administrateur du système) Point de vue utilisateur Manipulation du SGF via : une interface graphique un ensemble de commandes qui dépendent du système d’exploitation L’utilisation de commandes nécessite de pouvoir préciser un chemin dans l’arborescence Syntaxe spécifique au système L’utilisation de commandes nécessite de disposer d’un programme permettant d’interpréter et d’exécuter ces commandes Interpréteur de commandes 12 19/09/2011 Chemins d’accès (linux) Deux types de chemins : Chemins absolus : on part à chaque fois de la racine du SGF Chemins relatifs : on part de l’endroit où l’on se trouve Règle générale : séparer chaque étape (dossier) du chemin par le caractère / / Exemple : accès à essai.c depuis home home Chemin absolu : /home/EILCO/toto/essai.c Chemin relatif : ./EILCO/toto/essai.c EILCO Caractère . = partir du dossier courant toto titi tp essai.c Exemple : accès à essai.c depuis tp dans titi Chemin absolu : /home/EILCO/toto/essai.c Chemin relatif : ../../toto/essai.c Caractère .. = remonter d’un dossier Plan du cours Introduction Notion de système de gestion de fichier Interpréteur de commandes 13 19/09/2011 Interpréteur de commande Programme permettant d’envoyer des instructions au système Utilisation de commandes spécialisées, qui dépendent du système d’exploitation Exemple : afficher le contenu d’un dossier Windows : dir nom_dossier Linux : ls nom_dossier Intérêts : Historiquement : pas d’interface graphique Commandes complexes : interfaces graphiques peu adaptées Efficacité : souvent plus rapide d’utiliser une commande que l’interface graphique Interpréteurs sous Unix/Linux shell Appelés « shell » Plusieurs versions : utilisateur noyau Shell unix les plus courants Nom / commande sh csh signification Bourne shell Bourne again shell bash C shell tcsh Tenex c shell Chaque utilisateur dispose d’un interpréteur de commande Version fixée par l’administrateur système Ici : bash 14 19/09/2011 Lancement Sans interface graphique : À la connexion, l’utilisateur se trouve directement sur son interpréteur de commandes Avec interface graphique : Lancer un terminal « prompt » Nom_utilisateur @ nom_machine : dossier_courant $ Remarque : ~ correspond au dossier racine de l’utilisateur Commandes de base Syntaxe générale : Nom_commande [options] [paramètres] Exemple : afficher le contenu du dossier courant (dossier courant = dossier dans lequel on se trouve) Commande ls renaud@gylfie:~$ ls eia02.png essai.zip hires.pdf Photos presentation.ppt dossier fichier renaud@gylfie:~$ ls -l total 75664 -rwxrwxrwx 1 renaud prof 3906 2011-05-31 18:32 eia02.png -rwxrwxrwx 1 renaud prof 72511695 2010-06-20 18:18 essai.zip -rwxrwxrwx 1 renaud prof 2514741 2006-04-10 16:14 hires.pdf drwx------ 1 renaud prof 392 2011-09-18 20:01 Photos -rwxrwxrwx 1 renaud prof 2444288 2011-03-15 12:58 presentation.ppt droits propriétaire groupe Taille en octets Date et heure de dernière modification 15 19/09/2011 Les pages de manuel Sous linux, chaque commande est documentée dans une page de manuel La commande « man » permet d’afficher la page correspondant à la commande recherchée Syntaxe : man nom_commande Exemple : man ls LS(1) User Commands LS(1) NAME ls - list directory contents SYNOPSIS ls [OPTION]... [FILE]... DESCRIPTION List information about the FILEs (the current directory by default). Sort entries alphabetically if none of -cftuvSUX nor --sort. Mandatory arguments to long options are mandatory for short options too. -a, --all do not ignore entries starting with . ….. Les métacaractères Le « shell » interprète certains caractères comme ayant une définition spéciale : * : une chaîne de caractères quelconques, de longueur quelconque (y compris nulle) ? : 1 caractère quelconque [x-x’] : tout caractère compris entre le caractère x et le caractère x’ [0-9] : 1 chiffre [a-z] : 1 lettre minuscule [a-z,A-Z] : 1 lettre Exemples : ls f* : lister tous les fichiers dont le nom commence par un f ls *.jpg : lister tous les fichiers se terminant par .jpg ls *d* : lister tous les fichiers dont le nom contient la lettre d 16 19/09/2011 Manipulation des fichiers cat : affichage du contenu du fichier dans le terminal cat nom_fichier more : idem, mais page par page more nom_fichier cp : copie d’un fichier dans un autre cp fichier nouveau_fichier mv : Renommage d’un fichier mv nom_fichier nouveau_nom_fichier Déplacement d’un fichier dans un autre dossier mv nom_fichier nom_dossier Manipulation des dossiers mkdir : création d’un dossier (vide) mkdir nom_dossier rmdir : suppression d’un dossier rmdir nom_dossier (le dossier doit être vide) rmdir –R nom_dossier (effacement récursif) cp : copie d’un dossier dans un autre cp nom_dossier1 nom_dossier2 (1er niveau) cp –R nom_dossier1 nom_dossier2 (copie récursive) mv : renommage d’un dossier mv nom_dossier1 nom_dossier2 17 19/09/2011 Gestion des droits (1) La commande chmod permet de modifier les droits des fichiers et dossiers (qui appartiennent à l’utilisateur qui lance la commande) Syntaxe : chmod [options] [mode] fichier(s) Option principale : -R : agit récursivement sur les dossiers présents dans la liste des fichiers fournis en paramètre Mode : Précise le mode qui doit être appliqué au(x) fichier(s) Utilise une notation symbolique ugoa Les droits à affecter s’appliquent sur le champ utilisateur (u), sur le champ groupe (g), sur le champ autre (o) ou sur tous les champs (a). +-= rwx La liste contient les droits qui doivent être modifiés L’opérateur précise si on ajoute le(s) droit(s) qui sui(ven)t (+), si on retire le(s) droit(s) qui sui(ven)t ou si on donne explicitement la valeur des différents droits Gestion des droits (2) user Exemples : group other chmod o=rwx nom_fichier r w x chmod o=r nom_fichier r - - chmod g+rw nom_fichier chmod a-w nom_fichier r - w - - 18 19/09/2011 Gestion des droits (3) Notation octale : Chaque triplet rwx se voit attribué une puissance de 2 user 22 21 group 20 22 21 other 20 22 21 20 Valeurs de 0 à 7 Mise à 1 de la position : le droit est activé Mise à 0 de la position : le droit n’est pas activé On fait la somme des poids binaires pour chaque triplet 1 1 1 1 0 1 1 0 0 22 21 20 22 21 20 22 21 20 7 5 chmod 754 nom_fichier 4 Mécanismes de redirection Sous Unix / linux, toutes les entrées / sorties sont vues comme des fichiers Fichiers, dossiers Périphériques (écrans, clavier, imprimantes, disques, etc.) 3 E/S standard existent au démarrage : Entrée standard : par défaut, le clavier Sortie standard : par défaut l’écran Sortie standard d’erreur : par défaut l’écran Possibilité de rediriger ces E/S via quelques opérateurs : Redirection vers un fichier : > Concaténation vers un fichier : >> Lecture dans un fichier :< Redirection vers une autre commande : | 19 19/09/2011 Mécanismes de redirection (2) Redirection vers un fichier Syntaxe : commande > nom_fichier Les résultats affichés par la commande sont écrits dans le fichier dont le nom est donné Si le fichier existait avant le lancement de la commande, son ancien contenu est effacé ; sinon le fichier est créé Exemple : ls > resls.txt Redirection avec concaténation vers un fichier Syntaxe : commande >> nom_fichier Les résultats affichés par la commande sont écrits à la fin du fichier dont le nom est donné Si le fichier n’existait pas avant le lancement de la commande, il est créé Exemple : ls >> resls.txt Mécanismes de redirection (3) Lecture des entrées dans un fichier Syntaxe : commande < nom_fichier La commande récupère les données dont elle a besoin dans le fichier donné Ne fonctionne que si la commande est susceptible de demander des données à l’utilisateur par l’intermédiaire du clavier … Cf travaux pratiques Redirection vers une autre commande Syntaxe : commande1 | commande2 Toutes les données affichées en sortie par la commande 1 sont envoyées à la commande 2 qui les prend comme entrée Cf travaux pratques 20 19/09/2011 Notion de liens 21