Programmation Orient ee Syst'eme Cours 7: Introduction 'a UNIX - IBISC

La page est créée Melanie Carpentier
 
CONTINUER À LIRE
Programmation Orientée Système
  Cours 7: Introduction à UNIX
          Francesco Belardinelli

               Laboratoire IBISC

             19 février 2018
Cours 7 : Introduction à UNIX

      • Qu’est-ce c’est un système d’exploitation (OS) ?

      • Une brève histoire de UNIX

      • Architecture du système d’exploitation Linux

      • Format général des commandes UNIX
Qu’est-ce c’est un système d’exploitation ?

      • gestionnaire de ressources

      • ensemble de routines qui permettent aux utilisateurs et aux logiciels d’accéder
        aux ressources du système (par exemple, le(s) CPU, la mémoire, les disques, les
        cartes réseau, etc.)

      • on veut accéder à ces ressources d’une manière sûre, efficace et abstraite
          I   un OS garantit un accès sûr à une imprimante en permettant à une seule application
              d’envoyer des données à l’imprimante à un moment donné
          I   un OS permet l’utilisation efficace de la CPU en suspendant les programmes qui sont en
              attente des opérations d’E/S
          I   un OS fournit des abstractions (tels que les fichiers plutôt que des emplacements de
              disque) qui séparent les ingenieurs et les utilisateurs des détails du matériel informatique
Architecture des OS
    Un OS présente aux utilisateurs (et aux logiciels) une interface uniforme, qui abstrait
    des détails du matériel informatique

                  utilisateurs                                              utilisateurs
                 shell ou GUI                                              shell ou GUI
     logiciels utilitaires de système                         logiciels utilitaires de système
       bibliothéque d’appels système                           bibliothéque d’appels système
               noyau (kernel)                                            noyau (kernel)
                       PC                                                     serveur
                    1 CPU                                                     2 CPU
                128 MB RAM                                                512 MB RAM
                  16 GB HD                                             100 GB RAID array

                  Système A                                                Système B
      • le noyau du OS contrôle le matériel informatique.
        Il fournit des fonctions pour la gestion du processeur, de la mémoire, et des dispositifs de bas
        niveau (par exemple, gestion des interruptions des périphériques, partage du processeur entre
        plusieurs programmes, allocation de mémoire pour les logiciels)
      • les services de base du noyau sont accessible à des logiciels de niveau supérieur par le biais
        d’une bibliothèque d’appels système (par exemple, les services pour créer un fichier ou
        commencer l’exécution d’un programme).
        Les logiciels (par exemple, les éditeurs de texte) et les utilitaires de système utilisent ces
        appels système.
      • les logiciels et les utilitaires de système sont lancés en utilisant un shell (interface de
        commande textuelle) ou une interface graphique.
Présentation Générale de UNIX

    UNIX est un OS populaire depuis prèsque 40 ans

    Caractèristiques principales de UNIX
      • multi-utilisateurs
      • multi-tâches
      • stabilité
      • portabilité
      • networking
Une Brève Histoire de UNIX

    Histoire complète de UNIX : http ://www.levenez.com/unix/
  fin ’60 Projet MULTICS (Multiplexed Information and Computing System) de GE, MIT
          et Bell Labs : OS multi-utilisateurs et multi-tâches pour mainframes
      • K. Thompson (Bell Labs) écrit une version simplifiée, appéllée UNICS (Uniplexed
         Information and Computing System)
   1973 K. Thompson et D. Ritchie écrivent le noyau de UNIX en C
   1974 la 5ième version de UNIX est distribuée (gratuitement) aux universités
   1978 le développement de UNIX se divise entre deux branches principales : SYSV
        (System 5) et BSD (Berkeley Software Distribution)
   1991 L. Torvalds développe LINUX, un OS UNIX gratuit et open source pour PC.
      • plusieurs distributions ont apparu (Redhat, Debian, Ubuntu et Fedora), qui
         comprennent un noyau, des utilitaires de système, interfaces graphique et logiciels
         applicatifs
La Gestion des Fichiers

      • Le système de fichiers (filesystem) UNIX et la structure des répertoires

      • Les fichiers et les commandes de manipulation des répertoires
