ECOLE NATIONALE DES SCIENCES DE L'INFORMATIQUE
ANNEE UNIVERSITAIRE 2009/10
: Int.Sys et Util de base
: Devoir Surveillé
: 2 heures
: non autorisés
: 10 Avril 2010 : : 6 :
NOM & PRENOM :
CLASSE :
Questions 1— (10 points – 1,5*4+4*1)
1. - Quelles sont les principales activités d’un système d’exploitation relatives à la gestion des processus?
allouer de la mémoire aux processus qui en ont besoin Allouer le microprocesseur aux différents processus qui en ont besoin
récupérer la mémoire utilisé par un processus
2. Quelles sont les principales activités d’un système d’exploitation relatives à la gestion de la mémoire ? répartition de la mémoire disponible entre les différents processus actifs et l’ensemble des utilisateurs présents (notion de sécurité réciproque des tâches), localisation maintien des données pour chaque processus,
maintien de l’intégrité de certains espaces réservés (zones mémoires utilisées pour les entrées/sorties
par exemple),
gestion de la pagination de la mémoire, utilisation de mémoire virtuelle.
3. Dans les langages symboliques (langages d’assemblage), il existe des déclaratives, qui ne sont pas à proprement parler des instructions - elles n'engendrent pas de code binaire exécutable- mais servent plutôt à titre pour les différents utilitaires qui vont traiter le programme source afin de produire un programme objet exécutable". Pour illustrer cette phrase présenter trois directives de votre choix et monter pour chacune d'elles son rôle, sa portée dans la chaîne de production de l'objet (assemblage, édition de liens, chargement, exécution), la forme sous laquelle elle est transmise d'un utilitaire au suivant.
Orig segment …
IMPORT/EXPORT
système : chargement Assemenleur Editeur de liens
4. Expliquer les différentes façons d’écrire une liste de commandes avec le Bourne shell.
Publicité
; exécution séquentielle & exécution asynchrone && exécution de la partie droite conditionnée par un code de retour nul de ce qui précède; de priorité
| tube
plus forte que & et ; || exécution de la suite conditionnée par un code de retour non nul de ce qui précède; priorité plus forte que &&
5. Expliquez, en donnant des exemples adéquats en shell, ce qu’est une redirection d’entrée/sortie standard.
Par défaut un processus lit à partir du standard input et écrit dans le standard output et écrit ses erreurs sur la sortie d’erreur. Pour devier l’entrée/sortie on utilise la redirection :
ls > out.txt
2>erreur
Lister le contenu du répertoire courant dans le fichier out.txt
cat <input.txt >output.txt
Lit à partir de input.txt et écrit dans output.txt
6. Expliquez le rôle d’un tube entre deux commandes. Donnez un exemple d’utilisation de ce tube, puis
son équivalent en n’utilisant que des redirections.
Les tubes sont utilisés pour relier 2 commandes entre elles. La sortie standard de la commande `a gauche du symbole sera utilisée comme entrée standard de la commande de droite.
who|wc –l
who>temp ;wc –l <temp ;rm temp
7. Quelle est la différence entre "Multiprogrammation" et "Multitâches". Quelle est la motivation pour le
développement de ces 2 aspects?
La multiprogrammation est le fait qu’on peut lacer une application alors qu’une autre est en attente. L’un après l’autre
Un système multitaches permet d’exécuter plusieurs applications d’une manière pseudo-parallèle (Partage du microporcesseur sur les différents processus). simultanément
La motivation est l’utilisation optimale des ressources et en particulier du microprocesseur.
8. Expliquez comment sous Bourne shell, il est possible d’enrichir son environnement et comment on peut
transmettre des variables d’environnement entre des appels de shell.
Publicité
En agissant sur les variables prédéfinies (HOME, PATH, PS1, …) et en définissant d’autres variables dont les valeurs peuvent être exporter aux autres processus en utilisant la commande ‘export’.
Exercice 1— (5 points ): L’ensemble des questions qui suivent supposent la séquence suivante d’une session de travail.
bin public oms
wc grep who
$ ls - l /usr drwxr-xr-x root drwxr-xr-x public drwxr-xr-x oms $ pwd /usr/bin $ ls -l -rwxr-xr-x root -rwxr-xr-x root -rwxr-xr-x root $ cd ../public ; ls drwxr-xr-x public drwxr-xr-x pubic $ ls prog getprnt add.c makset.c temps cmd prio.p common temp dodash.c ex.c temp1 fileset.p temp2 $ cat prog/cmd ls *.c rm temp? ls tem* cat x* |wc -l $ cat prog/getprnt
prog doc
temp3aa
trans.c xindex.c xlate.c
ls /usr/bin > temp0 pr temp0 > /dev/lp rm temp0 $ exit
1) Construire l’arborescence du système telle qu’elle apparait dans cette session.
|--usr
|--bin
|--wc |--grep |--who
|--public
|--prog
|--add.c |--cmd |--common |--dodash.c |--ex.c |--fileext.p |--getprnt |--makset.c |--prio.p |--temp |--temp1 |--temp2 |--temp3aa |--temps |--trans.c |--xindex.c |--xlate.c
|--doc
|--oms
2) L’utilisateur « public » peut-il créer un fichier sous le répertoire /usr/bin ? Peut-il modifier le fichier
/usr/bin/grep ?
L’utilisateur public ne peut pas modifier le répertoire /usr/bin . Le propriétaire du répertoire est l’utilisateur root et le groupe de root ainsi que les autres utilisateurs n’ont pas le droit d’écriture sur le répertoire.
L’utilisateur public ne peut pas modifier le fichier /usr/bin/grep . Le propriétaire du fichier est l’utilisateur root et le groupe de root ainsi que les autres utilisateurs n’ont pas le droit d’écriture sur le fichier.
3) Quel est l’effet des commandes suivantes exécutées séquentiellement si on est l’utilisateur « public » et l’on se trouve dans le répertoire prog ?
Publicité
chmod +x cmd
bash cmd & ./cmd
L’utilisateur public reçoit le droit d’exécution de la commande cmd. La commande cmd s’exécute 2 fois en parallèle. Chaque exécution aura pour effet de :
Lister les fichiers add.c, dodash.c, ex.c, makset.c, trans.c, xindex.c, xlate.c Suppression des fichiers temp1, temp2, temps s’ils existent toujours Lister les fichiers temp, temp3aa Afficher le total des nombres de ligne des fichiers xindex.c et xliate.c
3) Peut-on réécrire autrement le script /usr/public/prog/getprnt dont les commandes ne forment qu’un tout
de point de vue sémantique ? Si oui, comment ?
ls /usr/bin | pr > /dev/lp
5) L’utilisateur « oms » veut créer un fichier .profile dans lequel il y a :
- une définition de l’émulation de son terminal en mode xterm, - une description du chemin de recherche aux fichiers exécutables, - une demande d’affichage la date du jour, - une demande de la liste des utilisateurs connectés à la machine. Quelles sont les commandes contenues dans ce fichier ?
TERM=xterm export TERM PATH=/usr/bin:/usr/public/prog export PATH date who
Exercice 2— (5 points): Ecrire un script en shell qui permet de traiter ses arguments d’appel qui sont supposés n’être que des fichiers ordinaires. Le script doit considérer tous les cas d'exceptions (au moins un argument d'appel, les arguments sont des fichiers ordinaires) pour retourner les bons messages d’erreur. Il doit par ailleurs afficher le nombre de lignes que contient chacun des fichiers traités ainsi que le nombre total de lignes trouvé pour l'ensemble de ces fichiers. #! /bin/sh if [ $# -eq 0 ] then
echo "il faut donner au moins un fichier comme paramètre"
else
totalligne=0 for file in $* do
if [ -f $file ] then
nrligne=`wc -l $file | cut -d' ' -f1` totalligne=`expr $totalligne + $nrligne` echo "le fichier $file contient $nrligne ligne(s) "
echo "le paramètre $file n'est pas un fichier ordinaire"
else
fi
done echo "Le total de nombre de ligne est $totalligne"
fi