Labo II

publicité
Cours
Sigle du Cours
Session - Groupe
Professeur
Systèmes d’exploitation
INF3723
Automne 2006
01
Assistant
Laboratoire II : Introduction au système d’exploitation UNIX (partie 2)
Objectifs
Général
Le but de ce travail pratique est d’approfondir vos connaissances d’Unix.
Spécifiques



droits des fichiers
compilation en C sous Unix
redirection des fichiers
Manipulations
Partie I :
Tapez la commande qui permet de réaliser ce qui suit :
1.
2.
3.
4.
5.
afficher la liste des utilisateurs connectés au système.
afficher votre code utilisateur.
afficher le nom du répertoire courant.
afficher le contenu du répertoire courant.
créer un répertoire de nom laboratoire, afficher le contenu du répertoire
courant et changer de répertoire pour passer à celui qui vient d’être créé.
6. afficher le nom du répertoire courant puis son contenu.
7. Créer un fichier de nom fich1, le contenu du fichier est :
#include<iostream.h>
#define long 180
int main()
{
char chaine[long];
cin.getline(chaine,long);
cout<<chaine<<endl;
return 0;
}
8. Afficher le code de protection du fichier créé.
9. ajouter la permission en exécution pour le propriétaire et le groupe.
10. changer le nom du fichier en prog1.cpp.
11. compiler le fichier avec la commande g++ -o prog1 prog1.cpp.
UQO - Département d’Informatique et d’Ingénierie INF 3723 : Systèmes d’exploitation
12. exécuter le programme : prog1
13. supprimer la permission en exécution du programme prog1.cpp pour le
groupe.
14. rediriger la sortie standard du programme vers un fichier nommé resultat.
15. afficher le contenu de ce fichier.
Partie 2
Que fait chacune des commandes suivantes :






