Programmation Orient ee Syst'eme Cours 7: Introduction 'a UNIX - IBISC
←
→
Transcription du contenu de la page
Si votre navigateur ne rend pas la page correctement, lisez s'il vous plaît le contenu de la page ci-dessous
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