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 2018Cours 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 UNIXQu’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 informatiqueArchitecture 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é
• networkingUne 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
applicatifsLa 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épertoiresLe 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 utilisateursFichier : 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 playLe 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/playLe 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 ~/playFormat 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 verbeCommandes 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 courantCommandes 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 -aCommandes 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épertoireCommandes 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 lsCommandes 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épertoireCommandes 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_destinationCommandes 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/willCommandes 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 | moreLa 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/fileConclusion : 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épertoiresVous pouvez aussi lire