UN VER VE RSITE MO MOH HAMED V ENSET RABAT
LP GEII S stème d’exploitation
Rapport des TP r éalisé éalisé par : BOU HIRA Adil. BOUR OUHOU Abdelhamid. Encadré par : Mr. JIL AB.
Rapport des TP sur Unix
Présentation Ce document va regrouper les Rapports de tous les TPS que nous avons effectué Durant le 5ème semestre « LP GEII » en Système d’exploitation, pour effectuer ces TPs nous étions demandé de maîtriser quelques base de Unix qu’on va détailler ci-dessous. Ces TPs nous ont permis de découvrir un système d’exploration efficace il s’agit du système Linux.
Déroulement de TP Les Travaux pratique sont effectués sur les Ordinateurs du laboratoire 4. avant de commencer les Tps, nous avons reçus quelque commande de base et des informations sur le system d’exploitation Linux. En utilisant Backtrack (ou Fedrora) nous avons arrivé, a l’aide de différents options qu’ils possèdent, à faire quelque testes et a voir quelque démarche en Unix.
Elaboré par :
BOUKHIRA Adil
BOUROUHOU Abdelhamid
2
Rapport des TP sur Unix
Table des Matières
3
TP1 :
1. 2. 3. 4. 5. 6.
L’environnement Backtrack …………………………………...……………………. 4 Les redirections……………………………………………………………………..... 4 Les tubes………………………………………………………………………….….. 6 Les processus………………………………………………………………….…..…. 6 Les filtres…………………………………………………………………….………. 8 Conclusion TP1…………………………………………………………...…...…...... 8
1. 2. 3. 4.
Introduction ………………………………………………………………..……....9 écrire un programme sous VI…………………………………………..…………10 Test des filtres sous VI…………………………………………………………....10 Conclusion……………………………………………………………………...…13
1. 2. 3. 4. 5. 6. 7.
Vue général sur les processus……………………………………………………14 Quelques notions…………………………………………………………………14 Création d’un processus 1………………………………………………………..15 Création d’un processus 2…………………………………………………..……16 Héritage…………………………………………………………………………..17 Copie de données ………………………………………………………………..19 Conclusion………………………………………………………….……………20
TP2 :
TP3 :
Elaboré par :
BOUKHIRA Adil
BOUROUHOU Abdelhamid
Rapport des TP sur Unix
TP1 Présentation Environnement Backtrack Objectifs : découvrir l’environnement de saisie de commande ; voir quelque instruction de gestion de dossier et des fichiers.
1- Présentation Backtrack / Fedora : •
Backtrack est une distribution Linux, basée sur Ubuntu depuis la version 4. Elle est née de la fusion de Whax et Auditor. Son objectif est de fournir une distribution regroupant l'ensemble des outils nécessaires aux tests de sécurité d'un réseau.
•
Fedora est une distribution Linux basée sur le système d'exploitation GNU/Linux servant de vitrine aux logiciels libres les plus récents. Fedora est libre : tout le monde peut l'utiliser, la modifier et la distribuer. Elle est construite de par le monde par des personnes regroupées autour d'une communauté : le Projet Fedora.
Grace à ces deux types de distribution Linux on peut exécuter des commande Linux d’une manière identique ; le plus importants c’est arriver à exécuter et comprendre les instructions que nous allons aborder si dessous.
2- Les redirections : On exécute le logiciel informatique VMware Workstation qui permet de créer une interface de distribution Linux. Premièrement on doit s’identifier pour que notre système d’exploitation sache à qui s’adresse t-il !
Pour la version Backtrack le login/Password par défaut est : root/toor. Notre première tache consiste à : • •
Elaboré par :
Créer sous tmp un dossier TPGEII. Copier dans TPGEII le contenu de lib.
BOUKHIRA Adil
BOUROUHOU Abdelhamid
4
Rapport des TP sur Unix L’instruction « ls » va nous permettre de voir le contenu du dossier actuelle.
5 Remarque : • •
L’instruction « cd » permet de changer le répertoire. « Mkdir » permet de créer un répertoire.
Dans cette étape nous avons créée un répertoire vide sous le nom TPGEII. Maintenant nous allons remplir par le contenu du dossier lib existant dans le dossier Racine.
La commande « cp /dossier1/*.* /dossier2 » permet de copier le contenu du dossier1 dans le dossier2. Un « ls » permet de voir le contenu du dossier TPGEII après le copiage :
Sur cette figure on a une partie du contenu de TPGEII.
Elaboré par :
BOUKHIRA Adil
BOUROUHOU Abdelhamid
Rapport des TP sur Unix On désigne par Redirections : remplacer les canaux par défaut en redirigeant vers une autre commande ou un fichier. <
redirige l’entrée standard
>
redirige la sortie standard
>>
concatène la sortie standard
2>
redirige la sortie d’erreur
6 &>
redirige la sortie standard et la sortie d’erreur
Exemples: La commande : ls . > liste permet de crée/écrase le fichier liste et y dirige la sortie de « ls ». La commande « cat » permet la visualisation du contenu de fichier liste.
Le fichier liste s’ajout au contenu du dossier TPGEII.
La commande date >> liste permet d’ajouter à la fin du fichier liste la sortie de ‘date‘.
Elaboré par :
BOUKHIRA Adil
BOUROUHOU Abdelhamid
Rapport des TP sur Unix On remarque que la date s’affiche a la fin du fichier liste. La commande wc -l < liste permet l’envoie comme entrée à la commande ‘wc‘ le fichier liste. La commande wc sert à faire un Comptage des mots, lignes ou caractères.
On reçoit après cette instruction le nombre de ligne dans le fichier liste, qui correspond au nombre de fichier dans TPGEII.
3- Les tubes : Tube: « | » {Alt Gr + (6 ou -)} Sert à “connecter 2 commandes” - Exemple : combien de fichiers dans le répertoire courant ?
Sans pipe: ls > temp ; wc -l < temp ; rm temp
•
•
Avec un pipe: ls | wc –l
4- Processus : On définie le processus comme objet dynamique qui représente un programme en cours d’exécution et son contexte. On distingue : – – – –
identification (pid). identification du proc. parent (ppid). Propriétaire. Priorité.
Pour voir les processus en cours: « ps » :
Elaboré par :
Numéro de processus Terminal associé temps CPU utilisé commande exécutée BOUKHIRA Adil
BOUROUHOU Abdelhamid
7
Rapport des TP sur Unix Options de « ps »: « -a »
liste tous les processus actifs :
8
« -u »
format d’affichage long :
« -x »
inclut les processus sans terminal :
Elaboré par :
BOUKHIRA Adil
BOUROUHOU Abdelhamid
Rapport des TP sur Unix
9
Pour tuer un processus: kill -9
.
5- Les filtres : •
Filtres simples :
– affiche le contenu des fichiers passés en Cat
–
paramètres (par défaut, stdin) options -b, -n, -v
– affiche page par page les fichiers passés en paramètres (par défaut, stdin) h pour avoir le détail des commandes
more
– recopie l’entrée std sur la sortie standard et Tee
–
dans le fichier passé en paramètre option -a
Les commandes : (on reprendra cette partie lorsque on introduira l’éditeur VI)
6- conclusion : Dans ce TP nous avons découvert quelque commande de base qui sert à traiter des dossiers et des donné. C’est une sorte de base de Linux qui va nous permettre de se familiariser avec le système Unix.
Elaboré par :
BOUKHIRA Adil
BOUROUHOU Abdelhamid
Rapport des TP sur Unix
TP2 L’éditeur VI Objectifs : éditer un fichier sous l’éditeur VI et effectuer quelque test autour de ça !!
1- introduction : vi : est un éditeur (en mode console) peu convivial certes, mais ultra puissant.
10
Appel de l’éditeur : vi fichier.txt
Modes d’édition : le mode insertion : Les caractères tapés s'insèrent directement dans le texte en cours (I):
Elaboré par :
BOUKHIRA Adil
BOUROUHOU Abdelhamid
Rapport des TP sur Unix
11
le mode commande :
Les caractères tapés sont considérés comme des commandes d'édition de texte (:). Quelque commande :
Elaboré par :
BOUKHIRA Adil
BOUROUHOU Abdelhamid
Rapport des TP sur Unix 2- écrire un programme sous VI : •
On lance l’éditeur VI en utilisant l’instruction « vi fic1.txt ».
•
On tape ensuite « i » afin d’écrire notre texte.
•
•
•
A la fin de la saisie on appui sur « Esc » et on met « :wq » pour sauvegarder et quitter , « :w » afin de sauvegarder seulement ou « :q ! » pour quitter si on a pas besoin du contenu Si on veut « enregistrer le fichier » sous un autre nom on tape « :f fic2.txt » comme ça on aura deux fichier portant le même contenu avec deux nom différent. Pour visualiser le contenu du fichier saisie soit on tape « :v » dans le VI, ou « cat fic1 » si on a quitter le VI.
3- Test des filtres sous VI : Comm :
Nous allons créer deux fichier fic1 et fic2 dont il ya des lignes commun et des lignes différentes
•
Sélection des lignes entre deux fichiers : Syntaxe: comm [-123] fic1 fic2 : • 1 = lignes de fic1 (∉ fic2)
•
Elaboré par :
2 = lignes de fic2 (∉ fic1)
BOUKHIRA Adil
BOUROUHOU Abdelhamid
12
Rapport des TP sur Unix
•
3 = lignes communes
13
Uniq : Détruit les lignes consécutives dupliquées. Options:
-u (affiche les lignes "uniques"). -d (affiche les lignes "dupliquées").
Exemple:
Elaboré par :
uniq -u fic1 :
uniq -d fic1 :
BOUKHIRA Adil
BOUROUHOU Abdelhamid
Rapport des TP sur Unix
diff : Compare deux fichiers. Options:
-b (ignorer les lignes vides).
14
Exemple:
diff fic1 fic2
cut : Sélectionne uniquement certaines colonnes du fichier passé en paramètre. options: f : liste des champs à garder.
Elaboré par :
c : liste des colonnes à garder. d : séparateur de champs.
BOUKHIRA Adil
BOUROUHOU Abdelhamid
Rapport des TP sur Unix tr :
recopie stdin sur stdout en substituant des caractères.
syntaxe: tr [-cds] [s1 [s2]] .
options:
-c (complément de s1). -d efface les car de s1. -s tte séquence dans s1 est substituée par un car. unique dans s2.
Exemple :
tr A-Z a-z < fic1 : Remplacer les caractères minuscule par les majuscule ;
grep recherche, dans le fichier passé en paramètre, les lignes vérifiant une
expression régulière donnée. syntaxe : grep expr_reg [fichier] . Exemple : grep ‘o’ fic1
Cherche dans fic toutes les lignes qui contiennent la lettre « o »
Elaboré par :
BOUKHIRA Adil
BOUROUHOU Abdelhamid
15
Rapport des TP sur Unix grep '^[A-Z]' fic1
cherche dans essai toutes les lignes qui commencent par une majuscule
16
4- Conclusion : Dans ce TP on a introduit l’éditeur VI qui est un éditeur efficace qui permet d’écrire un fichier de plusieurs extensions « .txt » ou « .c » …
Elaboré par :
BOUKHIRA Adil
BOUROUHOU Abdelhamid
Rapport des TP sur Unix
TP3 Gestion des processus Objectifs : Durant ce TP, nous aurons à connaître en programmation C la gestion des processus, alors on a pu aborder: - La création d’un processus. - L’héritage des processus. - Faire la copie de données à partir d’un processus.
I-
Vue général sur les processus :
On peut définir un processus, comme étant un programme en cours d'exécution, plus son contexte d'exécution. Un processus peut être caractérisé par :
-
-
II-
Espace d'adressage privé : Fonctionnement en mode utilisateur ou en mode noyau. Le mécanisme de création des processus est le « fork » : Un processus nouvellement crée est une copie exacte du processus qui l'a créé. o o Organisation arborescente des processus. Un processus est identifié par un numéro « pid ». Un processus interagit avec l'extérieur à l'aide des E/S standards. Un processus peut communiquer avec un ou plusieurs processus à l'aide de tubes de communication. Un processus peut émettre ou recevoir des signaux.
Quelques notions :
1- Identification des processus : int pid = getpid() int ppid = getppid()} Ces deux primitives fournissent respectivement les numéros du processus appelant et celui du processus Père. 2- Identification de propriétaires : int pid = getuid() int ppid = getgid() Fournissent respectivement le numéro du propriétaire, et celui du groupe. 3- Mise en sommeil d’un processus : int sleep(int n) Suspend l'exécution du processus appelant pour une durée de n secondes.
4- Terminaison d’un processus : Un processus se termine lorsqu’il n’a plus d’instructions ou lorsqu’il exécute la fonction : void exit(int statut) 5- Elimination d’un processus :
L’élimination, d’un processus terminé, de la table ne peut se faire que par son père, grâce à la fonction: int wait(int * code_de_sortie) Elaboré par :
BOUKHIRA Adil
BOUROUHOU Abdelhamid
17
Rapport des TP sur Unix III- Création d’un processus 1: Pour la création d’un processus on utilise l’instruction : int fork ()
Cette primitive crée un nouveau processus (appelé fils) qui est une copie exacte du processus appelant (Processus père). La différence est faite par la valeur de retour de « fork() ; », qui est égale à zéro chez le processus fils, et elle est égale au « pid » du processus fils chez le processus père. Durant le TP, nous avons pris un programme comme exemple, et nous avons suivi les étapes suivantes : - Nous avons commencé par créer le fichier « process.c » à l’aide de la commande « vi process.c ». - Après la création du fichier on tape « i » pour écrire sur le fichier, - Après que nous avons terminé, nous avons cliqué « echap » puis la commande « :wq » pour sauvegarder le programme écrit dans « process.c ». - Nous avons compilé le programme en C par la commande « gcc process.c ». - A la fin, et après que le programme s’est bien compilé, nous avons vu le résultat du programme, en utilisant la commande «. / a.out ». 1- Le programme utilisé est le suivant :
2- La compilation du programme:
Puisque nous avons ni « erreurs » ni « warnings » on peut dire que le programme s’est bien compilé, implique pas de fautes sur le programmes. Elaboré par :
BOUKHIRA Adil
BOUROUHOU Abdelhamid
18
Rapport des TP sur Unix 3- Le résultat :
Après la compilation nous avons passé à la vérification de la sortie à l’aide de la commande «. /a.out » 4- Conclusion : On retrouve bien que quand la fonction « fork () » retourne : - Un 0, nous avons le fils. - Sinon nous retrouvons le père.
IV-
19
Création d’un processus 2 :
Afin de vérifier les valeurs retourné par l’instruction « fork () », nous avons modifié le premier programme pour mieux comprendre. 1- Programme utilisé :
2- La compilation : Comme nous pouvons voir, nous avons que deux warrnings qui n’influence pas le programme.
Elaboré par :
BOUKHIRA Adil
BOUROUHOU Abdelhamid
Rapport des TP sur Unix 3- Le résultat : Le résultat retrouvé en sortie est comme suit :
4- Conclusion : Les résultats retrouvés, nous pouvons les interpréter comme suit :
20
On trouve que le résultat et logique, c'est-à-dire qu’il est vrai.
V-
Héritage :
1- Programme utilisé : Afin de bien comprendre la signification de l’héritage au niveau de l’informatique, on s’est proposé d’étudier le programme suivant, et voir si le fils prend les propriétés de son père ou non.
On voit bien sur le programme que nous avons utilisé des instructions nouvelles : - « sleep » qui ordonne au processus de dormir jusqu'à n secondes. - « wait » n’est qu’une simple attente. - « Tms » c’est une structure qui contient 4 types : Elaboré par :
BOUKHIRA Adil
BOUROUHOU Abdelhamid
Rapport des TP sur Unix o
tms_utime: contient le temps CPU écoulé en exécutant les instructions du processus
appelant. o
-
tms_stime: contient le temps CPU passé dans les fonctions système exécutées pour le
compte du processus appelant o tms_cutime: contient la somme des valeurs de tms_utime et tms_cutime pour tous les processus fils terminés ayant été attendus. o tms_cstime: contient la somme des valeurs de tms_stime et tms_cstime pour tous les processus fils terminés ayant été attendus. « Nice » c’est une instruction qui nous permet de définir la priorité d’un processus par rapport à un autre il varie de [-20, 20], dans notre cas c’est « 10 ». 21
2- La compilation :
Après la compilation on peut remarquer que nous avons ni erreurs ni warnings, alors notre programme peut être exécuté sans problème. 3- Le résultat : Le résultat trouvé et représenté comme suit :
4- Conclusion :
Sur le résultat, on constate bien que le fils a hérité de son père les mêmes propriétés sauf qu’au niveau de clics en mode utilisateurs, on trouve une différence, et ça revient au fait que le père est le processus principale du quel le fils dérive.
Elaboré par :
BOUKHIRA Adil
BOUROUHOU Abdelhamid
Rapport des TP sur Unix VI-
Copie de données :
Dans cette partie, on étudiera le copiage de données en exécutant un processus « père-fils », pour ceci on émule le programme ci-dessous. 1- Programme utilisé :
22
2- La compilation :
On remarque que nous avons deux warnings mais le programme ça peut marcher, alors on peut voir la sortie. 3- Le résultat : Encore une fois, et grâce à l’instruction «./a.out », on peut voir la sortie ou bien le résultat du programme que nous avons compiler.
Elaboré par :
BOUKHIRA Adil
BOUROUHOU Abdelhamid
Rapport des TP sur Unix
23 4- Conclusion :
Nous remarquons d’après le résultat que : - Le père et le fils ont les mêmes adresses mémoires. - Les valeurs dans le fils sont différentes de celles dans le père même s’ils portent le même nom des variables « m », et « n ». Alors on peut déduire qu’on peut utiliser un espace mémoire pour faire de différentes copies de données comme si on le fait dans plusieurs places, il suffit de switcher avec le programme du père vers les fils. Un inconvénient, c’est que si le père est tué, on aura plus de données par contre si un fils est mort on peut récupérer nos données.
VII- Conclusion général: Durant le TP, nous avons pu mettre la main sur plusieurs principes de gestion des processus en UNIX par le langage C, comme la création, l’héritage, et le copiage de données, mais il reste encore à savoir comment s’en servir dans de différentes applications et de connaître plus de principes sur UNIX qu’on n’a pas pu aborder au TP. Et ça sera notre projet.
Elaboré par :
BOUKHIRA Adil
BOUROUHOU Abdelhamid