ls *.cpp
file laboratoire
ls|sort
ls*/*.c
ls|wc –w
cat>>prog1.cpp
//fin du programme
^D
 grep cin prog1.cpp|wc –l
 find . –name titi –print
Partie 3
Écrire la commande qui permet d’afficher:



les 2 premières lignes du fichier prog1.cpp.
les 3 dernières lignes du fichier prog1.cpp.
la 4ème ligne du fichier prog1.cpp.
Rapport
Il n’y a pas de rapport à remettre. Par contre la présence et la participation comptent
pour 10% de la note du cours.
Laboratoire # 2
Systèmes d’exploitation – INF3723
Page - 2 / 5
Annexe A :
Introduction au système Unix (suite)
1. Éditeurs Unix
Plusieurs éditeurs fonctionnent sous Unix : emacs, vi, xedit, pico….
Mais vi est l’éditeur standard sur la majorité des systèmes UNIX.
vi utilise deux modes :
 Mode insertion : utilisé pour entrer du texte.
 Mode de commandes : utilisé pour manipuler le fichier.
Pour créer un fichier nomfich avec vi :
 On lance la commande : vi nomfich
 Appuyer sur la touche i pour passer en mode insertion
 Taper le texte
 Peser sur <Esc> pour passer en mode commandes
 Pour la sauvegarde, appuyer sur les 3 touches :wq
Pour plus d’informations sur cet éditeur, consulter le lien suivant :
http://w3.uqah.uquebec.ca/DOC/unx_vi.html ou
http://www.cs.fsu.edu/general/vimanual.html
2. Fichiers et répertoires
Chaque utilisateur du système Unix est identifié par un numéro unique appelé UID (user
identifier).
Un utilisateur particulier, appelé le superviseur ou l’administrateur avec le UID = 0 possède
des privilèges que les autres utilisateurs n’ont pas. Il peut accéder à tous les fichiers et
effectuer certains appels systèmes réservés.
Le système Unix offre la possibilité de constituer des groupes d’utilisateurs. Chaque groupe a
un numéro unique appelé GID (group identifier).
Les UID et GID d’un utilisateur servent, par exemple, à définir les droits d’accès aux fichiers
de l’utilisateur.
a. Permissions d’accès aux fichiers et aux répertoires
Les fichiers sont regroupés dans des répertoires qui peuvent contenir aussi d’autres
répertoires. Le système de fichiers UNIX représente donc une structure
arborescente.
Chaque fichier a un propriétaire (le créateur du fichier) et un groupe.
Pour contrôler les accès aux fichiers et aux répertoires, neuf (9) bits de protection ou
bits de droits leur sont attribués.
Les 3 premiers bits définissent les droits d’accès pour le propriétaire, les 3 autres pour
le groupe (même département, …) et les 3 derniers bits pour l’ensemble des
utilisateurs.
Chaque groupe de 3 bits contrôle les accès en lecture(r), en écriture(w) et en
exécution(x) pour les fichiers.
En ce qui concerne les catalogues ou répertoires (qui sont aussi des fichiers) :
 r : permet de lire les noms des fichiers
 w : permet d’ajouter et de retirer des fichiers
 x : permet la recherche dans un catalogue.
Exemple :
Laboratoire # 2
Systèmes d’exploitation – INF3723
Page - 3 / 5
-rwxr-xrw=> permet la lecture, l’écriture et l’exécution pour le
propriétaire, la lecture et l’exécution pour le groupe et la lecture et l’écriture
pour les autres.
Remarques :



On peut aussi transcrire l’écriture précédente en octal : 756.
Le premier tiret à gauche des permissions indique que c’est un fichier.
Pour indiquer un répertoire il y aura un d à la place du tiret.
b.Modifications des permissions
On peut donc pour une raison ou une autre, vouloir modifier ces permissions.
L’appel système utilisé est la commande chmod.
Cette commande a plusieurs formes, on peut, soit utiliser les codes r, w, x avec les
codes u (utilisateur), g(groupe), o(autres), ou bien tout simplement utiliser les
les valeurs octales.
Exemple :
chmod go+rw lab1 : ajouterait au groupe et aux autres les permissions de lecture
et d’écriture sur le fichier lab1.
chmod go=u-x lab1 : donnerait les mêmes permissions que l’utilisateur au groupe
et aux autres sauf l’exécution.
chmod 640 lab1 : donne les permissions de lecture et d’écriture à l’utilisateur, de
de lecture au groupe et aucune permission aux autres.
c.Chemin d’accès absolu et relatif
Il y a deux façons de spécifier les noms des fichiers en Unix.
La première est le chemin d’accès absolu qui indique comment accéder au fichier
à partir du répertoire racine. Le répertoire racine est spécifié par /.
Exemple : /labo/inf3723/lab2
La deuxième façon est le chemin d’accès relatif, où le chemin est donné par
rapport au répertoire de travail en cours.
Exemple : si inf3723 est le répertoire en cours, les commandes :
mv lab2 lab3 (ici les chemins sont relatifs)
et
mv /labo/inf3723/lab2 /labo/inf3723/lab3
font exactement la même chose.
3. Les processus
Les seules entités actives d’un système UNIX sont les processus et le seul moyen de créer
des processus est de dupliquer un processus existant. Les appels systèmes d’Unix permettent
la création, l’arrêt des processus, la communication et la synchronisation des processus.
Laboratoire # 2
Systèmes d’exploitation – INF3723
Page - 4 / 5
Mais tout d’abord définissons la structure de l’espace d’adressage du processus. Cet espace
est constitué de 3 segments (texte, données et pile) :



Le segment de texte contient les instructions en langage machine (le code) produit
par le compilateur et l’assembleur.
Le segment de données contient l’espace de stockage des variables du programme. Il
est divisé en deux parties : une pour les données initialisées et une autre pour les
données non initialisées. La taille de cet espace peut augmenter ou diminuer durant
l’exécution du programme.
Le segment de pile contient au départ les variables d’environnement (shell) et la ligne
de commande envoyée au shell pour demander l’exécution du programme. Un
programme peut ainsi connaître ses paramètres.
Les processus en Unix sont créés de façon très simple. L’appel système fork() crée une copie
exacte du processus appelant qui est le processus père. La copie créée est le processus
fils. Le père et le fils ont chacun leur propre image mémoire privée mais partage les fichiers
qui sont ouverts.
L’exécution des 2 programmes père et fils continue après l’appel du fork().
Le fait que les images mémoire, les variables et les registres soient identiques pour le père et
pour le fils pose un problème : comment savoir quel processus est le père et lequel est le
fils? Pour résoudre ce problème, l’appel système fork() retourne 0 dans le fils, une valeur
supérieure à 0 qui est en fait le pid (process identifier) du fils, dans le père et une valeur
inférieure à 0 si l’appel système a échoué.
Un processus fils peut connaître son pid par l’appel système getpid() et il peut connaître celui
de son père par l’appel système getppid().
Cette possibilité d’avoir des arbres de processus est la clé du fonctionnement d’Unix en temps
partagé.
Laboratoire # 2
Systèmes d’exploitation – INF3723
Page - 5 / 5
Téléchargement