Le Filesystem de UNIX

   UNIX est construit autour de la notion de filesystem (système de fichiers)

   utilisé pour stocker toutes les informations qui constituent l’état du système, y compris

     • le noyau de l’OS même
     • les fichiers exécutables des commandes de l’OS
     • informations de configuration
     • fichiers de travail temporaires
     • données des utilisateurs
Fichier : une notion bien définie

      • Notion non limitée à la signification usuelle de fichier disque.

      • Objet typé : le type définit l’ensemble des opérations qui peuvent être appliquées.

      • En interne, à chaque fichier correspond une entrée (contenant l’ensemble de ses
        attributs) dans une table (disque logique) : cette entrée est appelé i-nœud
        (i-node).
      • Au niveau du système, un fichier est identifié par un couple (table, i-nœud)
Structure d’un i-nœud

    Un i-nœud est un descripteur de fichier, c’est-à-dire :
      • Identification du propriétaire.
      • Type de fichier.
      • Permissions d’accès.
      • Taille en nombre d’octets (pas de sens pour les fichiers spéciaux).
      • Nombre de liens physique.
      • Date de dernière modification.
      • Adresse sur le disque.
      • Identification de la ressource pour les fichiers spéciaux.

    Les i-nœud sont recueillis dans une tables des i-nœuds.
Noms de fichiers

      • Les noms des fichiers comportent souvent une extension : le nom se termine
        par“.” suivi de quelques lettres (par exemple .txt).
      • Sous Windows, l’extension indique au système le type du fichier : texte,
        exécutable, fichier lisible par un logiciel particulier. . .
      • Sous UNIX, l’extension sert principalement à l’utilisateur pour se souvenir du type
        de fichier, rien de plus.

    Examples 1
      • test.txt peut être un fichier exécutable si on le souhaite.
      • test.exe peut être un fichier non exécutable, à savoir un fichier texte.
Le Filesystem de UNIX
   Chaque élément stocké dans un filesystem UNIX appartient à l’un des quatre types :
     1. Fichiers ordinaires (-)
        Peuvent contenir du texte, des données ou des informations de programme.
        Ne peuvent pas contenir d’autres fichiers ou des répertoires.
        Les noms de fichier UNIX peuvent contenir n’importe quel caractère du clavier à
        l’exception des ’/’ et avoir jusqu’à 256 caractères.
     2. Répertoires (d)
        Dossiers qui contiennent des fichiers et des autres répertoires.
     3. Périphériques (b)
        Pour fournir aux applications un accès facile aux périphériques, UNIX leur permet
        de les utilisér de la même façon que les fichiers ordinaires.
        Il existe deux types de périphériques UNIX :
          I   périphériques orientés bloc, qui transfèrent les données en blocs (par exemple, les
              disques durs)
          I   périphériques orientés caractère, qui transfèrent des données sur une base octet par
              octet (par exemple, clavier, imprimante).
     4. Liens (l)
        Pointeur vers un autre fichier.
        Il existe deux types de liens :
          I   un lien dur vers un fichier est impossible à distinguer du fichier même
          I   un lien symbolique fournit un raccourci vers un fichier
     5. Tubes (p) : canaux de communication interne FIFO.
     6. Sockets réseau (s) : canaux de communication bi-directionnels.
Rôle particulier des répertoires

      • Structuration de l’ensemble des fichiers en arborescence.

      • Définition d’un mécanisme de référençage des fichiers indépendant de leur
         localisation dans les disques logiques.
           I   Association réalisée dans les répertoire en chaı̂ne de caractère et i-nœud (lien physique).
           I   Désignation récursive de l’arborescence.
           I   Identification d’une racine absolue : /.

      • Plusieurs disques logiques, chacun correspondant à une arborescence
         indépendante.

      • Les arborescences peuvent être greffée entre elles (commande mount).
Le Filesystem de UNIX

     • Le filesystem UNIX est aménagé comme une arborescence hiérarchique qui est
       ancré à un répertoire spécial : la racine (désigné par une barre oblique ’/’).

     • un répertoire peut avoir plusieurs répertoires enfants, mais un seul répertoire
       parent.
                                                 /

        bin      dev    etc   home        lib   mnt    proc    sbin    tmp         usr         var

              cdrom jane       will     zeb                                  bin         lib

                           work    play
