Cours système UNIX pdf
...
LE système Unics (Uniplexed Information and Computing Service) a été créé aux laboratoires AT&T de Bell, en 1969 par Ken Thompson, et modifié et baptisé par Brian Kernighan [Tan01]. Il a été une version réduite de Multics (Multiplexed Information and Computing Service). Peu après on a changé le nom Unics par Unix, et à partir de ce moment le système Unix a commencé un long chemin de développement technique.
2.1 Bref historique
Le système Unix a connu un véritable succès, lorsqu’il fut récrit en langage C en 1973 par Denis Ritchie et Thompson1 . L’Université de Californie à Berkeley a obtenu une copie de la version 6 du système Unix. AT&T et Berkeley ont séparément apporté de nombreuses modifications et améliorations au système Unix (System V d’AT&T et 4.4BSD de Bekerley). Une vision simplifiée de l’évolution subie par Unix est montrée sur la figure 2.1. Le projet Posix (Portable Operating System UnIX) de normalisation du système Unix a permis de développer un standard qui définit un ensemble de procédures. Tout système Unix conforme à Posix fournit ces procédures ou appels système standards. Ces procédures constituent la bibliothèque standard d’Unix (figure 2.2). Tout logiciel écrit en n’utilisant uniquement les procédures de la norme Posix devrait fonctionner sur tous les systèmes
…
Linux (code source disponible). Elle a été créée par Linus Torvalds en 1991. Par la suite, un grand nombre de programmeurs ont contribué à son développement accéléré. Conçu d’abord pour tourner sur des machines avec le processeur 80x86, Linux a migré à plusieurs autres plate-formes. Le système d’exploitation Linux peut être téléchargé à partir de plusieurs sites, par exemple : linux.org. Dans l’annexe C le lecteur interessé trouvera de plusieurs sites internet où l’on peut télécharger d’autres versiones de Linux
FreeBSD est une autre version gratuite d’Unix. Il est un systeme d’exploitation pour x86 compatibles, DEC Alpha, et architectures PC-98. Il est dérivé de BSD Unix et développé par une grande communauté d’individus
2.2 Caractéristiques
Unix est un système interactif et multi-utilisateurs (multiprogrammé en temps partagé). Plusieurs utilisateurs peuvent disposer, en même temps, de la puissance de calcul du système. Le système Unix se charge de contrôler et de gérer l’usage des ressources en les attribuant, à tour de rôle, aux différents utilisateurs. Il permet la création, la communication et la synchronisation des processus. Unix est un système d’exploitation ouvert, portable et disponible sur différentes plate-formes. Linux est en plus gratuit et on a le droit d’étudier et de modifier le code source.
2.2.1 Structure d’un système Unix/Linux
Un système informatique sous Unix/Linux est constitué de couches de logiciels, comme illustré à la figure 2.3. Le système d’exploitation, appelé noyau ou kernel, gère le matériel et fournit aux programmes une interface d’appels système. Le kernel de BSD est montré à la figure 2.4. Les appels système permettent aux programmes de créer et de gérer des processus et des fichiers. A chaque appel système correspond une procédure de bibliothèque que l’utilisateur peut appeler (bibliothèque standard). Chaque procédure se charge de placer les paramètres de l’appel système correspondant en un endroit prédéfini comme les registres du processeur, et de provoquer une interruption logicielle (instruction TRAP) pour passer du mode utilisateur au mode noyau et activer ainsi le système d’exploitation. La procédure de bibliothèque a pour but de masquer les détails de l’instruction TRAP et de faire apparaître les appels de procédure comme des appels de procédures ordinaires. Par exemple read(f, b, 50) sera utilisé pour lire 50 caractères dans un stockage temporaire ou buffer b, à partir d’un fichier f présentement ouvert. Lorsque le système d’exploitation prend le contrôle suite au TRAP, il vérifie la validité des paramètres et effectue dans ce cas le traitement demandé. A la fin du traitement, il place un code de statut, indiquant si le traitement a réussi ou échoué, dans un registre, puis redonne le contrôle à la procédure de bibliothèque avec retour au mode utilisateur. La procédure de bibliothèque remet, à son tour, le contrôle à l’appelant en lui transmettant le code de statut. Les utilisateurs peuvent développer des programmes et invoquer des appels système, grâce la bibliothèque standard et à un ensemble d’utilitaires (shells, éditeurs, compilateurs, etc.) fournis avec le système Unix/Linux. Par exemple, pour exécuter l’appel système READ, un programme C/C++ peut appeler la procédure de la bibliothèque standard read() qui va effectuer le véritable appel système READ.
Remarque : Les véritables appels système s’exécutent en mode noyau, ce qui assure la protection du système d’exploitation contre les tentatives d’intrusions et les erreurs.
2.3 Début de session
Lorsqu’un utilisateur demande à se connecter, le système l’invite à introduire son nom d’utilisateur (code) et son mot de passe. Si ces données sont correctes, le système ouvre une session de travail et lance l’interpréteur de commandes (processus shell) qui affiche à l’écran, aussitôt après son initialisation, une invitation puis se met en attente d’ordres de l’utilisateur. Dépendamment du shell utilisé, ceci peut être un simple symbole : $ ou bien, l’invitation peut montrer le nom de la machine. Dans notre cas l’une des machines s’appelle leibnitz : leibnitz> Lorsque l’utilisateur introduit une commande, le shell vérifie si elle est correcte, puis crée, si c’est le cas, un processus qui a pour tâche d’exécuter la commande. Par exemple la commande : leibnitz>cp source destination copiera le fichier source dans le fichier destinantion. Le shell attend la terminaison du processus créé avant d’inviter l’utilisateur à introduire une nouvelle commande.
2.3.1 Interpréteurs de commandes
Il existe plusieurs interpréteurs de commandes ou shell populaires pour le système Unix. Parmi eux on trouve :
– Le shell de Bourne : sh
– Le shell de Korn : ksh
– Le C shell : csh
Le shell de Korn englobe celui de Bourne. Bon nombre de commandes sont communes aux trois shell’s.
Le shell bash, écrit par Brian Fox, fait partie du projet GNU, acronyme récursif de GNU’s Not Unix, démarré par Richard Stallman en 19842 . Le projet GNU voulait créer un système complet et compatible Unix mais distribué librement. GNU avait développé plusieurs programmes comme le compilateur gcc, l’éditeur emacs, make, tar, l’interface graphique XWindows. En 1991 le kernel Linux a rejoint le projet et on a appelé le tout GNU/Linux. Le shell bash (acronyme de Bourne-Again SHell) est compatible avec le standard Posix, et compatible aussi avec le shell sh. Il incorpore beaucoup des caractéristiques du Korn shell ksh et le C shell csh.
2.4 Commandes utiles d’Unix/Linux
Dans la table 2.1 nous montrons quelques commandes Posix très utilisés dans Unix/Linux.
man
man [-s section] mot
La commande man donne une aide en ligne. Elle affiche les informations correspondantes au titre donné, figurant dans le manuel standard de Linux.
Ce manuel est composé de 8 sections.
Commande Description
who Afficher la liste des utilisateurs connectés
whoami Afficher l’utilisateur de la session courante
date Afficher la date
ps Afficher la liste des processus de l’utilisateur
kill Stopper un processus
passwd Créer ou changer de mot de passe
pwd Afficher le nom du répertoire de travail
mkdir Créer un répertoire
cd Changer de répertoire de travail
cat Fusionner une liste de fichiers et afficher le résultat
head Afficher le début d’un fichier
grep Afficher les lignes des fichiers référencés qui contiennent une chaîne de caractères donnée
wc Compter le nombre de mots, lignes ou caracteres.
sleep Dormir pendant un certain temps (secondes)
find Rechercher un fichier
ls Afficher le contenu d’un répertoire
cp Copier un fichier dans un autre
ln Ajouter à un fichier existant un autre nom
mv Renommer un fichier
rm Supprimer un fichier
rmdir Supprimer un répertoire
chmod Changer les protections d’un fichier sélectionne la section 1 des commandes, et :
leibnitz> man -s 2 chmod sélectionne la section 2 des appels système. Évidemment si l’on veut comprendre comment man fonctionne, il faut taper :
leibnitz> man man
sort
La commande sort réalise la lecture des lignes provenant du terminal (jusqu’à ce que l’utilisateur tape CRTL-D indiquant la fin de fichier), trie les lignes par ordre alphabétique et affiche le résultat à l’écran.
Exemple 2. Utilisation de sort
leibnitz> sort
Martin 16 HULL
Robert 17 Ottawa
Catherine 15 Montréal
^D
Catherine 15 Montréal
Martin 16 HULL
Robert 17 Ottawa
leibnitz>
Redirection des entrées/sorties
A chaque processus créé (commande ou programme en exécution) sont associées une entrée et deux sorties standards :
– L’entrée standard : le clavier
– La sortie standard : l’écran du terminal
– La sortie erreur standard : l’écran du terminal
Le shell permet de modifier ou faire la redirection des Entrées/Sorties d’un processus.
Redirection de l’entrée standard
On fait la redirection avec l’opérateur < : commande < fichier