Le Filesystem de UNIX

     • Pour spécifier un emplacement dans la hiérarchie des répertoires, il faut spécifier
       un chemin à travers l’arbre

     • le chemin d’accès à un emplacement peut être défini par un chemin absolu de la
       racine ’/’, ou comme un chemin relatif à partir du répertoire de travail courant

     • pour spécifier un chemin, chaque répertoire de la source à la destination doit être
       inclus dans le chemin

     • les répertoires dans le chemin doivent être séparés par la barre oblique ’/’

     • pour aider à la spécification des chemins relatifs, UNIX fournit le raccourci ’.’
       pour le répertoire courant et ’..’ pour le répertoire parent.

   Example 2
   Le chemin absolu du répertoire play est /home/will/play, tandis que le chemin
   relatif au répertoire de zeb est ../will/play
Le Filesystem de UNIX
   Bien que les sous-répertoires ci-dessous apparaissent dans le même filesystem, ils ne
   doivent pas nécessairement être présents sur le même disque dur

     /                   le répertoire “racine”
     /bin                utilitaires de système de bas niveau
     /dev                fichiers pour accéder aux périphériques matériels
     /etc                fichiers de configuration du système UNIX
     /home ou /homes     répertoires personnels des utilisateurs contenant ses fichiers personnels.
     /lib                bibiliothéques des logiciels (collections d’appels système qui peuvent être
                         incluses dans les programmes par un compilateur)
     /mnt                répertoire de montage des partitions temporaires
     /proc               pseudo-filesystem qui est utilisé comme une interface pour le noyau ;
                         comprend un sous-répertoire pour chaque programme actif (ou processus)
     /sbin               utilitaires de système pour le superuser (pour effectuer des tâches
                         d’administration du système)
     /usr/bin            utilitaires de système de niveau supérieur et logiciels
     /usr/lib            bibliothèques des logiciels de l’utilisateur
     /tmp                espace de stockage des fichiers temporaires
     /var                fichiers qui changent souvent (par example, emails)

     • quand on se connecte à UNIX, le répertoire courant est votre répertoire personnel
     • on peut se référer à son répertoire avec ~ et aux répertoire de d’autres utilisateurs
        avec ~login
     • ~will/play est équivalent à /homes/will/play
     • l’utilisateur will peut consulter le répertoire comme ~/play
Format Général des Commandes UNIX

     • Une ligne de commande UNIX se compose du nom d’une commande UNIX suivi
       par ses “arguments” (options et les noms de fichiers cibles)

     • la syntaxe générale d’une commande UNIX est
       $   commande -options cibles

     • ici commande peut être vu comme un verbe, option comme un adverbe et cibles
       comme les objets directs du verbe
Commandes de Gestion des Fichiers et des Répertoires

      • pwd (print working directory)

      • pwd affiche le chemin absolu vers votre position actuelle dans le filesystem

        $ pwd
          /usr/bin
        implique que /usr/bin est le répertoire de travail courant
Commandes de Gestion des Fichiers et des Répertoires

      • ls (list directory) liste le contenu d’un répertoire
      • si aucun répertoire cible est donné, alors le contenu du répertoire de travail
        courant est affiché
      • si le répertoire de travail courant est /
        $ ls
          bin     dev    home    mnt     share     usr   var
          boot    etc    lib     proc    sbin      tmp   vol
      • ls ne montre pas toutes les entrées dans un répertoire
      • les fichiers et répertoires commençant par un point sont cachés (y compris les
        répertoires ’.’ et ’..’ qui sont toujours présents)
      • les fichiers qui commencent par ’.’ contiennent généralement des informations de
        configuration importante et ne doit pas être changé dans des circonstances
        normales
      • si on veut voir tous les fichiers, ls supporte l’option -a :
        $ ls -a
Commandes de Gestion des Fichiers et des Répertoires
      • pour afficher des informations plus détaillées, on utilise l’option -l (long listing),
        qui peut être combinée avec l’option -a :
        $ ls -a -l
        ou de façon équivalente
        $ ls -al
      • Chaque ligne de la sortie ressemble à ceci :
        -rw-------. 1 fbelard fbelard 116734 Mar                    4 22:41 lec6.pdf

          type            caractère unique qui est soit d (répertoire ), - (fichier ordinaire),
                          l (lien symbolique), b (dispositif orientée bloc) ou c (dispositif orienté caractères)
          autorisations   ensemble de caractères décrivant les droits d’accès.
                          Il y a 9 caractères d’autorisation, décrivant trois types d’accès donné
                          à trois catégories d’utilisateurs.
                          Les trois types d’accès sont read (r), write (w) et execute (x).
                          Les trois catégories d’utilisateurs sont l’utilisateur qui possède le fichier,
                          les utilisateurs du groupe auquel appartient le fichier, et d’autres utilisateurs.
                          Un r, w ou x signifie que l’ autorisation correspondante est présente,
                          un - signifie qu’elle est absente.
          lien            se réfère au nombre de liens pointant vers le fichier/répertoire
          propriétaire   utilisateur qui a créé le fichier ou répertoire
          groupe          ensemble d’utilisateurs qui sont autorisés à accéder au fichier en fonction
                          des droits d’accès du groupe spécifié dans le champ des autorisations.
          taille          longueur d’un fichier ou nombre d’octets utilisés pour stocker la liste de fichiers
                          dans un répertoire
          date            dernière date de modification du fichier ou répertoire
          nom             nom du fichier ou du répertoire
Commandes de Gestion des Fichiers et des Répertoires

      • ls supporte plus d’options

      • pour savoir ce qu’ils sont, tapez :
        $ man ls

      • man est le manuel en ligne de UNIX

      • style assez laconique, souvent pas très serviable

      • on peut utiliser aussi
        $ info ls
Commandes de Gestion des Fichiers et des Répertoires

      • cd (change directory)

        $ cd chemin
      • cd change le répertoire courant à chemin (qui peut être un chemin absolu ou
        relatif)
      • un des chemins relatifs les plus utilisés est ’..’ (c.à.d., le répertoire parent du
        répertoire courant)
      • utilisé sans répertoire cible
        $ cd
        réinitialise le répertoire de travail courant au répertoire home (utile si on est
        perdu)
      • si on change de répertoire et après on souhaite revenir au répertoire d’origine, on
        utilise
        $ cd -
Commandes de Gestion des Fichiers et des Répertoires

      • mkdir (make directory)

        $ mkdir nom_repertoire

      • crée un sous-répertoire appelé nom_repertoire dans le répertoire de travail
        courant

      • on peut créer des sous-répertoires seulement si vous avez la permission d’écriture
        sur ce répertoire
Commandes de Gestion des Fichiers et des Répertoires

      • rmdir (remove directory)

        $ rm nom_repertoire

      • supprime le sous-répertoire nom_repertoire du répertoire de travail courant

      • on ne peut supprimer les sous-répertoires que s’ils sont complètement vides (et il
        faut bien avoir la permission d’écriture)
Commandes de Gestion des Fichiers et des Répertoires

      • cp (copy) est utilisé pour faire des copies de fichiers ou des répertoires entiers
      • pour copier des fichiers on utilise

        $ cp fichier(s)_source destination
        où fichier(s)_source et destination spécifient respectivement la source et la
        destination
      • le comportement de cp dépend si la destination est un fichier ou un répertoire
      • si la destination est un fichier, un seul fichier source est autorisée et cp crée un
        nouveau fichier appelé destination qui a le même contenu que le fichier source
      • si la destination est un répertoire, de nombreux fichiers source peuvent être
        spécifiés, dont chacun sera copié dans le répertoire de destination
      • pour copier des répertoires entiers (y compris leur contenu), on utilise une copie
        récursive :
        $ cp -rd repositoire_source repositoire_destination
Commandes de Gestion des Fichiers et des Répertoires

      • mv (move) est utilisée pour renommer les fichiers/répertoires et/ou les déplacer
        d’un répertoire à un autre
      • exactement une source et une destination doivent être spécifiés :
        $ mv source destination
      • si destination est un répertoire existant, le nouveau nom de source (que ce soit
        un fichier ou un répertoire) sera destination/source
      • si source et destination sont tous les deux des fichiers, alors source est
        renommé destination
      • Attention : si destination est un fichier existant, il sera détruit et remplacé par
        source (on peut utiliser l’option -i si on souhaite être invité à confirmer avant
        que le fichier soit écrasé de cette façon)
Commandes de Gestion des Fichiers et des Répertoires
      • rm (remove)

        $ rm fichier(s)
        supprime les fichiers spécifiés
      • il est presque impossible de récupérer un fichier supprimé, sauf que si on dispose
        d’un backup (il n’y a pas de corbeille !)
      • utilisez cette commande avec précaution !
      • si on souhaite être quiestionné avant que les fichiers soient supprimés, on utilise
        l’option -i
        $ rm -i mon_fichier
        rm: remove ’mon_fichier’?
      • rm peut également être utilisé pour supprimer des répertoires (ainsi que
        l’ensemble de leurs contenus, y compris les sous-répertoires qu’ils contiennent)
      • pour faire ça, on utilise l’option -r
      • pour éviter que rm pose des questions ou donne des erreurs (par exemple, si le
        fichier n’existe pas), on utilise l’option -f (force).
      • un soin extrême doit être pris lors de l’utilisation de cette option :
        un administrateur de système tente de supprimer le répertoire home de
        l’utilisateur will. Comparez
        $ rm -rf /home/will
        avec
        $ rm -rf / home/will
Commandes de Gestion des Fichiers et des Répertoires

      • cat (catenate)

        $ cat fichier(s)
        affiche le contenu de fichier(s) sur l’écran, l’un après l’autre.

      • on peut également l’utiliser pour créer des fichiers par l’entrée du clavier
        $ cat > hello.txt
        hello world!
        [ctrl-d]

        $ ls hello.txt
        hello.txt

        $ cat hello.txt
        hello world!
Commandes de Gestion des Fichiers et des Répertoires

      • more (catenate with pause)

        $ more nom(s)_fichier(s)
        affiche le contenu de nom(s)_fichier(s) sur l’écran, avec une pause à la fin de
        chaque page, et demande à l’utilisateur d’appuyer sur une touche (utile pour les
        fichiers longs)

      • il intègre aussi une recherche (appuyez sur ’/’ et puis tapez une phrase que vous
        souhaitez rechercher)

      • on peut aussi utiliser more pour couper la sortie des commandes qui produisent
        plus d’un écran de sortie
        $ ls -l | more
La Spécification des Noms de Fichiers Multiples

      • des noms de fichiers multiples peuvent être spécifiés à l’aide de caractères
        spéciaux
          ? corresponds à un caractère unique à cette position dans le nom du fichier
          * correspond à zéro ou plusieurs caractères dans le nom du fichier
               * seul correspond à n’importe quel fichier
               *.* correspond à tous les fichiers contenant un ’.’
               des caractères entre crochets ([ et ]) correspond à n’importe quel nom
               de fichier qui a un de ces caractères dans cette position
               une liste de chaı̂nes de caractères séparées par des virgules entre accolades
               ({ et }) sera élargi comme le produit cartésien avec les caractères entourants

    Example 3
      • ??? correspond à tous les noms de fichier de trois caractères
      • ?ell? correspond à des noms de fichiers de cinq caractères avec ell au milieu
      • he* correspond à un nom de fichier commençant par he
      • [m-z]*[a-l] correspond à un nom de fichier qui commence par une lettre etre m
        et z et se termine par une lettre de a et l
      • {/usr,}{/bin,/lib}/file est développé dans /usr/bin/file, /usr/lib/file,
        /bin/file, et /lib/file
Conclusion : Introduction à UNIX

      • Qu’est-ce c’est un système d’exploitation ?

      • Une brève histoire de UNIX

      • L’architecture du système d’exploitation Linux

      • Format général des commandes UNIX

      • Le système de fichiers (filesystem) UNIX et la structure des répertoires

      • Les fichiers et les commandes de manipulation des répertoires
Vous pouvez aussi lire